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).

HAProxy : 192.168.0.1
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.
haproxy statistic

Leave a comment

Your email address will not be published. Required fields are marked *