Episode hands-on pertama: menginstall HAProxy di Linux, membuat konfigurasi minimal untuk HTTP forwarding, menjalankan service, memverifikasi dengan curl, dan membaca log dasar untuk memastikan trafik benar-benar mengalir.

Teori sudah cukup. Episode 3 adalah momen pertama kalian melihat HAProxy bekerja sungguhan: menginstall, menulis konfigurasi minimal, menjalankan service, dan memverifikasi bahwa HTTP request benar-benar diteruskan ke backend.
Skenario kita sederhana tapi nyata: dua server web kecil di belakang satu HAProxy. Setelah episode ini, kalian punya laboratorium sendiri yang bisa dipakai untuk seluruh praktik di series ini.
Di Debian dan Ubuntu, instalasi cukup satu perintah:
sudo apt update
sudo apt install -y haproxyPada distro lain, perintahnya menyesuaikan: dnf install haproxy untuk Fedora/RHEL, pacman -S haproxy untuk Arch. Versi dari repository sering lebih tua dari rilis terbaru; jika butuh versi baru, gunakan official builds atau kompilasi dari source.
haproxy -vPastikan perintah haproxy -v menampilkan versi dan tanggal build. Versi di atas 2.0 sudah nyaman untuk semua materi series ini.
Jika kalian ingin mencoba tanpa mengotori sistem, jalankan container:
docker run -d --name haproxy-test -p 80:80 \
-v /home/arman/haproxy:/usr/local/etc/haproxy:ro \
haproxy:lts-alpineBuat direktori konfigurasi terlebih dahulu, lalu mount ke container. Pendekatan ini dipakai kembali di episode 19 untuk Kubernetes.
Sebelum menulis konfigurasi, siapkan dua server web mini sebagai backend. Kalian bisa memakai python3 -m http.server di dua port berbeda:
python3 -m http.server 8080 --directory /tmp/web1 &
python3 -m http.server 8081 --directory /tmp/web2 &Buat dua direktori berisi file index.html dengan teks berbeda agar mudah melihat server mana yang melayani.
Tulis konfigurasi berikut ke /etc/haproxy/haproxy.cfg:
global
log /dev/log local0
maxconn 2048
defaults
mode http
timeout connect 5s
timeout client 30s
timeout server 30s
frontend web_front
bind *:80
default_backend web_back
backend web_back
balance roundrobin
server web1 127.0.0.1:8080 check
server web2 127.0.0.1:8081 checkKonfigurasi di atas mendengarkan port 80, lalu membagi trafik secara round-robin ke dua backend. Direktif check di server web1 127.0.0.1:8080 check membuat HAProxy memantau kesehatan server secara berkala.
Sebelum service dijalankan, validasi dulu sintaksnya:
haproxy -c -f /etc/haproxy/haproxy.cfg
sudo systemctl restart haproxy
sudo systemctl status haproxy --no-pagerhaproxy -c -f /etc/haproxy/haproxy.cfg harus mencetak Configuration file is valid. Jika ada error, baca baris yang disebutkan dan perbaiki sebelum restart.
Dari mesin yang sama, akses port 80 beberapa kali:
curl -s http://localhost/ | head -n 1
curl -s http://localhost/ | head -n 1
curl -s http://localhost/ | head -n 1Karena balance roundrobin, jawaban harus bergantian antara backend satu dan dua. Ini bukti visual pertama bahwa load balancing bekerja.
Log HTTP HAProxy bisa dibaca lewat syslog. Pastikan direktif log ada di global dan option httplog diaktifkan:
defaults
mode http
option httplog
log globalSetelah reload, request baru akan tercatat di /var/log/haproxy.log atau lewat journald tergantung distro:
sudo journalctl -u haproxy -fSetiap baris log menampilkan IP klien, timestamp, dan frontend-backend/server yang menangani request. Membiasakan diri membaca log ini sejak awal sangat membantu saat troubleshooting di episode 7.
Jika service gagal start, penyebab yang paling sering muncul:
haproxy -c.python3 -m http.server masih berjalan.ss -tlnp | grep :80
ps aux | grep http.serverPerintah ss -tlnp | grep :80 memastikan HAProxy benar-benar mendengarkan di port 80, dan ps aux | grep http.server memastikan backend hidup.
Selamat, kalian baru saja menjalankan HAProxy pertama! Dari instalasi, konfigurasi minimal, hingga verifikasi dengan curl dan log, laboratorium kalian sekarang siap dipakai untuk materi selanjutnya.
Inti yang harus dibawa pulang:
haproxy -c sebelum restart.balance roundrobin membagi trafik secara bergantian ke backend.option httplog dan baca log untuk memahami alur trafik.Di episode 4 selanjutnya kita akan mendalami frontend & backend configuration — membuat section lengkap dengan bind, ACL, dan use_backend, serta mengelola beberapa frontend dan backend sekaligus dalam satu file konfigurasi.