Konfigurasi HAProxy basic
Pengertian
Konsep
Konsep utama HAProxy membagi tugas menjadi dua bagian besar: Frontend dan Backend.
Frontend: Sisi yang berhadapan langsung dengan user (Internet/Client). Di sini kita tentukan IP dan Port mana yang akan dibuka.
Backend: Kumpulan server asli (Server Pool) yang bakal memproses request dari user. HAProxy bertugas memilihkan server mana yang lagi nganggur buat nerima kiriman tersebut.
Cara Kerja
Request In: User akses website lu via port 80 (HTTP) atau 443 (HTTPS).
Frontend Processing: HAProxy cek konfigurasinya. Kalau user masuk lewat port 80, dia bakal dipaksa pindah ke HTTPS (Redirect).
Health Check: HAProxy selalu ngecek, "Server kutoarjo sama bagelen masih hidup nggak?".
Distribution: Kalau dua-duanya hidup, HAProxy bakal lempar request secara bergantian (
) ke server backend di port 8080.Round Robin
Tujuan
Kenapa pakai konfigurasi di gambar lu?
Terminasi SSL: HAProxy yang ngurusin sertifikat SSL, jadi server backend lu nggak perlu berat-berat proses enkripsi.
Scalability: Kalau server kutoarjo mulai lambat, lu tinggal tambah server ketiga (misal: server purworejo) di backend tanpa perlu ganti IP di sisi user.
Security: User nggak pernah tahu IP asli server kutoarjo/bagelen karena mereka cuma berhubungan sama IP HAProxy.
Analogi
Bayangkan HAProxy itu adalah seorang Resepsionis di kantor besar.
Frontend: Pintu masuk utama kantor. Resepsionis berdiri di sana menyambut tamu. Kalau ada tamu nggak pakai masker (HTTP), resepsionis suruh pakai masker dulu (HTTPS Redirect).
Backend: Ruangan para staff (Server). Resepsionis bakal ngatur tamu, "Tamu A silakan ke Meja 1 (Kutoarjo), Tamu B silakan ke Meja 2 (Bagelen)". Begitu seterusnya biar nggak numpuk di satu meja doang.
Kelebihan dan Kekurangan
| Kelebihan | Kekurangan |
| Performa sangat tinggi untuk menangani ribuan koneksi per detik. | Konfigurasi file tunggal bisa jadi sangat panjang dan rumit. |
| Mendukung fitur | Tidak bisa berdiri sendiri untuk HA (harus tandem sama Keepalived). |
| Health check yang sangat akurat dan mendetail. | Jika HAProxy mati, akses ke semua server backend terputus (SPOF). |
Tutorial & Problem Solving Lengkap
Berdasarkan gambar syntax yang lu kasih, berikut adalah cara implementasi dan penjelasannya.
1. Instalasi
sudo apt update && sudo apt install haproxy -y
2. Konfigurasi File
Buka file /etc/haproxy/haproxy.cfg dan masukkan syntax dari gambar lu:
# Sisi Frontend (Pintu Masuk)
frontend pub1
bind :80 # Buka port 80 (HTTP)
bind :443 ssl crt /etc/haproxy/haproxy.pem alpn h2,http/1.1 # Port 443 (HTTPS) dengan sertifikat
# Force user pakai HTTPS
http-request redirect scheme https code 301 if !{ ssl_fc }
# Tambah identitas proxy di header
http-request add-header via-proxy kutoarjo
default_backend app1 # Lempar traffic ke grup app1
# Sisi Backend (Kolam Server)
backend app1
balance roundrobin # Bagi beban secara adil bergantian
# Daftar server tujuan dengan pengecekan kesehatan (check)
server kutoarjo 10.20.10.83:8080 check
server bagelen 10.20.10.84:8080 check
3. Cek Konfigurasi
Sebelum lu restart, lu wajib cek apakah ada salah ketik (typo). Gua sering nemu junior asal restart padahal konfigurasinya salah:
haproxy -c -f /etc/haproxy/haproxy.cfg
# Kalau muncul "Configuration file is valid", berarti aman.
4. Problem Solving (Common Issues)
SSL Handshake Error: Pastikan file
.pemlu isinya lengkap (Sertifikat + Private Key + Chain).Backend Down (503 Service Unavailable): Cek apakah port 8080 di server kutoarjo (10.20.10.83) memang sudah menyala dan bisa di-
telnetdari server HAProxy.
Kesimpulan
Konfigurasi di gambar lu udah bagus karena udah mendukung alpn h2) dan auto-redirect ke HTTPS. Best practice dari gua: selalu monitor statistik HAProxy lu lewat fitur stats page biar lu tahu server mana yang paling sering sibuk.
Glosarium Engineer
HAProxy: Software load balancer dan proxy server yang populer karena kecepatannya.
Frontend: Konfigurasi yang menentukan bagaimana HAProxy menerima koneksi dari client.
Backend: Sekumpulan server yang menerima request yang sudah diteruskan oleh HAProxy.
SSL Termination: Proses dekripsi traffic HTTPS di level load balancer sehingga server backend hanya menerima traffic HTTP biasa.
ALPN (Application-Layer Protocol Negotiation): Fitur untuk menegosiasikan protokol (seperti HTTP/2) saat jabat tangan SSL.
Round Robin: Algoritma pembagian beban secara bergiliran dan berurutan antar server.
301 Redirect: Kode status HTTP yang menunjukkan pengalihan permanen ke alamat baru (dalam hal ini ke HTTPS).
Health Check: Mekanisme untuk memastikan server tujuan masih mampu melayani request.
Reverse Proxy: Server yang bertindak sebagai perantara bagi client untuk mengambil sumber daya dari server lain.
PEM File: Format file yang menggabungkan sertifikat SSL dan kunci privat dalam satu dokumen teks.
Comments
Post a Comment