Haproxy memiliki banyak fitur, salah satu yang paling banyak digunakan adalah load balancing. Load balancing ini sangat penting digunakan bila anda memiliki situs yang sibuk.
Algoritma yang didukung oleh HAProxy
1. Roundrobin
2. Lastconn
3. Source
yang paling sering saya gunakan adalah roundrobin.
Kebutuhan
Untuk menjalankan experiment ini kita membutuhkan paling tidak 3 server. 1 untuk HAProxy dan 2 Webserver (nginx).
nginx1 : 192.168.0.2
nginx2 : 192.168.0.3
1.Install dan Konfigurasi HAProxy
Install HAProxy dengan
apt install haproxy
disini yang terinstall adalah haproxy 1.7.5 (1.7.5-2)
file konfigurasi haproxy berada di /etc/haproxy/haproxy.cfg
, tambahkan dibagian paling bawah konfigurasi tersebut
# tampilkan statistik haproxy listen stats bind :8080 mode http stats enable stats hide-version stats realm Haproxy\ Statistics stats uri / # username dan password untuk login stats auth jaranguda1010:jaranguda1010 frontend main mode http bind *:80 option http-server-close option forwardfor default_backend web-server # server nginx backend web-server balance roundrobin # cek server online option httpchk HEAD / HTTP/1.1\r\nHost:\ localhost # daftar server server nginx1 192.168.0.2:80 check server nginx2 192.168.0.2:80 check
konfigurasi HAProxy tersebut sudah cukup untuk melakukan load-balancing.
2.Install dan Konfigurasi NGINX
Di kedua server (nginx1 dan nginx2) install nginx.
apt install nginx -y
Aktifkan nginx sewaktu booting dan jalankan nginx
systemctl enable nginx
systemctl start nginx
untuk membedakan server satu dengan lainnya, di nginx1
echo 'nginx1' > /var/www/html/index.html
nginx2
echo 'nginx2' > /var/www/html/index.html
3. Testing / Percobaan
Untuk melakukan testing, bisa dilakukan di browser langsung. Dengan membuka IP HAProxy dan merefreshnya beberapa kali.
Lebih mudah lagi kalo pake cli CURL
# looping 10 kali for a in $(seq 1 10); do curl -L 192.168.0.1; done # contoh output <title>192.168.0.2</title> nginx1 <title>192.168.0.3</title> nginx2 .. .. .. <title>192.168.0.3</title> nginx2 <title>192.168.0.2</title> nginx1 <title>192.168.0.3</title> nginx2
Bila menggunakan backend yang sama kita bisa kebingungan server yang mana yang melayani request saat ini, agar tidak bingung dan tanpa perlu melihat log tambahkan di haproxy.conf
dibawah balance roundrobin
http-response add-header Via %s
restart haproxy
systemctl restart haproxy
Coba cek dengan curl
> curl -Li 192.168.0.1 HTTP/1.1 200 OK Server: nginx/1.10.3 Date: Mon, 17 Jun 2019 03:25:27 GMT Content-Type: text/html Content-Length: 34 Last-Modified: Mon, 17 Jun 2019 03:19:20 GMT ETag: "5d0706b8-22" Accept-Ranges: bytes Via: nginx2 <title>192.168.0.3</title> nginx2
disitu terlihat Via: nginx2
3. Statistik/Grafik HAProxy
Buka IP HAProxy:8080 (contoh 192.168.0.1:8080) lalu masukkan username : jaranguda1010 dan password jaranguda1010 seperti yang kita buat di konfigurasi diatas.