Episode ini membuat HAProxy tidak memiliki titik gagal tunggal: setup active/passive dengan VRRP dan Keepalived, integrasi service discovery seperti Consul dan DNS, serta prosedur pengujian failover dan recovery yang terencana.

Satu HAProxy adalah titik gagal. Jika prosesnya mati atau mesinnya rusak, seluruh layanan berhenti. Episode 13 menghilangkan risiko itu dengan membangun klaster HAProxy yang high availability.
Kalian akan menyusun dua node HAProxy active/passive memakai VRRP dan Keepalived, mengintegrasikan service discovery agar backend selalu terbarui, lalu menguji failover dengan prosedur yang aman.
VRRP (Virtual Router Redundancy Protocol) membuat dua node berbagi satu virtual IP (VIP). Node aktif memegang VIP; node pasif siaga. Saat node aktif mati, node pasif mengambil alih VIP dalam hitungan detik, tanpa mengubah alamat yang dipakai klien.
Setup standar:
10.0.0.10.sudo apt install -y keepalivedInstal Keepalived di kedua node, lalu tulis konfigurasinya di /etc/keepalived/keepalived.conf.
vrrp_script chk_haproxy {
script "/usr/bin/killall -0 haproxy"
interval 2
fall 2
rise 2
}
vrrp_instance VI_1 {
state MASTER
interface eth0
virtual_router_id 51
priority 150
advert_int 1
authentication {
auth_type PASS
auth_pass sup3rs3cr3t
}
virtual_ipaddress {
10.0.0.10/24
}
track_script {
chk_haproxy
}
}vrrp_script chk_haproxy memantau proses HAProxy setiap 2 detik. Jika proses mati, Keepalived menurunkan prioritas node sehingga node pasif mengambil VIP.
Node pasif identik, hanya dua nilai yang berbeda:
vrrp_instance VI_1 {
state BACKUP
interface eth0
virtual_router_id 51
priority 100
advert_int 1
virtual_ipaddress {
10.0.0.10/24
}
track_script {
chk_haproxy
}
}state BACKUP dan priority 100 menjadikan node ini pasif: lebih rendah dari node aktif yang berprioritas 150. virtual_router_id harus sama di kedua node.
sudo systemctl start keepalived
ip addr show eth0 | grep 10.0.0.10Di node aktif, sudo systemctl start keepalived diikuti cek ip addr harus menunjukkan VIP 10.0.0.10 terpasang. Di node pasif, VIP tidak muncul sampai failover terjadi.
Di deployment modern, IP backend berubah-ubah. HAProxy bisa mengikuti resolusi DNS secara berkala:
backend api_back
balance roundrobin
server svc api-svc.internal:8080 check resolvers dns_srv \
init-addr libc,none
resolver dns_srv nameserver dns1 10.0.0.53:53 \
resolve_retries 3 timeout retry 1s hold valid 10sDirektif resolvers dns_srv mendefinisikan server DNS yang dipakai untuk me-resolve nama api-svc.internal. hold valid 10s menentukan berapa lama hasil resolusi dianggap valid.
Jika kalian memakai Consul, daftar server bisa dihasilkan lewat templating. Pola umumnya:
consul-template \
-template "/etc/haproxy/consul.tmpl:/etc/haproxy/haproxy.cfg" \
-exec "systemctl reload haproxy"consul-template menulis ulang haproxy.cfg setiap kali daftar service berubah, lalu memicu reload. File template berisi loop yang menghasilkan baris server untuk setiap instance service.
Prosedur pengujian yang harus kalian kuasai:
ip addr show.sudo systemctl stop haproxy.sudo systemctl stop haproxy
ip addr show eth0 | grep 10.0.0.10Di node pasif, ip addr show eth0 | grep 10.0.0.10 harus mulai menampilkan VIP setelah masa advert_int habis. Ini bukti failover bekerja.
Saat node aktif pulih:
journalctl -u keepalived.curl -s -o /dev/null -w "%{http_code}\n" http://10.0.0.10/curl -s -o /dev/null -w "%{http_code}\n" menguji layanan melalui VIP. Selama failover dan setelah recovery, status harus tetap sehat.
Episode 13 membuat HAProxy kehilangan titik gagal tunggal: dua node berbagi VIP dengan Keepalived, backend yang mengikuti service discovery, dan prosedur uji yang membuat failover bukan lagi momen menegangkan.
Inti yang harus dibawa pulang:
track_script membuat Keepalived menilai kesehatan HAProxy.Di episode 14 selanjutnya kita akan membahas security hardening — praktik terbaik ACL dan timeout, pencegahan downgrade protokol dan injeksi, serta konfigurasi default yang aman untuk operasional.