• Indonesian
  • English
  • Setup Load Balancer HAProxy: Panduan Lengkap untuk VPS 2026

    Kecepatan:
    ⏱ 9 min read

    Cara Setup Load Balancer HAProxy di VPS: Panduan Step-by-Step untuk Pemula

    Pas tahun 2021, aku masih kerja sebagai NOC junior di sebuah perusahaan hosting kecil. Ada satu malam yang sampai sekarang masih aku inget: pertama kali disuruh setup load balancer HAProxy buat client, dan jujur aja, waktu itu aku mikir kalau ini cuma soal nulis beberapa baris config terus jalan. Ternyata… gak segampang itu. Malam itu aku belajar banyak hal yang gak bakal pernah diajarin di kelas.

    Kalau dipikir-pikir, konsepnya sebenernya sederhana. Bayangin antrean di Indomaret: satu kasir, semua ngantre panjang. Kasirnya ditambah dua, antrean langsung pecah. Nah, HAProxy itu kayak satpam yang ngaturin pelanggan ke kasir yang lagi kosong, pakai aturan yang bisa kita tentuin sendiri. Tapi di dunia nyata, “satpam” ini kudu cerdas, kudu bisa ngerasain kasir mana yang lagi sibuk, dan kudu tahan banting. Gak cuma nyuruh orang lewat doang.

    Difficulty: Beginner
    Last Updated: Agustus 2026
    Tested On: Ubuntu 22.04 LTS, HAProxy 2.6.x, Nginx 1.22

    Kenapa Server Kamu Butuh Load Balancer?

    Masalah klasiknya selalu sama: server satu, traffik gak nahan. Kamu mulai nemu gejala kayak response time yang makin ngaret, client mulai ngeluh websitenya lelet, atau malah timeout di jam-jam tertentu. Coba cek CPU usage-nya, udah mentok 90 persen ke atas terus. Load average di atas jumlah core. Itu semua adalah jeritan server yang lagi bilang, “aku kewalahan, tolong!”

    Terus banyak orang langsung jawab: “ya udah upgrade aja server-nya.” Upgrade RAM, upgrade CPU, pindah ke plan yang lebih gede. Sah-sah saja sih, tapi coba dipikir lagi — kamu bakal bayar mahal buat resource yang cuma kepake di jam sibuk. Di luar jam itu, server nganggur. Daripada gitu, kenapa gak bagi beban ke dua atau tiga server yang harganya lebih masuk akal? Nah, itu esensi dari load balancing: bukan nambah satu mesin raksasa, tapi pakai beberapa mesin biasa yang kerjanya barengan.

    Dan di sinilah HAProxy masuk. HAProxy itu open source, gratis, udah matang, dan dipake di ribuan production server di seluruh dunia. Instalnya gampang, config-nya relatif simpel, dan yang paling penting dia bisa ngatur banyak backend sekaligus lengkap dengan health check yang bisa diandalin. Buat VPS yang jalanin Nginx atau Apache, HAProxy duduk paling depan dan jadi pintu masuk semua request.

    Yang Perlu Kamu Siapkan

    Sebelum mulai, kita rapikan dulu peta mainan yang mau dipakai. Buat panduan ini, skenarionya gini:

    • Dua server web (Nginx) yang masing-masing jalanin aplikasi yang sama — sebut aja web-1 dan web-2
    • Satu VPS khusus buat HAProxy sebagai load balancer
    • Setiap server udah dikunci firewall-nya, cuma port yang perlu yang kebuka

    diagram alur user request masuk ke load balancer HAProxy lalu diteruskan ke dua server web di VPS

    Jadi alurnya gini: user akses domain.com → masuk ke HAProxy → diteruskan ke web-1 atau web-2. Kalau salah satu server web mati atau lemot, HAProxy otomatis ngirim traffik ke server yang masih sehat. Kalau server web-mu belum ada yang jalanin Nginx, cek dulu panduan install Nginx di VPS biar gak pusing di tengah jalan.

    Langkah 1: Install HAProxy

    Di Ubuntu 22.04, HAProxy udah ada di repositori resmi. Tinggal jalanin perintah ini sebagai root atau pakai sudo:

    apt update
    apt install haproxy -y
    haproxy -v

    Output yang diharapkan kurang lebih kayak gini:

    HAProxy version 2.6.x
    Copyright 2000-2022 Willy Tarreau et al.

    Kalau versinya udah muncul, berarti install berhasil. Catatan kecil: di distribusi yang lebih baru, versi HAProxy-nya bisa beda-beda dikit, tapi buat kebutuhan dasar sih gak masalah.

    Langkah 2: Kenalan Sama Struktur Config

    File config utama HAProxy ada di /etc/haproxy/haproxy.cfg. Sebelum sentuh-sentuh, mending kita pahamin dulu empat seksi utama yang paling sering kepake:

    • global — settingan proses HAProxy itu sendiri, kayak user, jumlah koneksi maksimal, dan opsi SSL
    • defaults — nilai default yang dipake semua frontend dan backend di bawahnya
    • frontend — pintu masuk request, tempat nentuin IP dan port yang didengerin
    • backend — tujuan request, di sini daftar server web yang mau dibagi bebannya

    Ibarat restoran, frontend itu bagian pelayanan yang nerima tamu, backend itu dapurnya. Tamu masuk lewat depan, terus diarahkan ke meja yang… eh, dapur yang lagi kosong.

    Langkah 3: Bikin Config Dasar

    Oke, waktunya bikin config. Aku saranin backup dulu config aslinya biar aman:

    cp /etc/haproxy/haproxy.cfg /etc/haproxy/haproxy.cfg.bak

    Terus buka file-nya dan ganti isinya dengan config di bawah ini. Tenang, tiap barisnya bakal aku jelasin pelan-pelan.

    global
        log /dev/log local0
        maxconn 50000
        user haproxy
        group haproxy
    
    defaults
        mode http
        log global
        option httplog
        option dontlognull
        retries 3
        timeout connect 5s
        timeout client 30s
        timeout server 30s
    
    frontend http-in
        bind *:80
        default_backend web-servers
    
    backend web-servers
        balance roundrobin
        option httpchk GET /health
        server web-1 10.0.0.11:80 check
        server web-2 10.0.0.12:80 check

    Nih, breakdown singkatnya:

    • mode http bikin HAProxy kerja di layer 7, jadi bisa baca isi request HTTP
    • balance roundrobin artinya request dibagi giliran rata ke setiap server
    • option httpchk GET /health ini health check. HAProxy bakal ngecek URL /health tiap beberapa detik; kalau server gak jawab, dia langsung dikeluarin dari daftar backend
    • check di akhir baris server itu yang ngeaktifin health check buat server tersebut

    Buat alamat IP-nya, ganti sesuai server web kamu ya. Jangan lupa aplikasi web-nya juga bikin endpoint /health yang balikin status 200. Simpel banget — bikin file kosong atau response “ok” aja udah cukup.

    Langkah 4: Validasi Config Sebelum Jalan

    Ini kebiasaan yang wajib aku tanamkan ke semua orang yang aku ajarin: selalu cek config sebelum restart service. HAProxy punya alat cek bawaan:

    haproxy -c -f /etc/haproxy/haproxy.cfg

    Kalau config-nya bener, output-nya kurang lebih gini:

    Configuration file is valid

    Kalau ada yang salah, dia bakal nunjukin baris mana yang bermasalah. Jangan pernah skip langkah ini. Dulu aku pernah skip, hasilnya? Service gak mau jalan dan client lagi nunggu. Pelajaran mahal.

    Kalau udah valid, baru restart:

    systemctl restart haproxy
    systemctl status haproxy

    Biasanya service langsung active (running).

    Langkah 5: Testing dan Cek Log

    Nah, sekarang bagian paling seru. Dari server lain, coba akses domain atau IP load balancer-nya beberapa kali:

    curl -I http://lb.example.com
    curl http://lb.example.com

    Buat mastiin traffik kebagi rata, cek log HAProxy:

    tail -f /var/log/haproxy.log

    Kamu bakal liat baris kayak gini:

    web-servers/web-1 0/0/0/5/6 200 1234 - - ---- 2/2/1/1/0 0/0 "GET / HTTP/1.1"
    web-servers/web-2 0/0/0/4/5 200 1234 - - ---- 2/2/1/1/0 0/0 "GET / HTTP/1.1"

    Perhatiin bagian paling awal ada nama backend dan server yang ngelayani request. Kalau web-1 dan web-2 muncul bergantian, berarti round robin-nya jalan. Kalau cuma satu terus, ada yang salah dengan health check-nya. Buat mastiin health check-nya bener-bener jalan, coba matiin sebentar salah satu server web, terus perhatiin log-nya — HAProxy bakal nyatet kalau server itu down dan gak ngirim traffik ke sana lagi. Gila kan, seru banget ngeliatnya.

    Omong-omong soal log, ini juga waktu yang pas buat mulai biasain monitoring. Kalau nanti traffik kamu makin gede, kamu bakal butuh pandangan yang lebih jelas soal kondisi server. Panduan monitoring server pakai Netdata ini bisa jadi langkah pertama yang bagus.

    Langkah 6: Buka Firewall

    Jangan lupa, HAProxy-nya sendiri juga kudu bisa ditelepon dari luar. Pastikan port 80 (dan nanti 443) kebuka di firewall VPS:

    ufw allow 80/tcp
    ufw allow 443/tcp

    Kalau pakai cloud provider kayak DigitalOcean atau Vultr, cek juga security group atau firewall panelnya. Detail lengkap soal setup firewall bisa dibaca di panduan setting firewall VPS ini.

    Tabel Troubleshooting Cepat

    Berikut tabel yang dulu banget aku harap ada pas baru belajar HAProxy:

    Gejala Kemungkinan Penyebab Solusi
    502 Bad Gateway Semua backend down atau gak bisa dijangkau Cek status backend di log, perbaiki health check
    503 Service Unavailable Gak ada server yang lolos health check Cek endpoint /health di masing-masing server
    Traffik cuma ke satu server Health check salah atau server lain down Cek log health check, verify endpoint /health
    Koneksi lemot banget Timeout kekecilan atau server kewalahan Naikin timeout, tambah backend server
    Config valid tapi service gagal start Port 80 udah kepake proses lain Perbaiki bind, matiin service lain atau ganti port

    Hal-hal yang Dulu Bikin Aku Muter-muter

    Oke, ini curhat dikit biar kamu gak ngulangin perjalananku yang berputar-putar. Pertama, sticky session. Kalau aplikasi kamu nyimpen session di dalam server lokal (bukan di database atau Redis), request dari user yang sama bisa nyasar ke server beda, dan session-nya ilang. Solusinya pakai cookie: cookie SRV insert indirect nocache di frontend dan cookie web-1 / cookie web-2 di masing-masing baris server. Buat penjelasan lebih dalam soal session di aplikasi PHP, artikel setup Redis ini bisa jadi bacaan lanjutan yang bagus.

    Kedua, jangan anggap enteng health check. Health check yang cuma ngecek port aja (tanpa option httpchk) itu lumayan buta — server bisa aja balas di port 80 tapi sebenarnya aplikasinya lagi error. Health check yang bener harus ngecek sesuatu yang mewakili “aplikasi ini hidup”. Makanya tadi aku saranin endpoint /health khusus.

    Ketiga, dan ini penting banget: HAProxy yang satu itu single point of failure. Kalau HAProxy-nya mati, semua request berhenti, sehebat apapun backend-nya. Buat skala production, minimal pikirin soal failover atau pakai dua HAProxy dengan keepalived (VRRP). Tapi itu cerita lain, nanti-nanti deh.

    Kesimpulan Singkat

    Load balancer itu bukan teknologi yang gimana-gimana amat, tapi kalau salah setup, dampaknya ke seluruh production. Mulai dari yang sederhana dulu: pahami struktur config, bikin health check yang bener, selalu validasi config sebelum restart, dan jangan lupa firewall. Dari situ kamu bisa naik ke level berikutnya — SSL termination, zero-downtime reload, sampai high availability. Kalau kamu udah siap naik level, artikel setup HAProxy production-ready dengan SSL termination bisa jadi lanjutannya.

    Q: Apakah HAProxy cuma bisa buat layanan HTTP?

    Gak juga. HAProxy bisa jalan di mode tcp buat layanan non-HTTP kayak MySQL, SMTP, WebSocket, atau PostgreSQL. Cukup ganti mode http jadi mode tcp di bagian yang relevan. Tapi buat layanan database, pastikan aplikasi kamu emang bisa handle koneksi yang berpindah-pindah server.

    Q: Pasang SSL di HAProxy atau di server web?

    Dua-duanya bisa. Cara paling umum adalah SSL termination di HAProxy, jadi sertifikat dihandle sekali di depan, lalu trafik ke belakang pake HTTP biasa. Tapi kalau butuh end-to-end encryption, bisa juga pakai mode tcp SSL passthrough. Masing-masing ada trade-off-nya.

    Q: Bagaimana caranya kalau satu server web harus dapet beban lebih besar?

    Pakai balance weighted roundrobin. Di config HAProxy kamu bisa kasih nilai weight, contohnya server web-1 10.0.0.11:80 check weight 3 dan web-2 check weight 1. Artinya web-1 dapet tiga kali lipat request dibanding web-2.

    Q: Satu HAProxy doang cukup buat production?

    Buat beban kecil sampai menengah, cukup kok. Tapi ingat, HAProxy jadi single point of failure. Kalau traffik kamu kritis dan butuh uptime tinggi, pertimbangkan dua HAProxy dengan keepalived supaya ada failover otomatis.

    Author: Syslog Solutions — NOC & Server Management Team. We handle 500+ servers daily, from shared hosting to enterprise dedicated infrastructure.

    Semoga cerita malam itu ada gunanya buat kamu yang lagi mau mulai belajar load balancer. Kalau kamu pernah ngalamin momen “kok segini ribetnya” pas setup HAProxy pertama kali, atau punya cerita horor lain soal load balancer, share di komentar dong. Mugi-mugi artikel ini jadi penolong buat kamu yang lagi kesusahan di malam hari, kayak aku dulu.