Definisi Load Balancer
Load balancer (penyeimbang beban) adalah sebuah perangkat lunak atau perangkat keras yang mendistribusikan permintaan jaringan (request) dari klien ke beberapa server backend secara otomatis. Tujuan utamanya adalah memastikan bahwa setiap server menerima beban kerja yang proporsional, sehingga kinerja keseluruhan sistem tetap optimal, tersedia, dan dapat menahan lonjakan traffic.
Secara sederhana, load balancer bertindak seperti "traffic cop" di jalan raya digital: ia mengatur aliran data agar tidak terjadi kemacetan pada satu titik tunggal.
Jenis jenis Load Balancer
1. Berdasarkan Lapisan OSI
- Layer 4 (Transport Layer): Menggunakan informasi TCP/UDP seperti IP source/destination dan port. Contoh: HAProxy dalam mode TCP.
- Layer 7 (Application Layer): Menganalisis isi paket HTTP/HTTPS, header, URL, atau cookie untuk membuat keputusan routing yang lebih cerdas. Contoh: Nginx, AWS Application Load Balancer.
2. Berdasarkan Metode Distribusi
- Round Robin: Memutar urutan server secara berurutan.
- Least Connections: Mengarahkan ke server dengan koneksi aktif paling sedikit.
- IP Hash: Menggunakan hash dari alamat IP klien sehingga klien yang sama biasanya diarahkan ke server yang sama.
- Weighted: Memberi bobot pada server berdasarkan kapasitas; server dengan bobot lebih tinggi menerima lebih banyak request.
3. Berdasarkan Lokasi
- Hardware Load Balancer: Perangkat fisik khusus (mis. F5 BIG IP, Citrix ADC).
- Software Load Balancer: Aplikasi yang dijalankan di VM atau container (mis. HAProxy, Nginx, Traefik).
- Cloud Native Load Balancer: Layanan yang disediakan cloud provider (mis. AWS ELB, Google Cloud Load Balancing, Azure Load Balancer).
Cara Kerja Load Balancer
Berikut langkah langkah umum yang terjadi ketika sebuah request masuk:
- Client mengirim request ke alamat IP atau DNS yang mengarah ke load balancer.
- Load balancer menerima request dan melakukan pemeriksaan kesehatan (health check) pada server server backend.
- Algoritma penyeimbang dipilih (mis. round robin, least connections) untuk menentukan server tujuan.
- Request diteruskan ke server yang dipilih, biasanya dengan melakukan NAT (Network Address Translation) atau proxy.
- Server memproses request dan mengirimkan respons kembali ke load balancer.
- Load balancer mengembalikan respons ke client, sehingga client tidak menyadari adanya server backend.
Sebuah situs e commerce memiliki tiga server web (A, B, C). Pada pukul 09.00 server A menerima 150 request per detik, B 70, dan C 30. Load balancer dengan algoritma least connections akan mengarahkan request baru ke server C sampai jumlah koneksi C mendekati A atau B, sehingga beban menjadi lebih merata.
Keuntungan Menggunakan Load Balancer
- Skalabilitas Tambah atau kurangi server secara dinamis tanpa mengganggu layanan.
- High Availability Jika satu server gagal, traffic otomatis dialihkan ke server lain.
- Optimalisasi sumber daya Beban kerja tersebar merata, mengurangi over utilization.
- Keamanan Dapat menambahkan layer firewall, SSL termination, atau DDoS mitigation.
- Pengalaman pengguna Latency berkurang karena request diproses oleh server terdekat atau paling tidak sibuk.
Implementasi Load Balancer dalam Proyek
1. Pilih Tipe yang Sesuai
Jika aplikasi Anda berbasis HTTP/HTTPS dengan kebutuhan routing berbasis URL, pilih load balancer layer 7. Untuk layanan TCP/UDP (mis. database, game server), layer 4 lebih tepat.
2. Konfigurasi Health Check
Pastikan setiap backend memiliki endpoint health check (mis. /healthz) yang mengembalikan status 200. Load balancer akan menandai server tidak sehat bila respons gagal atau lambat.
3. Tentukan Algoritma Penyeimbang
Contoh konfigurasi HAProxy (layer 4):
frontend ft_web bind *:80 default_backend bk_servers backend bk_servers balance leastconn server s1 10.0.0.11:80 check server s2 10.0.0.12:80 check server s3 10.0.0.13:80 check
4. SSL/TLS Termination
Jika menggunakan HTTPS, Anda dapat memutus enkripsi di load balancer untuk mengurangi beban CPU pada server aplikasi. Pastikan sertifikat ditempatkan di load balancer.
5. Monitoring & Logging
Gunakan alat seperti Prometheus + Grafana, atau layanan cloud monitoring untuk melacak metrik: request per second, latency, error rate, dan health status.
6. Uji Coba Beban (Load Testing)
Setelah konfigurasi selesai, lakukan pengujian dengan alat seperti Apache JMeter atau k6 untuk memastikan load balancer dapat menangani traffic target.
7. Skalabilitas Otomatis (Auto Scaling)
Di lingkungan cloud, integrasikan dengan grup auto scaling. Ketika CPU pada server melebihi threshold, cloud provider menambah instance baru, dan load balancer otomatis menambahkan node tersebut ke pool.
| Produk | Layer | Model (HW/Software/Cloud) | Kelebihan | Kekurangan |
|---|---|---|---|---|
| HAProxy | 4 & 7 | Software | Open source, performa tinggi, fleksibel | Konfigurasi berbasis file, kurva belajar |
| Nginx | 7 | Software | Mudah dipasang, dukungan reverse proxy | Kurang fitur advanced seperti SSL offload penuh |
| F5 BIG IP | 4 & 7 | Hardware | Enterprise grade, dukungan teknis kuat | Biaya tinggi |
| AWS Application Load Balancer | 7 | Cloud | Integrasi dengan layanan AWS, auto scaling | Terikat pada AWS, biaya per request |