MAN HA Proxy

Pendahuluan
HAProxy adalah solusi cepat dan handal yang menawarkan ketersediaan tinggi, load balancing, dan proxy untuk aplikasi TCP dan berbasis HTTP. HAProxy cocok untuk situs web yang berjalan dengan beban sangat tinggi. Mendukung puluhan hingga ribuan koneksi dengan hardware yang ada saat ini. Pengintegrasian HAProxy ke dalam arsitektur yang ada sangat mudah dan tanpa risiko.

Syarat sistem
Untuk mendukung ketersediaan layanan yang dibangun maka direkomendasikan instalasi HAProxy dilakukan diatas Sistem Operasi Linux Debian Lenny x86_64

Sekenario
Terdapat 2 web server apache yang akan di load balance dengan IP 10.0.1.6 (httpd1) dan 10.0.1.66 (httpd2) yang akan berada di belakang server HAProxy.

Pemasangan apache2 untuk HAProxy
perbaharui repositori sudo apt-get update

pasang apache2 sudo apt-get install apache2

Konfigurasi backend server httpd1 dan httpd2

 * edit file /etc/apache2/apache2.conf ubah %h dengan %{X-Forwarded-For}i

vi /etc/apache2/apache2.conf

[...] #LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined LogFormat "%{X-Forwarded-For}i %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined [...]


 * HAProxy akan secara terus menerus melakukan pengecekan terhadap ketersediaan backend server melalui permintaan terhadap file check.txt yang akan mengacaukan log data pengakses, untuk mencegah hal tersebut maka edit konfigurasi /etc/apache2/sites-available/default agar akses permintaan terhadap file check.txt tidak di log

vi /etc/apache2/sites-available/default

[...] SetEnvIf Request_URI "^/check\.txt$" dontlog CustomLog /var/log/apache2/access.log combined env=!dontlog [...]

Pengecekan
Buat file untuk pengecekan check.txt di backend server (httpd1/httpd2) touch /var/www/check.txt

Pemasangan HAProxy
sudo apt-get install haproxy

Konfigurasi HAProxy
Berkas konfigurasi HAProxy berlokasi di /etc/haproxy/haproxy.cfg edit dengan editor text

vi /etc/haproxy/haproxy.cfg

global log 127.0.0.1 local0 log 127.0.0.1 local1 notice maxconn 4096 user haproxy group haproxy defaults log global mode http option httplog option dontlognull retries 3 option redispatch maxconn 2000 contimeout 5000 clitimeout 50000 srvtimeout 50000 listen http80 10.0.1.60:80 mode http stats enable stats auth user:password balance roundrobin cookie JSESSIONID prefix option httpclose option forwardfor option httpchk HEAD /check.txt HTTP/1.0 server httpd1 10.0.1.6:80 cookie A check server httpd2 10.0.1.66:80 cookie B check

otomatisasi saat boot
edit file /etc/default/haproxy berikan angka 1 pada opsi ENABLED vi /etc/default/haproxy

# Set ENABLED to 1 if you want the init script to start haproxy. ENABLED=1 # Add extra flags here. #EXTRAOPTS="-de -m 16"