HAProxy (singkatan dari High Availability Proxy) adalah perangkat lunak sumber terbuka (open-source) yang berfungsi sebagai Load Balancer dan Proxy Server yang sangat cepat dan andal, khususnya untuk aplikasi berbasis TCP (Layer 4) dan HTTP (Layer 7).
HAProxy adalah salah satu implementasi paling populer dari Proxy-based Load Balancer berbasis perangkat lunak (software-based).
1. Beroperasi di Layer 4 dan Layer 7
Load balancer dapat bertindak di berbagai lapisan jaringan. HAProxy sangat ahli di dua lapisan ini:
- Layer 4 (TCP / Transport Layer): Pada mode ini, HAProxy merutekan lalu lintas murni berdasarkan alamat IP dan port (misalnya dari IP klien ke IP server database). Ia tidak melihat isi data yang dikirimkan, sehingga prosesnya sangat ringan, cepat, dan cocok untuk traffic non-HTTP.
- Layer 7 (HTTP/HTTPS / Application Layer): Pada mode ini, HAProxy membaca dan menganalisis konten permintaan (request). Ia bisa melihat URL, header HTTP, atau cookie. Hal ini memungkinkannya membuat keputusan routing yang sangat spesifik, misalnya mengarahkan traffic ke
/gambarmenuju server khusus gambar, dan/apike server khusus API.
2. Manajemen Health Checks (Pengecekan Kesehatan Server)
Bahwa load balancer yang baik harus menyadari kesehatan seluruh sistem. HAProxy melakukan Health Checks secara terus-menerus ke server-server di belakangnya (backend servers). Jika sebuah server mati atau tidak merespons dalam waktu yang ditentukan, HAProxy akan secara otomatis berhenti mengirimkan traffic ke server tersebut dan mengalihkannya ke server lain yang masih hidup.
3. Mengatasi Stickiness / Session Persistence
HAProxy memecahkan masalah shopping cart. Jika pengguna sedang bertransaksi, mereka tidak boleh dipindahkan ke server lain di tengah jalan. HAProxy dapat menyisipkan atau membaca cookie (sesi HTTP) sehingga setiap permintaan dari pengguna yang sama akan selalu diarahkan ke server backend yang sama (proses ini disebut sticky sessions).
4. SSL/TLS Termination
Mendekripsi lalu lintas yang aman (HTTPS) membutuhkan daya komputasi yang besar. HAProxy dapat mengambil alih tugas berat ini (SSL Termination). Ia akan menerima dan mendekripsi trafik HTTPS dari klien, lalu meneruskannya dalam bentuk HTTP biasa (tidak terenkripsi) ke server backend. Ini membuat beban kerja server web Anda menjadi jauh lebih ringan.
5. Pencatatan Log yang Sangat Rinci
Karena HAProxy memproses permintaan yang kompleks, ia dilengkapi dengan sistem logging yang sangat rinci. Ketika terjadi masalah pada aplikasi (misalnya koneksi terputus atau respon lambat), log dari HAProxy sering kali menjadi kunci utama untuk menganalisis apakah masalahnya ada di jaringan, di pengaturan load balancer, atau server backend yang memang kelebihan beban.
Jika memiliki banyak pengguna yang mengakses situs web atau aplikasi, dan satu server tidak lagi mampu menanganinya, sebaiknya meletakkan HAProxy di depan (sebagai “pintu masuk” utama). HAProxy-lah yang kemudian akan membagi-bagikan tamu (klien) tersebut ke ruangan (server) yang kosong dan siap melayani.
Apa itu HAProxy?
HAProxy adalah alat serbaguna yang memiliki banyak peran di dalam infrastruktur jaringan, antara lain:
- TCP Proxy & HTTP Reverse-Proxy: Menerima koneksi dari klien dan meneruskannya ke server di belakangnya. Ia mendukung berbagai protokol (IPv4, IPv6, HTTP/1.x, HTTP/2) dan bisa menerjemahkan alamat antar jaringan.
- SSL Terminator: Mengambil alih tugas berat untuk mengenkripsi dan mendekripsi lalu lintas HTTPS/TLS, sehingga meringankan beban server aplikasi.
- Normalizer (TCP & HTTP): Melindungi server dari paket jaringan yang cacat, tidak lengkap, atau serangan tingkat protokol (seperti SYN floods). Ia memastikan hanya permintaan yang valid yang diteruskan.
- HTTP Fixing Tool: Mampu memodifikasi, menambah, atau menghapus header dan URL pada permintaan maupun respons secara langsung (on-the-fly).
- Content-based Switch & Load Balancer: Mengarahkan lalu lintas ke server yang tepat berdasarkan isi permintaan (misalnya membedakan trafik HTTP dan SSH di satu port yang sama), serta membagi rata beban kerja ke banyak server.
- Pelindung dari DDoS: Memantau statistik akses per alamat IP, URL, atau cookie untuk mendeteksi penyalahgunaan dan memperlambat atau memblokir penyerang.
- Alat Bantu Optimalisasi: Bisa mengompresi data untuk mempercepat pemuatan halaman web, menyimpan cache di memori RAM, dan memberikan catatan (log) jaringan yang sangat detail untuk analisis masalah (troubleshooting).
Apa yang BUKAN HAProxy?
Penting juga untuk memahami batasan HAProxy agar tidak salah sasaran penggunaannya:
- Bukan Forward Proxy: Ia bukan alat yang dikonfigurasi pada browser pengguna untuk mengakses internet (tugas ini lebih cocok untuk perangkat lunak seperti Squid).
- Bukan Data Scrubber: HAProxy memodifikasi “amplop” data (header dan URL), tetapi tidak akan pernah memodifikasi “isi surat” (body dari request/response).
- Bukan Web Server Statis: Setelah dinyalakan, HAProxy mengunci dirinya demi keamanan dan tidak bisa membaca file system sama sekali. Ia tidak bisa digunakan untuk menyimpan file HTML/Gambar langsung seperti Apache atau Nginx.
- Bukan Packet-Based Load Balancer: Ia tidak bekerja di level paket IP mentah atau UDP. Ia tidak melakukan manipulasi seperti NAT (Network Address Translation).
Bagaimana Cara Kerja HAProxy?
Secara teknis, HAProxy sangat ringan, sangat cepat, dan menggunakan arsitektur event-driven yang non-blocking.
- Kinerja Tinggi & Irit Sumber Daya: HAProxy mendelegasikan sebagian besar proses berat ke kernel (inti sistem operasi). Sebuah mesin dengan 1 core CPU saja sudah lebih dari cukup untuk menangani 99% kebutuhan pengguna. Justru, menggunakan terlalu banyak CPU kadang dapat menurunkan kinerjanya akibat komunikasi antar-CPU.
- Anti-Gagal Berjalan (Fail-safe di runtime): HAProxy akan mengecek semua konfigurasi saat dinyalakan (startup). Jika ada yang salah, ia menolak menyala. Namun, jika ia berhasil menyala, ia dijamin tidak akan crash di tengah jalan.
- Konsep Frontend dan Backend: Alur kerja utamanya dibagi menjadi dua sisi:
- Frontend (Sisi Klien): HAProxy menerima koneksi masuk, mengecek aturan, dan menyaring lalu lintas.
- Backend (Sisi Server): HAProxy meneruskan permintaan klien ke kumpulan server yang tersedia berdasarkan strategi pembagian beban (load balancing), menunggu respons server, lalu mengirimkannya kembali ke klien.
- Health Checks: Sepanjang waktu operasionalnya, HAProxy terus mengecek kondisi server-server di bagian backend. Jika ada server yang mati, HAProxy akan berhenti mengirimkan pengunjung ke server tersebut hingga ia hidup kembali.
Fitur-Fitur Dasar (Basic Features) dari HAProxy
1. Proxying (Manajemen Lalu Lintas & Koneksi)
Ini adalah inti dari HAProxy, yaitu menjadi jembatan (perantara) antara klien dan server.
- Perlindungan Server: HAProxy memberikan koneksi yang “bersih” ke server untuk melindunginya dari serangan atau bug dari sisi klien.
- Fleksibilitas Port & IP: Bisa mendengarkan banyak IP/Port, menerjemahkan port yang berbeda antara klien dan server, hingga menyembunyikan (spoof) IP klien.
- Optimalisasi Jaringan: Mengurangi beban memori server, memvalidasi protokol agar hanya paket data HTTP/SSL yang valid yang diteruskan, dan menerapkan batas waktu (timeout) agar tidak ada koneksi menggantung yang menghabiskan sumber daya.
- PROXY Protocol: Sebuah standar buatan HAProxy (yang kini dipakai banyak software lain) untuk meneruskan informasi IP asli klien ke server di belakangnya, meskipun koneksinya bukan HTTP.
2. SSL/TLS (Keamanan & Enkripsi)
Kinerja enkripsi HAProxy sangat canggih dan diakui oleh para insinyur Google.
- Skala Besar: Mampu menangani puluhan ribu domain beserta sertifikat SSL-nya dalam satu server menggunakan SNI (Server Name Indication).
- Kinerja Tinggi: Menggunakan teknik seperti OCSP stapling dan Dynamic record sizing agar halaman web termuat lebih cepat di browser klien.
- Keamanan Ekstra: Bisa memblokir celah keamanan terkenal seperti Heartbleed, mendukung TLS tiket untuk keamanan lanjutan, dan mampu mengautentikasi baik klien maupun server backend.
3. Monitoring (Pemantauan Kesehatan)
HAProxy terus memastikan bahwa server yang menerima lalu lintas dalam keadaan sehat.
- Cek Berlapis: Mendukung berbagai jenis pengecekan, tidak hanya sekadar “ping”, tetapi bisa mengecek koneksi HTTP, TCP, SQL, Redis, atau LDAP.
- Anti-Flapping (Hysteresis): Mencegah HAProxy kebingungan jika ada server yang kondisinya “kembang-kempis” (mati-nyala-mati-nyala dalam waktu singkat).
- Agent Check: Bisa berkomunikasi dengan agen kecil di server untuk mengetahui beban CPU atau status administratif server secara langsung.
4. High Availability (Ketersediaan Tinggi)
HAProxy dirancang untuk mencegah terjadinya sistem mati (downtime).
- Server Cadangan (Backup): Jika server utama mati, HAProxy otomatis mengarahkan pengunjung ke server backup tanpa memutus sesi.
- Graceful Shutdown: Anda bisa mengeluarkan server dari antrean secara halus untuk maintenance (pemeliharaan) tanpa memutuskan pengguna yang sedang aktif bertransaksi.
- Integrasi VRRP: Mudah digabungkan dengan perangkat lunak seperti keepalived, sehingga jika server HAProxy itu sendiri mati, IP-nya bisa langsung diambil alih oleh HAProxy cadangan.
5. Load Balancing (Pembagian Beban Kerja)
Fitur untuk membagi lalu lintas klien ke banyak server agar tidak ada server yang kelebihan beban.
- 10+ Algoritma: Termasuk Round-robin (dibagi rata bergiliran), Leastconn (diberikan ke server yang paling sedikit menangani koneksi aktif), atau berdasarkan URL dan IP (Source/URI).
- Pembobotan (Weights): Anda bisa memberi tahu HAProxy, “Server A lebih canggih dari Server B, jadi berikan 70% trafik ke Server A dan 30% ke Server B.” Pembobotan ini bisa diubah secara langsung (on the fly).
- Slow-start: Mencegah server yang baru menyala langsung dihantam ribuan trafik. HAProxy akan menaikkan beban trafiknya secara perlahan.
6. Stickiness (Persistensi Sesi)
Fitur ini memastikan pengunjung yang sama selalu diarahkan ke server yang sama (sangat penting untuk aplikasi ber-login atau memiliki keranjang belanja).
- Banyak Kunci Penentu: Bisa melacak berdasarkan IP, Cookie, parameter URL, atau header HTTP.
- Sinkronisasi (Stick-tables): Memori tentang siapa terhubung ke server mana bisa disalin dan disinkronkan ke node HAProxy lainnya.
- Modifikasi Cookie: HAProxy bisa menyisipkan, memodifikasi, atau menghapus cookie agar sesi tetap terjaga dengan aman.
7. Logging (Pencatatan Historis)
Karena HAProxy berada di “pintu masuk” infrastruktur, catatannya sangat vital untuk mencari sumber masalah jaringan (troubleshooting).
- Sangat Akurat: Mencatat waktu dalam hitungan milidetik.
- Lengkap: Mencatat IP, port, server yang merespons, waktu tunggu antrean, hingga status saat koneksi terputus.
- Fleksibel: Tingkat pencatatan bisa diatur. Misalnya, Anda bisa mengatur agar HAProxy diam (tidak mencatat) saat kondisi normal, dan hanya mengirim peringatan bahaya (warning) jika terjadi lonjakan error.
8. Statistics (Dasbor Statistik)
- Halaman Web Bawaan: HAProxy memiliki halaman web dasbor statistik yang dilindungi password untuk melihat kondisi jaringan (server mana yang mati, berapa jumlah pengunjung aktif, dsb.) secara sekilas.
- Format Ekspor: Data statistik bisa diunduh dalam bentuk file CSV atau diintegrasikan secara otomatis dengan alat monitoring modern seperti Prometheus.
Ref : [1]