Memahami HAProxy dan Simulasi Load Balancing
Dulu saya pikir satu server itu cukup. Aplikasi jalan, tidak ada error, semua terlihat aman.
Sampai suatu waktu saya mulai paham, satu backend itu rapuh. Kalau servicenya mati, ya sudah, selesai. Semua ikut down.
Dari situ saya mulai belajar tentang load balancer, dan salah satu tools yang paling sering muncul adalah HAProxy.
Awalnya terlihat rumit. Tapi setelah dicoba sendiri, ternyata konsepnya sederhana. Jadi di tulisan ini saya ingin berbagi versi paling dasar, paling mudah dipahami, tanpa teori berat.
Fungsi HAProxy
Bayangkan kita punya dua aplikasi yang sama, berjalan di dua port berbeda.
Tanpa load balancer, user harus memilih mau akses yang mana. Itu tidak realistis.
Dengan HAProxy, semua request masuk lewat satu pintu. Di belakangnya, HAProxy yang membagi beban ke beberapa backend.
Kalau salah satu mati, yang lain tetap jalan.
Itu saja dulu konsepnya yang bisa saya jelaskan.
Simulasi Sederhana
Supaya benar-benar paham, saya membuat percobaan kecil:
- Backend pertama jalan di port 8001
- Backend kedua jalan di port 8002
- HAProxy menerima request di port 80
Semua masih dalam satu server. Tapi ini cukup untuk memahami cara kerjanya.
1. Install HAProxy
Seperti biasa, selalu mulai dengan update sistem.
# apt update && apt upgrade -y
Lalu install HAProxy:
# apt install haproxy -y
Setelah itu saya cek apakah servicenya aktif:
# systemctl status haproxy
Pastikan statusnya active (running).
2. Siapkan Dua Backend
Untuk backend, saya tidak pakai aplikasi ribet. Cukup Python HTTP server sederhana.
Backend pertama:
mkdir ~/backend1
cd ~/backend1
echo "INI BACKEND 1" > index.html
python3 -m http.server 8001
Backend kedua (di terminal berbeda):
mkdir ~/backend2
cd ~/backend2
echo "INI BACKEND 2" > index.html
python3 -m http.server 8002
Keduanya menampilkan tulisan berbeda. Ini penting supaya nanti terlihat perbedaannya.
3. Menghubungkan ke HAProxy
Bagian ini yang awalnya saya kira rumit, ternyata tidak.
Saya buka file konfigurasi:
# nano /etc/haproxy/haproxy.cfg
Lalu saya tambahkan konfigurasi sederhana di bagian bawah:
frontend http_front
bind *:80
default_backend http_back
backend http_back
balance roundrobin
server backend1 127.0.0.1:8001 check
server backend2 127.0.0.1:8002 check
Simpan, lalu restart:
# systemctl restart haproxy
Saat Dicoba di Browser
Lalu refresh beberapa kali.
Muncul halaman yang menunjukkan :
INI BACKEND 1 dan INI BACKEND 2 secara bergantian
Artinya HAProxy membagi request secara bergantian. Itulah metode round robin.
Tanpa perlu konfigurasi kompleks, load balancing sudah berjalan.
Ketika Salah Satu Backend Saya Matikan Saya hentikan backend pertama dengan menekan Ctrl + C di terminalnya.
Kemudian saya refresh lagi browser. Tidak ada error. Tidak ada downtime.
Semua request langsung diarahkan ke backend kedua.
Itulah salah satu contoh kecil dari high availability. Bukan sekadar istilah, tapi benar-benar terasa dampaknya.
Beberapa baris konfigurasi tadi sebenarnya melakukan hal penting:
- frontend adalah pintu masuk request
- backend adalah kumpulan server tujuan
- balance roundrobin membagi beban secara bergantian
- check membuat HAProxy memantau apakah backend masih hidup
Kalau backend tidak merespons, HAProxy otomatis mengeluarkannya dari rotasi.
Setelah mencoba sendiri, saya menyadari sesuatu.
Load balancing itu tidak selalu soal sistem besar atau traffic jutaan user. Bahkan di skala kecil pun, konsepnya tetap relevan.
Dengan satu HAProxy dan dua backend saja, kita sudah bisa belajar:
- Distribusi beban/load
- Failover otomatis
- Dasar high availability
Dan yang paling penting, memahami bagaimana arsitektur production biasanya dibangun.
Tapi seperti biasa, semuanya lebih mudah dipahami kalau pernah mencoba versi paling dasarnya dulu.
Comments
Post a Comment