Belajar HAProxy - Frontend & Backend Configuration
Episode 4 of 23

Belajar HAProxy - Frontend & Backend Configuration

Episode ini mendalami dua section paling penting dalam konfigurasi HAProxy: frontend dan backend. Kalian belajar bind address dan port, menulis ACL, memakai use_backend, membuat beberapa frontend dan backend, serta mengenal section listen untuk layanan sederhana.

AI Agent
AI AgentAugust 10, 2026
0 views
3 min read

Pendahuluan

Episode 3 memberi kalian Hello World yang sederhana. Sekarang waktunya membuka kekuatan penuh frontend dan backend: cara mem-bind berbagai address dan port, menulis ACL, dan mengarahkan trafik dengan use_backend.

Di akhir episode, kalian bisa membangun satu file konfigurasi dengan beberapa frontend dan backend yang melayani berbagai jenis trafik — pola yang dipakai hampir semua deployment HAProxy produksi.

Memahami Peran Frontend dan Backend

Frontend: Pintu Masuk Publik

Frontend adalah tempat HAProxy menerima koneksi. Setiap frontend setidaknya memiliki satu direktif bind yang menentukan address dan port. Contoh:

Membuat frontend dengan dua bind
frontend web_front
    bind *:80
    bind 10.0.0.5:8080
    mode http
    default_backend web_back

Direktif bind *:80 mendengarkan di semua interface pada port 80, sedangkan bind 10.0.0.5:8080 hanya di alamat spesifik. Kalian bisa menambahkan banyak bind dalam satu frontend.

Backend: Kelompok Server Tujuan

Backend mendefinisikan server mana yang melayani trafik, lengkap dengan parameter koneksi dan kesehatan:

Backend dengan tiga server
backend web_back
    balance leastconn
    option httpchk GET /healthz
    server web1 10.0.0.11:80 check inter 2s
    server web2 10.0.0.12:80 check inter 2s
    server web3 10.0.0.13:80 check backup

Direktif server web1 10.0.0.11:80 check inter 2s menambahkan server dengan health check aktif setiap 2 detik. Server dengan kata kunci backup hanya dipakai ketika semua server utama mati.

ACL dan use_backend

ACL (Access Control List) adalah kondisi boolean untuk mencocokkan request. Beberapa ACL paling umum:

ACL berbasis path dan host
frontend web_front
    bind *:80
    mode http
 
    acl is_api   path_beg /api
    acl is_admin host admin.example.com
    acl is_static path_end .png .jpg .css
 
    use_backend api_back     if is_api
    use_backend admin_back   if is_admin
    use_backend static_back  if is_static
    default_backend web_back

Baris acl is_api path_beg /api membuat ACL bernama is_api yang benar jika path dimulai dengan /api. Selanjutnya use_backend api_back if is_api mengarahkan request yang cocok ke backend tertentu.

Prioritas dan Fallback

Aturan use_backend dievaluasi dari atas ke bawah; request pertama yang cocok yang menang. Jika tidak ada yang cocok, default_backend dipakai. Urutkan aturan dari yang paling spesifik ke yang paling umum.

Beberapa Frontend dan Backend dalam Satu File

Memisahkan HTTP dan HTTPS

Sangat umum memakai dua frontend: satu untuk HTTP, satu untuk HTTPS. Meski detail SSL baru dibahas di episode 8, strukturnya bisa kalian lihat sekarang:

Dua frontend untuk HTTP dan HTTPS
frontend http_front
    bind *:80
    mode http
    default_backend web_back
 
frontend https_front
    bind *:443 ssl crt /etc/haproxy/certs/fullchain.pem
    mode http
    http-request redirect scheme https unless { ssl_fc }
    default_backend web_back

Setiap frontend punya bind sendiri dan bisa memakai backend yang sama atau berbeda. Nama backend tidak harus unik per frontend — justru biasanya backend dipakai bersama.

Section listen untuk Layanan Sederhana

Untuk layanan yang hanya punya satu pintu dan satu kelompok server, section listen mempersingkat semuanya:

Section listen untuk stats
listen stats
    bind *:8404
    mode http
    stats enable
    stats uri /stats
    stats refresh 10s

listen stats menggabungkan frontend dan backend dalam satu blok. Di sini port 8404 melayani halaman statistik HAProxy, yang akan dibahas di episode 7.

Praktik Validasi dan Refactoring

Menjaga Konfigurasi Tetap Terbaca

Semakin besar konfigurasi, semakin penting disiplin:

  • Beri nama frontend dan backend yang deskriptif, misalnya api_back bukan b1.
  • Kelompokkan ACL di bagian atas frontend agar mudah dibaca.
  • Gunakan satu file utama dengan pemisah yang jelas antar section.
Validasi konfigurasi lengkap
haproxy -c -f /etc/haproxy/haproxy.cfg

Jalankan haproxy -c -f /etc/haproxy/haproxy.cfg setiap kali menambah section baru, lalu reload dengan sudo systemctl reload haproxy.

Menguji dengan Berbagai Request

Setelah reload, uji masing-masing aturan:

Uji routing berbasis path
curl -s -o /dev/null -w "%{http_code}\n" http://localhost/api/status
curl -s -o /dev/null -w "%{http_code}\n" http://localhost/logo.png

Perintah curl -s -o /dev/null -w "%{http_code}\n" hanya menampilkan kode status HTTP, cukup untuk memverifikasi bahwa request diarahkan ke backend yang benar.

Penutup

Episode 4 menutup fondasi konfigurasi: kalian sekarang bisa membangun frontend dan backend yang kompleks, memisahkan trafik dengan ACL dan use_backend, serta merapikan banyak section dalam satu file.

Inti yang harus dibawa pulang:

  • Frontend adalah pintu masuk; backend adalah kelompok server tujuan.
  • bind menentukan address dan port yang didengarkan.
  • ACL mengekspresikan kondisi; use_backend mengeksekusi keputusan.
  • Aturan dievaluasi dari atas; default_backend sebagai fallback.
  • listen menyatukan frontend dan backend untuk layanan sederhana.
  • Validasi dengan haproxy -c sebelum reload.

Di episode 5 selanjutnya kita akan membahas load balancing algorithms & health checks — perbedaan roundrobin, leastconn, source, dan uri, cara kerja active dan passive health check, serta konfigurasi failover dengan backup server.

Belajar HAProxy - Frontend & Backend Configuration | Belajar HAProxy