Cara Membuat IP Failover dengan Keepalived di Linux
Cara memasang Keepalived agar IP virtual otomatis pindah ke server cadangan saat server utama mati, lengkap dengan contoh konfigurasi dan pengujian.
Jawaban singkat
Keepalived memakai protokol VRRP untuk memindahkan satu IP virtual dari server utama ke server cadangan dalam hitungan detik saat server utama atau layanannya mati. Syaratnya, kedua server berada di jaringan yang sama dan penyedia mengizinkan IP tambahan berpindah antar server.
Daftar isi
Keepalived membuat satu alamat IP "mengambang" di antara dua server atau lebih. Selama server utama sehat, IP itu menempel di sana. Begitu server utama mati atau layanannya berhenti, server cadangan mengambil alih IP yang sama, sehingga pengguna dan DNS tidak perlu diubah sama sekali.
Kenapa ini penting? Karena banyak gangguan bukan disebabkan aplikasi yang rusak, tapi satu mesin yang tiba-tiba tidak bisa dijangkau. Dengan IP failover, titik lemah itu berkurang tanpa perlu menunggu DNS menyebar.
Bagaimana Keepalived bekerja?
Keepalived menjalankan protokol VRRP (Virtual Router Redundancy Protocol, RFC 5798). Setiap server dalam satu kelompok punya nilai prioritas. Server dengan prioritas tertinggi menjadi MASTER dan memegang IP virtual, yang lain menjadi BACKUP dan terus mendengarkan.
MASTER mengirim pesan iklan VRRP secara berkala. Kalau BACKUP berhenti menerima iklan itu selama beberapa interval, ia menganggap MASTER mati, menaikkan dirinya menjadi MASTER, lalu memasang IP virtual dan mengumumkannya ke jaringan lewat gratuitous ARP.
Keepalived juga bisa memeriksa kesehatan layanan lewat skrip. Jadi failover tidak hanya terjadi saat server padam, tapi juga saat Nginx atau HAProxy di server itu berhenti.
Apa syaratnya di VPS atau cloud?
Bagian ini sering terlewat dan menjadi penyebab utama Keepalived "tidak jalan":
- Kedua server berada di satu segmen jaringan (L2). IP virtual dipindah lewat ARP, jadi kedua server harus satu subnet.
- Penyedia mengizinkan IP tambahan berpindah. Banyak platform cloud memfilter alamat IP yang tidak terdaftar pada antarmuka sebuah VM. Tanyakan ke penyedia apakah mereka mendukung floating IP atau IP tambahan yang boleh dipakai bersama.
- Multicast sering diblokir. VRRP bawaan memakai multicast. Di banyak jaringan virtual, kamu perlu beralih ke mode unicast dengan menulis alamat peer secara eksplisit.
- Firewall membuka protokol 112. VRRP bukan TCP atau UDP, melainkan protokol IP nomor 112.
Konsep besarnya dibahas di apa itu high availability. Artikel ini fokus pada praktiknya.
Langkah pemasangan
Contoh berikut memakai dua server Ubuntu atau Debian: 10.0.0.11 (utama), 10.0.0.12 (cadangan), dan IP virtual 10.0.0.100. Keduanya menjalankan Nginx.
- Pasang paket di kedua server:
sudo apt install keepalived(di AlmaLinux atau Rocky:sudo dnf install keepalived). - Buat skrip pemeriksa layanan, simpan konfigurasi di
/etc/keepalived/keepalived.confpada masing-masing server. - Buka protokol VRRP di firewall kedua server.
- Jalankan
sudo systemctl enable --now keepalived, lalu uji failover.
Konfigurasi server utama:
global_defs {
enable_script_security
script_user root
}
vrrp_script cek_nginx {
script "/usr/bin/pgrep -x nginx"
interval 2
fall 2
rise 2
}
vrrp_instance VI_WEB {
state MASTER
interface eth0
virtual_router_id 51
priority 150
advert_int 1
unicast_src_ip 10.0.0.11
unicast_peer {
10.0.0.12
}
authentication {
auth_type PASS
auth_pass Rahasia1
}
virtual_ipaddress {
10.0.0.100/24
}
track_script {
cek_nginx
}
}
Di server cadangan, salin file yang sama lalu ubah empat hal: state BACKUP, priority 100, unicast_src_ip 10.0.0.12, dan peer menjadi 10.0.0.11. Nilai virtual_router_id dan auth_pass harus sama di kedua server. Cek juga nama antarmuka dengan ip a, karena tidak selalu eth0.
auth_pass hanya membaca 8 karakter pertama dan dikirim tanpa enkripsi, jadi anggap ini penanda kelompok, bukan pengaman. Pengamanan sesungguhnya ada di firewall.
Untuk membuka VRRP di UFW, tambahkan aturan yang mengizinkan protokol vrrp dari IP peer, misalnya lewat /etc/ufw/before.rules. Di firewalld bisa dengan firewall-cmd --permanent --add-rich-rule='rule protocol value="vrrp" accept' lalu firewall-cmd --reload. Panduan dasarnya ada di cara setting UFW firewall di Ubuntu 24.04.
Bagaimana menguji failover dengan aman?
Lakukan di luar jam sibuk:
- Di server utama, jalankan
ip a show eth0. IP10.0.0.100harus tampil di sana. - Dari mesin ketiga, jalankan
ping 10.0.0.100dan biarkan berjalan. - Hentikan Nginx di server utama:
sudo systemctl stop nginx. Dalam beberapa detik, IP virtual pindah ke server cadangan. Ping mungkin putus sebentar lalu tersambung lagi. - Pantau proses perpindahan dengan
journalctl -u keepalived -fdi kedua server. Kamu akan melihat transisi ke status MASTER atau BACKUP. - Nyalakan kembali Nginx. Karena prioritas server utama lebih tinggi, IP akan kembali ke sana.
Kalau IP justru tampil di kedua server sekaligus (kondisi split brain), biasanya paket VRRP tidak saling sampai. Periksa firewall, mode unicast, dan nilai virtual_router_id.
Perlukah IP kembali otomatis ke server utama?
Perilaku bawaan di atas disebut preempt: server berprioritas tinggi merebut kembali IP saat pulih. Ini praktis, tapi bisa menyebabkan dua kali gangguan singkat. Kalau tidak diinginkan, pasang state BACKUP di kedua server dan tambahkan nopreempt di instance. IP akan tetap di server cadangan sampai kamu memindahkannya secara sengaja.
| Pilihan | Perilaku | Cocok untuk |
|---|---|---|
| Preempt (bawaan) | IP kembali ke server utama begitu sehat | Server utama jelas lebih kuat atau lebih lengkap |
nopreempt | IP tetap di server yang sedang memegang | Kedua server setara, ingin menghindari perpindahan ganda |
| Mode unicast | Iklan VRRP dikirim langsung ke peer | Jaringan cloud yang memblokir multicast |
| Mode multicast (bawaan) | Iklan dikirim ke grup multicast | Jaringan fisik atau LAN biasa |
Apa yang tidak ditangani Keepalived?
Keepalived hanya memindahkan IP. Data di kedua server tetap harus sinkron dengan cara lain. File website bisa disalin dengan rsync atau dibangun dari repository yang sama, sedangkan database perlu replikasi. Untuk MySQL, lihat replikasi database MySQL.
Keepalived juga bukan pembagi beban. Ia sering dipasangkan dengan HAProxy: dua server HAProxy berbagi satu IP virtual, sedangkan HAProxy yang membagi lalu lintas ke server aplikasi di belakangnya.
Pertanyaan yang sering diajukan
Berapa lama waktu perpindahan IP?
Bergantung pada advert_int dan jumlah iklan yang terlewat. Dengan advert_int 1 detik, perpindahan umumnya terjadi dalam beberapa detik.
Bisakah Keepalived dipakai antar data center berbeda?
Secara umum tidak, karena IP virtual dipindah lewat ARP di satu segmen jaringan. Untuk failover antar lokasi, pendekatan DNS failover atau anycast lebih cocok.
Apakah perlu alamat IP tambahan?
Ya. IP virtual adalah alamat terpisah dari IP utama masing-masing server, bisa publik atau privat sesuai kebutuhan, dan penyedia harus mengizinkannya dipakai bergantian oleh kedua server.


