Sebelumnya, kami telah membahas tentang apa itu HAProxy. Saat ini, kami akan melanjutkan panduannya tentang cara install HAProxy sebagai load balancer di Ubuntu.
Seperti yang telah kita ketahui bersama, HAProxy digunakan untuk membagi beban trafik antara beberapa server backend yang berjalan di belakangnya. Hal ini berfungsi untuk meningkatkan ketersediaan, skalabilitas, performa, dan keamanan aplikasi ketika diakses.
Pada artikel ini, kami akan memberikan panduan cara install HAProxy sebagai load balancer di Ubuntu. Namun sebelum kami bahas cara install dan konfigurasinya, terlebih dahulu pastikan bahwa Anda telah mempersiapkan sistem berikut.
Persiapan Sistem
Untuk menjalankan metode Load Balancing, kita membutuhkan setidaknya 3 node server atau VPS. 1 server (frontend) bertindak sebagai server load balancer, dan 2 server (backend) berfungsi untuk melayani request atau menampilkan konten permintaan dari client.
Pada demo ini, kami menggunakan 3 VPS KVM dari Rumahweb. Berikut persiapan sistem yang kami gunakan:
- OS Linux Ubuntu 20.04 LTS
- 1 Server HAProxy dengan RAM 2 GB : 203.175.8.226 (Load balancer)
- 1 Server Backend1 dengan RAM 4 GB : 203.175.8.223
- 1 Server Backend2 dengan RAM 4 GB : 203.175.8.224
BACA JUGA : Apa itu Proxy dan Cara Kerjanya
Install dan Konfigurasi HAProxy
Berikut step by step install dan konfigurasi HAProxy yang digunakan sebagai load balancer.
Step 1. Install Server Backend
Pada artikel kali ini, kami akan menggunakan apache web server sebagai server backend yang bertugas merespon permintaan client melalui server HAProxy. Berikut langkah instalasi web servernya.
- Login ke VPS dengan akses root, dan melakukan update package pada sistem.
apt update && apt-get upgrade -y
- Install Web Server pada kedua node dengan perintah:
apt install apache2
- Setelah melakukan instalasi, pastikan bahwa web server telah running atau belum dengan perintah berikut.
systemctl status apache2
- Modifikasi file website pada masing-masing backend, dengan melakukan edit pada direktori /var/www/html.
Server backend1
# rm -rf /var/www/html/index.html
# nano /var/www/html/index.html
# <h1>server backend1</h1>
Server backend2
# rm -rf /var/www/html/index.html
# nano /var/www/html/index.html
# <h1>server backend2</h1>
- Setelah melakukan modifikasi pada konten, maka kita akan lakukan restart untuk service web servernya dengan perintah berikut.
# systemctl restart apache2
# systemctl status apache2
- Jika layanan web server telah berjalan dengan baik, maka kita dapat melakukan tes akses pada server backend. Pastikan menampilkan konten masing masing sesuai servernya.
- akses ke webserver 1 dengan IP 203.175.8.223 seperti contoh tampilan berikut.
- akses ke webserver 2 dengan IP 203.175.8.224 seperti berikut.
BACA JUGA : Proxy Server: Pengertian dan Manfaatnya
Step 2. Install HAProxy sebagai Load Balancer
Berikut adalah cara install HAProxy sebagai server load balancer di Ubuntu 20.04.
- Instalasi HAProxy
sudo apt install haproxy -y
- Konfigurasi awal untuk HAProxy
Haproxy memiliki file konfigurasi default pada file /etc/haproxy/haproxy.cfg.
- Pada section global berikut berisi tentang konfigurasi untuk SSL, informasi akses log, dan grup user untuk menjalankan HAProxy.
global
log /dev/log local0
log /dev/log local1 notice
chroot /var/lib/haproxy
stats socket /run/haproxy/admin.sock mode 660 level admin expose-fd listeners
stats timeout 17s
# user dan group Haproxy
user haproxy
group haproxy
daemon
# Lokasi ssl yang dimiliki, diatur sesuai path
ca-base /etc/ssl/certs
crt-base /etc/ssl/private
# Bagian ssl cipher untuk enkripsi
ssl-default-bind-ciphers ECDH+AESGCM:DH+AESGCM:ECDH+AES256:DH+AES256:ECDH+AES128:DH+AES:RSA+AESGCM:RSA+AES:!aNULL:!MD5:!DSS
ssl-default-bind-options no-sslv3
- Pada section default, berisi tentang nilai konfigurasi dari berbagai node. Kita dapat melakukan custom pada bagian nilai dan halaman error.
defaults
log global
mode http
option httplog
option dontlognull
timeout connect 11s
timeout client 7s
timeout server 4s
timeout http-request 15s
errorfile 400 /etc/haproxy/errors/400.http
errorfile 403 /etc/haproxy/errors/403.http
errorfile 408 /etc/haproxy/errors/408.http
errorfile 500 /etc/haproxy/errors/500.http
errorfile 502 /etc/haproxy/errors/502.http
errorfile 503 /etc/haproxy/errors/503.http
errorfile 504 /etc/haproxy/errors/504.http
Keterangan kode:
- Bagian mode, digunakan untuk menentukan metode load balancing, apakah kita menggunakan metode tcp atau http.
- Bagian timeout, berisi tentang penyesuaian transfer data, bagaimana waktu koneksi antar server diatur.
- Timeout connect : waktu yang diperlukan Haproxy untuk membuat koneksi dengan Server backend.
- Timeout client : delay yang diperlukan client untuk mengirim data ke server.
- Timeout server : waktu tunggu server untuk mengirim data.
- Timeout http-request : waktu tunggu client mengirimkan response http secara lengkap.
- Pada Section Frontend, menjelaskan bagaimana akses ke load balancer, ketika akses maka permintaan akan diteruskan kepada server backend.
frontend my_frontend
bind *:80
mode http
default_backend my_backend
Note : kita dapat menyesuaikan nama pada parameter load balancing, penamaan harus sesuai dengan node yang dipanggil.
- Pada section Backend, kota dapat mengatur node server yang akan menjadi target load balancing, seperti pada contoh berikut.
backend my_backend
mode http
balance roundrobin
option forwardfor
http-request set-header X-Forwarded-Port %[dst_port]
http-request add-header X-Forwarded-Proto https if { ssl_fc }
option httpchk HEAD / HTTP/1.1rnHost:localhost
server backend1 203.175.8.223:80
server backend2 203.175.8.224:80
Keterangan kode:
- Bagian backend, dinamai sesuai nama yang dipanggil pada frontend.
- Balance roundrobin berarti kita akan menggunakan metode load balancing round robin, dimana setiap request dikirimkan bergantian ke seluruh server node yang ada.
- HTTP request berarti kita akan meneruskan permintaan ke server backend.
- Server adalah node server target load balancing, kita dapat mengisi ip address dan jumlah server yang kita miliki, pada panduan ini kita akan menggunakan 2 server sebagai backend.
- Pada section selanjutnya, kita akan membuat kode untuk akses ke halaman statistik Haproxy.
listen monitoring
bind *:8080
stats enable
stats hide-version
stats refresh 10s
stats show-node
stats auth username:password
stats uri /monitoring
Note: kita dapat mengisi username dan password sesuai dengan yang kita inginkan.
Semua section telah selesai diinputkan, berikut adalah hasil akhir dari konfigurasi yang ada di file /etc/haproxy/haproxy.cfg.
global
log /dev/log local0
log /dev/log local1 notice
chroot /var/lib/haproxy
stats socket /run/haproxy/admin.sock mode 660 level admin expose-fd listeners
stats timeout 17s
user haproxy
group haproxy
daemon
ca-base /etc/ssl/certs
crt-base /etc/ssl/private
ssl-default-bind-ciphers ECDH+AESGCM:DH+AESGCM:ECDH+AES256:DH+AES256:ECDH+AES128:DH+AES:RSA+AESGCM:RSA+AES:!aNULL:!MD5:!DSS
ssl-default-bind-options no-sslv3
defaults
log global
mode http
option httplog
option dontlognull
timeout connect 11s
timeout client 7s
timeout server 4s
timeout http-request 15s
errorfile 400 /etc/haproxy/errors/400.http
errorfile 403 /etc/haproxy/errors/403.http
errorfile 408 /etc/haproxy/errors/408.http
errorfile 500 /etc/haproxy/errors/500.http
errorfile 502 /etc/haproxy/errors/502.http
errorfile 503 /etc/haproxy/errors/503.http
errorfile 504 /etc/haproxy/errors/504.http
frontend my_frontend
bind *:80
mode http
default_backend my_backend
backend my_backend
mode http
balance roundrobin
option forwardfor
http-request set-header X-Forwarded-Port %[dst_port]
http-request add-header X-Forwarded-Proto https if { ssl_fc }
option httpchk HEAD / HTTP/1.1rnHost:localhost
server node1 203.175.8.223:80
server node2 203.175.8.224:80
listen monitoring
bind *:8080
stats enable
stats hide-version
stats refresh 10s
stats show-node
stats auth username:password
stats uri /monitoring
Simpan file dan restart layanan HAProxy.
# systemctl start haproxy
# systemctl enable haproxy
# sudo systemctl restart haproxy
Pengujian Load Balancer
Akses ke server load balancer dengan ip 203.175.8.226 maka akan menampilkan konten dari server 1 dan 2 secara bergantian.
Saat diakses menampilkan server backend1, dan ketika di refresh pada browser akan dialihkan ke server backend ke 2
Untuk memastikan load balancer bekerja dengan baik, kita dapat menjalankan curl seperti berikut:
curl -I http://203.175.8.226
HTTP/1.1 200 OK
Kita juga dapat mengakses halaman statistik HAProxy pada http://203.175.8.226:8080/monitoring
Login dengan username dan password yang telah dibuat sebelumnya.

Sampai tahap ini, proses install load balancing HAProxy di Ubuntu 20.04 telah selesai. Berhubung proses instalasinya cukup panjang, kami sarankan agar Anda membaca secara detail tahap demi tahap instalasi dan konfigurasinya.
Selain itu, pastikan Anda telah mengkonfigurasi server backend dengan benar, agar request proses yang masuk dalam diresponse dan diteruskan oleh HAProxy.
Demikian cara install HAProxy sebagai load balancer di Ubuntu 20.04, semoga bermanfaat.