HAProxy dan Keepalived: Tutorial High Availability Web Server dengan Virtual IP di Linux
Bayangkan sebuah website perusahaan, portal akademik, aplikasi sekolah, atau sistem informasi yang harus tersedia selama 24 jam. Pengguna mengakses aplikasi tersebut untuk menjalankan pekerjaan penting. Namun, ketika server web mengalami kerusakan, layanan langsung tidak dapat diakses.
Situasi ini dapat menyebabkan terganggunya aktivitas operasional, menurunnya kepercayaan pengguna, dan hilangnya produktivitas. Pada lingkungan produksi, mengandalkan satu server web tanpa mekanisme redundansi merupakan risiko yang perlu diperhitungkan.
Salah satu solusi untuk mengatasi masalah tersebut adalah membangun arsitektur High Availability (HA) menggunakan HAProxy dan Keepalived.
HAProxy berfungsi sebagai load balancer dan reverse proxy yang mendistribusikan permintaan pengguna ke beberapa server backend. Sementara itu, Keepalived mengelola Virtual IP (VIP) dan mekanisme failover agar alamat layanan dapat berpindah ke node cadangan ketika node utama mengalami kegagalan.
Kombinasi keduanya memungkinkan administrator sistem membangun infrastruktur web yang lebih tangguh tanpa harus langsung menggunakan platform load balancing komersial yang kompleks.
Dalam tutorial ini, kita akan membahas konsep HAProxy dan Keepalived, desain topologi jaringan, konfigurasi IP address, instalasi pada Debian 13 atau Ubuntu Server, pengujian failover, serta praktik terbaik untuk lingkungan produksi.
1. Mengenal HAProxy dan Keepalived
Apa itu HAProxy?
HAProxy merupakan perangkat lunak open-source yang berfungsi sebagai load balancer dan proxy untuk layanan TCP maupun HTTP.
HAProxy dapat menerima permintaan dari pengguna, meneruskannya ke server backend, memantau kesehatan server, serta mendistribusikan beban berdasarkan algoritma tertentu.
Beberapa fitur penting HAProxy meliputi:
- HTTP reverse proxy untuk aplikasi web.
- TCP load balancing untuk berbagai layanan jaringan.
- Health check terhadap server backend.
- Algoritma distribusi beban seperti round robin dan least connections.
- TLS termination sesuai kebutuhan arsitektur.
- Statistik dan pemantauan koneksi.
- Dukungan ACL untuk aturan perutean yang lebih kompleks.
Contohnya, ketika tiga server web tersedia, HAProxy dapat mendistribusikan permintaan pengguna ke ketiga server tersebut. Jika satu server backend tidak sehat dan pemeriksaan kesehatan dikonfigurasi dengan benar, HAProxy dapat berhenti mengirimkan permintaan kepadanya.
Namun, HAProxy sendiri tidak otomatis menyediakan redundansi apabila hanya dijalankan pada satu mesin. Jika mesin tersebut mati, pengguna tetap kehilangan akses ke alamat layanan yang dikelolanya.
Di sinilah Keepalived berperan.
Apa itu Keepalived?
Keepalived merupakan perangkat lunak Linux yang mendukung pengelolaan ketersediaan layanan menggunakan protokol VRRP (Virtual Router Redundancy Protocol).
Dalam arsitektur HAProxy, Keepalived umumnya digunakan untuk mengelola Virtual IP yang dapat berpindah antara dua atau lebih node load balancer.
Misalnya, dua server memiliki alamat berikut:
- HAProxy-1: 192.168.10.11
- HAProxy-2: 192.168.10.12
- Virtual IP: 192.168.10.10
Pengguna hanya mengakses alamat 192.168.10.10. Dalam kondisi normal, VIP aktif pada HAProxy-1. Apabila HAProxy-1 mengalami kegagalan dan HAProxy-2 masih berfungsi, Keepalived dapat memindahkan VIP ke HAProxy-2.
Pengguna tidak perlu mengubah alamat tujuan akses karena alamat layanan tetap sama.
Mengapa HAProxy dan Keepalived perlu digabungkan?
Keduanya memiliki fungsi yang berbeda dan saling melengkapi.
HAProxy menangani distribusi permintaan dan pemeriksaan kesehatan backend. Keepalived menangani ketersediaan alamat layanan pada lapisan load balancer.
Analogi sederhananya, HAProxy merupakan petugas yang mengatur antrean pengunjung menuju beberapa loket. Keepalived memastikan pintu masuk utama tetap tersedia ketika petugas atau lokasi utama mengalami gangguan.
| Komponen | Fungsi utama |
|---|---|
| HAProxy | Reverse proxy dan load balancing |
| Keepalived | Pengelolaan VIP dan failover menggunakan VRRP |
| Web Server 1 | Menyediakan aplikasi web |
| Web Server 2 | Menyediakan replika atau bagian layanan web |
| Virtual IP | Alamat layanan yang digunakan klien |
Penting dipahami bahwa HAProxy dan Keepalived tidak menggantikan kebutuhan redundansi aplikasi, database, penyimpanan, maupun jaringan. Seluruh komponen yang menjadi ketergantungan layanan juga perlu dirancang agar tidak menjadi single point of failure.
2. Memahami Konsep High Availability
High Availability adalah pendekatan desain infrastruktur yang bertujuan menjaga layanan tetap tersedia meskipun terjadi kegagalan pada sebagian komponennya.
Dalam arsitektur web, beberapa jenis kegagalan yang perlu diantisipasi meliputi:
- Proses HAProxy berhenti.
- Sistem operasi load balancer mengalami kerusakan.
- Server web backend tidak dapat diakses.
- Antarmuka jaringan mengalami kegagalan.
- Database atau layanan pendukung tidak tersedia.
- Jaringan antarserver mengalami gangguan.
Tidak semua kegagalan tersebut diselesaikan dengan cara yang sama.
HAProxy dapat mendeteksi backend yang tidak sehat jika pemeriksaan kesehatan sesuai dengan kondisi aplikasi. Keepalived dapat mengalihkan VIP ketika kondisi node atau layanan lokal yang dipantau memenuhi aturan failover.
Akan tetapi, VIP yang berpindah tidak otomatis memperbaiki database yang mati, menyinkronkan file aplikasi, atau mempertahankan sesi pengguna.
Karena itu, keberhasilan implementasi HA harus dinilai berdasarkan ketersediaan layanan secara menyeluruh, bukan sekadar status proses yang aktif.
3. Arsitektur HAProxy dan Keepalived
Arsitektur yang akan dibangun menggunakan dua node load balancer dan dua server web backend.
Topologi jaringan
CLIENT
|
|
Virtual IP: 192.168.10.10
|
+-------+-------+
| |
+---------+ +---------+
| HAProxy1|<--->| HAProxy2|
| MASTER | VRRP| BACKUP |
| .10.11 | | .10.12 |
+----+----+ +----+----+
| |
+-------+-------+
|
BACKEND NETWORK
|
+--------+--------+
| |
+-----------+ +-----------+
| Web Server| | Web Server|
| 1 | | 2 |
| .10.21 | | .10.22 |
+-----------+ +-----------+
Diagram ini merupakan gambaran logis. Dalam implementasi nyata, koneksi VRRP, jaringan klien, dan jaringan backend dapat dipisahkan sesuai kebutuhan.
Tabel IP address
Contoh berikut menggunakan satu subnet untuk menyederhanakan praktikum.
| Perangkat | IP address | Fungsi |
|---|---|---|
| Client | 192.168.10.100 | Pengguna layanan |
| HAProxy-1 | 192.168.10.11 | Load balancer utama |
| HAProxy-2 | 192.168.10.12 | Load balancer cadangan |
| Virtual IP | 192.168.10.10 | Alamat layanan |
| Web Server 1 | 192.168.10.21 | Backend pertama |
| Web Server 2 | 192.168.10.22 | Backend kedua |
Subnet yang digunakan adalah 192.168.10.0/24.
Pastikan seluruh alamat tersebut belum digunakan oleh perangkat lain dan berada dalam domain jaringan Layer 2 yang sesuai untuk VRRP. Jika infrastruktur menggunakan VLAN berbeda, routing, atau jaringan cloud, desain VIP harus disesuaikan dengan kemampuan jaringan yang tersedia.
Alur kerja sistem
Ketika pengguna membuka http://192.168.10.10, permintaan akan mencapai node yang saat itu memiliki VIP.
HAProxy pada node aktif menerima permintaan tersebut dan memilih server backend yang sehat. Server backend memproses permintaan dan mengembalikan respons melalui HAProxy kepada pengguna.
Jika node utama gagal, Keepalived pada node cadangan mendeteksi kondisi tersebut berdasarkan konfigurasi VRRP dan health check lokal. Setelah proses pemilihan master, VIP berpindah ke node cadangan. Permintaan baru kemudian dapat dilayani oleh HAProxy-2.
Waktu pemulihan dipengaruhi oleh interval pemeriksaan, prioritas VRRP, kondisi jaringan, konfigurasi tracking, serta waktu klien mencoba kembali koneksi. Karena itu, failover tidak boleh diasumsikan selalu berlangsung seketika.
4. Persiapan Sebelum Instalasi
Sebelum memulai konfigurasi, siapkan empat server Linux atau empat virtual machine.
Spesifikasi laboratorium yang disarankan:
- Sistem operasi Debian 13 atau Ubuntu Server yang didukung.
- Minimal 1 vCPU dan RAM 1 GB per VM untuk praktikum sederhana.
- Alamat IP statis.
- Konektivitas antarnode.
- Hak akses root atau sudo.
- Akses repositori paket.
- Port TCP 80 untuk HTTP.
- Akses protokol VRRP pada jaringan antarload balancer.
Untuk lingkungan produksi, spesifikasi harus disesuaikan dengan jumlah koneksi, kebutuhan TLS, ukuran respons, algoritma load balancing, dan beban aplikasi.
Pastikan pula kedua load balancer dapat saling berkomunikasi menggunakan protokol IP 112 untuk VRRP. Protokol ini bukan port TCP atau UDP 112.
Apabila firewall memblokir paket VRRP, Keepalived dapat gagal melakukan pertukaran informasi antaranggota. Akibatnya, VIP mungkin tidak berpindah dengan benar atau kedua node berpotensi menganggap dirinya sebagai master.
5. Instalasi Web Server Backend
Kita akan menggunakan Nginx sebagai backend agar perbedaan respons setiap server mudah dikenali saat pengujian.
Langkah 1: Instal Nginx pada Web Server 1
Jalankan perintah berikut pada server 192.168.10.21:
sudo apt update
sudo apt install nginx -y
Buat halaman pengujian:
echo "<h1>Web Server 1</h1>" | \
sudo tee /var/www/html/index.html
Aktifkan layanan:
sudo systemctl enable --now nginx
sudo systemctl status nginx
Uji dari server tersebut:
curl http://127.0.0.1
Langkah 2: Instal Nginx pada Web Server 2
Jalankan perintah yang sama pada server 192.168.10.22:
sudo apt update
sudo apt install nginx -y
Buat halaman berbeda:
echo "<h1>Web Server 2</h1>" | \
sudo tee /var/www/html/index.html
Aktifkan layanan:
sudo systemctl enable --now nginx
sudo systemctl status nginx
Langkah 3: Uji konektivitas backend
Dari HAProxy-1 dan HAProxy-2, jalankan:
curl -i http://192.168.10.21
curl -i http://192.168.10.22
Kedua perintah harus menghasilkan respons HTTP yang valid.
Jika gagal, periksa alamat IP, routing, firewall, status Nginx, dan konfigurasi jaringan sebelum melanjutkan.
6. Instalasi HAProxy pada Dua Node
Lakukan langkah berikut pada HAProxy-1 dan HAProxy-2.
Langkah 1: Instal paket
sudo apt update
sudo apt install haproxy -y
Periksa versi:
haproxy -v
Langkah 2: Cadangkan konfigurasi
Sebelum mengubah konfigurasi:
sudo cp /etc/haproxy/haproxy.cfg \
/etc/haproxy/haproxy.cfg.bak
Langkah ini memungkinkan administrator mengembalikan konfigurasi sebelumnya jika terjadi kesalahan.
Langkah 3: Konfigurasi frontend dan backend
Edit file:
sudo nano /etc/haproxy/haproxy.cfg
Gunakan konfigurasi berikut sebagai contoh laboratorium:
global
log /dev/log local0
log /dev/log local1 notice
daemon
maxconn 2000
defaults
log global
mode http
option httplog
option dontlognull
timeout connect 5s
timeout client 30s
timeout server 30s
frontend web_frontend
bind 0.0.0.0:80
default_backend web_backend
backend web_backend
balance roundrobin
option httpchk GET /
http-check expect status 200
server web1 192.168.10.21:80 check
server web2 192.168.10.22:80 check
Penjelasan konfigurasi:
globalmenentukan pengaturan global HAProxy.defaultsmenentukan pengaturan yang digunakan oleh frontend dan backend.mode httpmengaktifkan pemrosesan HTTP.timeout connectmembatasi waktu pembentukan koneksi ke backend.timeout clientdantimeout servermengatur batas waktu komunikasi.frontend web_frontendmenerima permintaan HTTP pada port 80.default_backend web_backendmengarahkan permintaan ke backend.balance roundrobinmendistribusikan permintaan secara bergiliran.option httpchk GET /meminta HAProxy memeriksa endpoint HTTP.http-check expect status 200mengharapkan status HTTP 200.checkmengaktifkan health check untuk masing-masing backend.
Pemeriksaan endpoint / hanya cocok untuk demonstrasi. Untuk produksi, gunakan endpoint kesehatan yang mencerminkan kesiapan aplikasi. Status HTTP 200 pada halaman statis belum tentu membuktikan bahwa database atau layanan penting lainnya berfungsi.
Langkah 4: Validasi konfigurasi
Sebelum memuat ulang layanan:
sudo haproxy -c -f /etc/haproxy/haproxy.cfg
Jika konfigurasi dinyatakan valid, aktifkan layanan:
sudo systemctl enable --now haproxy
sudo systemctl restart haproxy
sudo systemctl status haproxy
Ulangi langkah tersebut pada kedua node.
Untuk menguji backend secara langsung sebelum konfigurasi VIP selesai:
curl http://192.168.10.11
curl http://192.168.10.12
Kedua alamat seharusnya dapat merespons selama HAProxy aktif dan firewall mengizinkan koneksi.
Perlu diperhatikan bahwa ketika HAProxy mengikat alamat 0.0.0.0:80, layanan mendengarkan pada seluruh alamat IPv4 lokal yang tersedia. Konfigurasi ini memudahkan praktikum, tetapi pembatasan antarmuka atau firewall lebih tepat untuk lingkungan produksi.
7. Instalasi Keepalived
Keepalived akan mengelola VIP pada kedua load balancer.
Langkah 1: Instal paket
Pada kedua node:
sudo apt update
sudo apt install keepalived -y
Periksa versi:
keepalived --version
Langkah 2: Tentukan antarmuka jaringan
Identifikasi nama antarmuka yang terhubung ke subnet VIP:
ip -br address
ip route
Contoh nama antarmuka adalah ens18, ens33, atau eth0.
Jangan langsung menyalin nama antarmuka dari tutorial. Gunakan nama yang benar pada setiap server.
Langkah 3: Konfigurasi Keepalived pada HAProxy-1
Edit file:
sudo nano /etc/keepalived/keepalived.conf
Masukkan konfigurasi berikut dan ganti ens18 apabila nama antarmuka berbeda:
global_defs {
router_id HAPROXY_1
}
vrrp_script chk_haproxy {
script "/usr/local/sbin/check_haproxy.sh"
interval 2
timeout 2
fall 2
rise 2
weight -30
}
vrrp_instance VI_WEB {
state MASTER
interface ens18
virtual_router_id 51
priority 150
advert_int 1
unicast_src_ip 192.168.10.11
unicast_peer {
192.168.10.12
}
authentication {
auth_type PASS
auth_pass HAPass01
}
virtual_ipaddress {
192.168.10.10/24 dev ens18
}
track_script {
chk_haproxy
}
}
Penjelasan bagian penting:
router_idmemberikan identitas node.vrrp_scriptmendefinisikan pemeriksaan layanan HAProxy.interval 2menjalankan pemeriksaan setiap dua detik.fall 2menentukan jumlah kegagalan berturut-turut sebelum skrip dianggap gagal.rise 2menentukan jumlah keberhasilan sebelum kondisi dianggap pulih.weight -30menurunkan prioritas efektif ketika pemeriksaan gagal.state MASTERmenunjukkan peran awal yang diinginkan.virtual_router_id 51mengidentifikasi grup VRRP pada subnet terkait.priority 150memberikan prioritas lebih tinggi kepada node pertama.advert_int 1mengatur interval iklan VRRP.unicast_src_ipdanunicast_peermenentukan komunikasi VRRP unicast.virtual_ipaddressmendefinisikan alamat VIP.track_scriptmenghubungkan hasil pemeriksaan layanan dengan pemilihan node.
Gunakan konfigurasi autentikasi yang sesuai dengan versi Keepalived. Metode autentikasi VRRP berbasis PASS bukan mekanisme keamanan kriptografis yang kuat. Isolasi jaringan VRRP dan pembatasan sumber paket tetap diperlukan.
Langkah 4: Buat skrip pemeriksaan HAProxy
Buat file:
sudo nano /usr/local/sbin/check_haproxy.sh
Isi:
#!/bin/sh
systemctl is-active --quiet haproxy
Simpan, lalu berikan izin eksekusi:
sudo chmod 750 /usr/local/sbin/check_haproxy.sh
sudo chown root:root /usr/local/sbin/check_haproxy.sh
Uji:
sudo /usr/local/sbin/check_haproxy.sh
echo $?
Kode keluar 0 berarti pemeriksaan berhasil. Kode bukan nol berarti pemeriksaan gagal.
Skrip ini memeriksa status layanan systemd. Skrip tersebut belum membuktikan bahwa port HTTP dapat menerima koneksi atau bahwa backend dapat melayani permintaan. Untuk kebutuhan produksi, pertimbangkan pemeriksaan yang lebih menyeluruh dan dirancang agar tidak menyebabkan perpindahan VIP akibat gangguan sementara.
Langkah 5: Konfigurasi HAProxy-2
Pada node 192.168.10.12, gunakan konfigurasi yang sama dengan beberapa perubahan:
global_defs {
router_id HAPROXY_2
}
vrrp_script chk_haproxy {
script "/usr/local/sbin/check_haproxy.sh"
interval 2
timeout 2
fall 2
rise 2
weight -30
}
vrrp_instance VI_WEB {
state BACKUP
interface ens18
virtual_router_id 51
priority 100
advert_int 1
unicast_src_ip 192.168.10.12
unicast_peer {
192.168.10.11
}
authentication {
auth_type PASS
auth_pass HAPass01
}
virtual_ipaddress {
192.168.10.10/24 dev ens18
}
track_script {
chk_haproxy
}
}
Pastikan parameter antarmuka, alamat sumber, dan alamat peer sesuai dengan node kedua.
Node cadangan menggunakan prioritas 100, lebih rendah daripada prioritas 150 pada node pertama. Dengan konfigurasi ini, node pertama diharapkan menjadi master saat kedua node sehat dan komunikasi VRRP berjalan normal.
Nilai prioritas dan perilaku failover harus diuji pada versi Keepalived yang digunakan, terutama jika menambahkan fitur preemption, tracking antarmuka, atau kebijakan perpindahan peran yang lebih kompleks.
Langkah 6: Aktifkan Keepalived
Pada kedua node, validasi konfigurasi jika opsi tersebut didukung oleh versi yang terpasang:
sudo keepalived --config-test \
-f /etc/keepalived/keepalived.conf
Jika perintah tersebut tidak tersedia pada versi paket yang digunakan, periksa dokumentasi versi lokal dan log layanan.
Aktifkan Keepalived:
sudo systemctl enable --now keepalived
sudo systemctl status keepalived
Periksa alamat VIP:
ip -br address
Dalam kondisi normal, 192.168.10.10 diharapkan muncul pada HAProxy-1. HAProxy-2 seharusnya tidak memiliki VIP yang sama pada saat itu.
Jika VIP tidak muncul, periksa log:
sudo journalctl -u keepalived -b --no-pager
sudo journalctl -u haproxy -b --no-pager
8. Pengujian Load Balancing dan Failover
Pengujian harus dilakukan secara bertahap agar administrator mengetahui komponen mana yang bekerja dan mana yang belum.
Pengujian 1: Akses Virtual IP
Dari client:
curl -i http://192.168.10.10
Hasil yang diharapkan adalah respons HTTP dari salah satu backend.
Pengujian 2: Periksa distribusi backend
Jalankan beberapa permintaan:
for i in $(seq 1 10); do
curl -s http://192.168.10.10
echo
done
Karena algoritma yang digunakan adalah round robin, permintaan yang berhasil diproses diharapkan tersebar di antara Web Server 1 dan Web Server 2.
Namun, distribusi yang terlihat tidak selalu tepat 50:50 pada setiap pengujian. Koneksi yang digunakan ulang, pengaturan HTTP, kondisi backend, dan pola permintaan dapat memengaruhi hasil.
Pengujian 3: Matikan salah satu backend
Pada Web Server 1, jalankan:
sudo systemctl stop nginx
Ulangi permintaan dari client:
curl -i http://192.168.10.10
Setelah health check mendeteksi kegagalan, HAProxy seharusnya menghindari backend pertama dan mengirimkan permintaan ke Web Server 2.
Pulihkan layanan:
sudo systemctl start nginx
Tunggu hingga health check menyatakan backend sehat kembali.
Pengujian 4: Simulasikan kegagalan HAProxy utama
Lakukan pengujian ini hanya di laboratorium atau pada lingkungan yang tidak melayani pengguna produksi.
Pada HAProxy-1:
sudo systemctl stop keepalived
Periksa VIP pada kedua node:
ip -br address
Jika HAProxy-2 masih sehat dan komunikasi jaringan berfungsi, VIP seharusnya berpindah ke HAProxy-2.
Uji kembali layanan dari client:
curl -i http://192.168.10.10
Pulihkan Keepalived pada node utama:
sudo systemctl start keepalived
Karena prioritas node pertama lebih tinggi, VIP dapat kembali ke HAProxy-1 bergantung pada konfigurasi preemption dan kondisi yang berlaku. Jangan mengasumsikan perpindahan kembali terjadi secara otomatis tanpa mengujinya.
Pengujian 5: Simulasikan kegagalan proses HAProxy
Pada HAProxy-1:
sudo systemctl stop haproxy
Skrip pemeriksaan lokal seharusnya mendeteksi kegagalan setelah ambang pemeriksaan tercapai dan menurunkan prioritas efektif node tersebut.
Jika prioritas efektif HAProxy-1 menjadi lebih rendah daripada HAProxy-2, VIP dapat berpindah ke node cadangan.
Perilaku aktual dipengaruhi oleh prioritas, kebijakan preemption, konfigurasi tracking, dan keadaan VRRP. Jika HAProxy berhenti tetapi VIP tetap berada di node pertama, jangan langsung menganggap konfigurasi gagal total. Periksa prioritas efektif, status VRRP, dan log Keepalived.
Setelah pengujian, pulihkan layanan:
sudo systemctl start haproxy
Lakukan pengujian pemulihan dan perpindahan kembali dengan hati-hati.
9. Memahami Perbedaan Failover Backend dan Failover Load Balancer
Kedua mekanisme ini sering dianggap sama, padahal berbeda.
Failover backend terjadi ketika salah satu server web tidak sehat. HAProxy tetap aktif pada node yang memegang VIP, tetapi menghentikan pengiriman permintaan ke backend yang bermasalah.
Failover load balancer terjadi ketika node yang menangani VIP mengalami kegagalan atau dinyatakan tidak layak melalui mekanisme tracking. Keepalived kemudian mengalihkan VIP ke node lain.
Contoh:
| Skenario | Komponen yang menangani |
|---|---|
| Web Server 1 mati | Health check HAProxy |
| Web Server 2 mati | Health check HAProxy |
| HAProxy-1 mati | Keepalived pada node cadangan |
| Proses HAProxy-1 berhenti | Skrip tracking dan VRRP |
| Database mati | Mekanisme aplikasi dan database |
| Seluruh jaringan lokasi mati | Redundansi jaringan atau lokasi |
Ketersediaan layanan bergantung pada bagaimana setiap kegagalan dideteksi dan ditangani.
10. Kesalahan yang Sering Terjadi
VIP tidak muncul
Penyebab yang mungkin:
- Nama antarmuka salah.
- Konfigurasi Keepalived tidak valid.
- Komunikasi VRRP terblokir.
- Kedua node tidak berada pada domain jaringan yang sesuai.
- Hak akses atau konfigurasi layanan bermasalah.
Solusi: periksa ip -br address, log Keepalived, firewall, dan parameter VRRP.
Kedua node sama-sama mengklaim VIP
Kondisi ini dapat mengindikasikan split-brain, yaitu kedua node menganggap dirinya berhak menjadi master.
Penyebabnya dapat berupa paket VRRP yang tidak sampai, kesalahan konfigurasi peer, atau segmentasi jaringan yang tidak direncanakan.
Dampaknya adalah konflik alamat IP, koneksi yang tidak konsisten, atau gangguan akses.
Solusi: pastikan komunikasi VRRP berfungsi, virtual_router_id konsisten, alamat peer benar, dan tidak ada perangkat lain menggunakan VIP tersebut.
HAProxy aktif, tetapi website tidak dapat diakses
Penyebab yang umum adalah backend tidak dapat dijangkau, port 80 diblokir, atau konfigurasi frontend tidak sesuai.
Solusi: uji konektivitas backend dari kedua load balancer, validasi konfigurasi HAProxy, dan periksa log layanan.
VIP tidak berpindah saat HAProxy berhenti
Jika Keepalived hanya memantau pertukaran VRRP tanpa memantau layanan HAProxy, kegagalan proses HAProxy belum tentu memicu failover.
Solusi: gunakan vrrp_script dan track_script, kemudian uji hasil pemeriksaan serta perubahan prioritas.
Kedua backend menampilkan konten berbeda
Perbedaan halaman dalam laboratorium memang disengaja untuk memudahkan pengujian. Pada produksi, perbedaan konten yang tidak direncanakan dapat menyebabkan pengguna memperoleh hasil berbeda dari satu permintaan ke permintaan lain.
Solusi: gunakan deployment yang konsisten, penyimpanan bersama bila diperlukan, atau mekanisme replikasi yang sesuai.
11. Tips dan Best Practice untuk Produksi
Gunakan pemeriksaan kesehatan yang mencerminkan aplikasi
Jangan hanya memeriksa apakah proses Nginx atau HAProxy aktif. Endpoint pemeriksaan sebaiknya dapat menunjukkan apakah aplikasi benar-benar siap melayani permintaan.
Untuk aplikasi yang bergantung pada database, antrean pesan, atau layanan eksternal, tentukan dengan hati-hati apakah kegagalan dependensi tersebut harus mengeluarkan backend dari rotasi atau ditangani oleh mekanisme lain.
Amankan komunikasi dan akses administratif
Batasi akses SSH dan antarmuka administrasi hanya untuk jaringan pengelolaan yang diperlukan. Jangan membuka halaman statistik HAProxy ke internet tanpa autentikasi dan pembatasan akses yang memadai.
Pada lingkungan produksi, pisahkan lalu lintas pengguna, komunikasi antarload balancer, dan pengelolaan server jika memungkinkan.
Rancang jaringan agar tidak menjadi single point of failure
Dua load balancer yang terhubung ke satu switch, satu catu daya, atau satu jalur jaringan yang sama masih dapat mengalami kegagalan bersama.
Untuk kebutuhan yang lebih tinggi, evaluasi redundansi switch, uplink, router, firewall, dan koneksi ke server backend.
Pertimbangkan sesi pengguna
Jika aplikasi menggunakan session lokal, pengguna mungkin kehilangan sesi ketika permintaan berikutnya diteruskan ke backend lain.
Solusinya dapat berupa session storage terpusat, token stateless, atau sticky session apabila memang diperlukan. Sticky session bukan pengganti replikasi data aplikasi dan perlu dievaluasi dampaknya terhadap distribusi beban.
Pastikan data dan konfigurasi konsisten
Load balancing tidak menyinkronkan file aplikasi atau database. Jika dua backend harus menampilkan data yang sama, gunakan mekanisme deployment dan sinkronisasi yang dirancang dengan baik.
Untuk database, pilih arsitektur replikasi atau clustering sesuai kebutuhan konsistensi, kapasitas, dan toleransi kegagalan.
Pantau dan catat kondisi sistem
Pantau setidaknya:
- Status HAProxy dan Keepalived.
- Jumlah koneksi aktif dan koneksi gagal.
- Status health check setiap backend.
- Perpindahan status VRRP.
- Penggunaan CPU, RAM, dan bandwidth.
- Latensi aplikasi dan tingkat kesalahan HTTP.
- Perubahan konfigurasi dan peristiwa layanan.
Gunakan log terpusat dan sistem monitoring seperti Prometheus serta Grafana bila sesuai dengan infrastruktur.
Uji failover secara terencana
Jangan menyimpulkan sistem sudah high availability hanya karena VIP terlihat pada salah satu node.
Buat prosedur uji yang mencakup kegagalan proses, reboot node, kegagalan backend, putusnya komunikasi VRRP, serta pemulihan layanan. Catat waktu pemulihan dan dampaknya terhadap koneksi pengguna.
Pahami batasan Virtual IP
VIP VRRP umumnya membutuhkan jaringan yang mendukung perpindahan alamat tersebut. Pada layanan cloud tertentu, alamat IP tidak dapat dipindahkan begitu saja melalui VRRP.
Untuk lingkungan cloud, gunakan mekanisme failover yang didukung penyedia, seperti floating IP, load balancer terkelola, atau pengalihan alamat melalui API.
12. Optimasi dan Pengembangan Lebih Lanjut
Setelah konfigurasi dasar berjalan, arsitektur dapat dikembangkan sesuai kebutuhan.
Pertama, aktifkan HTTPS menggunakan sertifikat TLS yang dikelola dengan benar. Tentukan apakah TLS termination dilakukan pada HAProxy atau diteruskan ke backend.
Kedua, evaluasi algoritma distribusi beban. Round robin cocok untuk backend dengan kapasitas serupa, sedangkan least connections dapat membantu pada pola koneksi tertentu. Pilihan algoritma perlu disesuaikan dengan karakteristik aplikasi.
Ketiga, tambahkan monitoring dan alerting untuk mendeteksi perubahan kondisi sebelum gangguan meluas.
Keempat, pertimbangkan redundansi jaringan dan lokasi. High availability pada dua VM dalam satu host fisik belum memberikan perlindungan terhadap kegagalan host tersebut.
Kelima, dokumentasikan prosedur pemulihan. Tim operasional harus mengetahui cara memeriksa VIP, membaca log, memulihkan konfigurasi, dan mengembalikan layanan ke kondisi normal.

Kesimpulan
HAProxy dan Keepalived merupakan kombinasi yang efektif untuk membangun layanan web dengan redundansi pada lapisan load balancer.
HAProxy menangani reverse proxy, distribusi permintaan, serta pemeriksaan kesehatan backend. Keepalived mengelola VIP dan memungkinkan perpindahan alamat layanan ketika node utama tidak lagi layak menjadi master.
Dengan dua node load balancer dan dua server backend, administrator dapat mempelajari mekanisme load balancing, health check, dan failover dalam lingkungan laboratorium yang terukur.
Namun, sistem yang benar-benar high availability membutuhkan lebih dari sekadar dua perangkat lunak. Jaringan, aplikasi, database, penyimpanan, keamanan, monitoring, dan prosedur pemulihan juga harus dirancang serta diuji.
Mulailah dari laboratorium sederhana, lakukan pengujian kegagalan secara terencana, lalu kembangkan arsitektur berdasarkan kebutuhan layanan dan target waktu pemulihan.
Referensi Teknis
Untuk memperdalam implementasi, gunakan dokumentasi resmi berikut:
- HAProxy: https://www.haproxy.org/
- Dokumentasi HAProxy: https://docs.haproxy.org/
- Keepalived: https://www.keepalived.org/
- Dokumentasi Debian: https://www.debian.org/doc/
- Nginx: https://nginx.org/en/docs/
Dokumentasi versi yang terpasang sebaiknya menjadi acuan utama karena opsi konfigurasi dan perilaku beberapa fitur dapat berbeda antarversi.
Frequently Asked Questions (FAQ)
1. Apa fungsi HAProxy dan Keepalived?
HAProxy mendistribusikan permintaan pengguna ke server backend dan memeriksa kesehatannya. Keepalived mengelola Virtual IP dan mendukung failover antarload balancer menggunakan VRRP.
2. Apakah HAProxy dan Keepalived dapat digunakan pada Debian 13?
Ya. Keduanya tersedia melalui repositori paket Debian. Pastikan konfigurasi dan opsi yang digunakan sesuai dengan versi paket yang terpasang.
3. Apa itu Virtual IP dalam High Availability?
Virtual IP adalah alamat IP layanan yang dapat berpindah dari satu node ke node lain. Pengguna tetap mengakses alamat yang sama ketika node aktif berganti.
4. Apakah Keepalived dapat memindahkan VIP secara otomatis?
Ya. Keepalived dapat melakukan pemilihan master dan perpindahan VIP berdasarkan kondisi VRRP, prioritas node, dan mekanisme tracking yang dikonfigurasi.
5. Apakah HAProxy membutuhkan dua server?
Tidak selalu. HAProxy dapat berjalan pada satu server untuk load balancing. Namun, jika ingin menghilangkan single point of failure pada lapisan load balancer, gunakan setidaknya dua node dengan mekanisme redundansi.
6. Apa perbedaan load balancing dan failover?
Load balancing membagi permintaan ke beberapa server. Failover memindahkan fungsi layanan ke komponen cadangan ketika komponen utama mengalami kegagalan.
7. Apakah HAProxy dapat mendeteksi backend yang mati?
Ya. HAProxy mendukung health check untuk menentukan apakah backend layak menerima permintaan. Hasilnya bergantung pada jenis pemeriksaan dan parameter yang dikonfigurasi.
8. Apakah konfigurasi ini dapat digunakan untuk HTTPS?
Ya. HAProxy mendukung HTTPS dan TLS termination. Konfigurasi sertifikat, keamanan TLS, serta komunikasi dari proxy ke backend perlu dirancang sesuai kebutuhan.
9. Apakah HAProxy dan Keepalived menjamin website selalu online?
Tidak secara mutlak. Keduanya meningkatkan ketersediaan pada lapisan load balancer, tetapi kegagalan jaringan, aplikasi, database, penyimpanan, atau infrastruktur lain masih dapat mengganggu layanan.
10. Apakah konfigurasi VIP VRRP dapat diterapkan di semua cloud?
Tidak. Sebagian lingkungan cloud tidak mengizinkan perpindahan VIP melalui VRRP seperti pada jaringan lokal. Gunakan mekanisme floating IP atau load balancer yang didukung penyedia cloud.
11. Bagaimana cara mengetahui node yang sedang memegang VIP?
Gunakan perintah ip -br address pada kedua node. Alamat VIP seharusnya terpasang pada node yang sedang aktif sebagai master untuk layanan tersebut.
12. Bagaimana cara menguji failover HAProxy?
Hentikan Keepalived pada node utama di lingkungan pengujian, periksa perpindahan VIP ke node cadangan, lalu uji kembali akses HTTP melalui VIP. Ulangi dengan kegagalan proses HAProxy dan kegagalan backend untuk menguji skenario yang berbeda.
Sudah pernah membangun High Availability Web Server menggunakan HAProxy dan Keepalived?
Melalui tutorial ini, kita telah mempelajari cara menggabungkan load balancing, backend health check, Virtual IP, dan failover otomatis untuk meningkatkan ketersediaan layanan web di Linux.
Sekarang giliran Anda untuk mencoba praktiknya.
π¬ Tulis di kolom komentar: Anda menggunakan Debian, Ubuntu Server, Proxmox VE, VMware, atau platform virtualisasi lainnya untuk membangun laboratorium HA?
π§ Bagikan pengalaman, kendala konfigurasi, atau hasil pengujian failover Anda. Diskusi teknis dari pengalaman nyata dapat membantu administrator lain memahami implementasi High Availability dengan lebih baik.
π’ Bagikan artikel ini kepada rekan sysadmin, network administrator, guru TJKT/TKJ, mahasiswa, dan praktisi DevOps yang sedang mempelajari infrastruktur server.
π Jangan lupa kunjungi artikel teknologi lainnya untuk mempelajari Linux Server, MikroTik, Cisco Networking, Virtualisasi, Kubernetes, Monitoring, Cybersecurity, dan DevOps.
Ikuti perkembangan konten terbaru untuk mendapatkan tutorial praktis, studi kasus infrastruktur IT, dan panduan konfigurasi server yang dapat diterapkan di laboratorium maupun lingkungan produksi.
Selamat belajar dan bereksperimen. Bangun sistem yang bukan hanya berjalan, tetapi juga siap menghadapi kegagalan.
Dukung kami dengan Subscribe & Join Membership channel YouTube | Walid Umar
Akses video pembelajaran eksklusif, materi persiapan UKK (Uji Kompetensi Siswa) dan Penyelesaian Soal LKS ITNSA