[ Miroslav Strugarevic @ 16.04.2008. 14:19 ] @
HAProxy je brz i stabilan HTTP load balancer.

U ovom HOWTO ću opisati kako instalirati i podesiti HAProxy da radi balancing na dva web servera. Koristio sam sledeći software: CentOS-5.1 i HAProxy 1.2.17.

Lista servera:
Code:

1. balancer (server na kome se vrti HAProxy)
2. www01    (prvi apache httpd server)
3. www02    (drugi apache httpd server)

Ovako izgleda /etc/hosts (u mom slučaju):
Code:
192.168.22.100 balancer.sajt.com balancer
192.168.22.101 www01.sajt.com    www01
192.168.22.102 www02.sajt.com    www02
192.168.22.111 www.sajt.com      www

Na server-u (balancer) uradite sledeće:
# wget http://haproxy.1wt.eu/download/1.2/src/haproxy-1.2.17.tar.gz
# tar xzvf haproxy-1.2.17.tar.gz
# cd haproxy-1.2.17
# make
# cp haproxy /usr/sbin/haproxy
# cd examples/
# cp haproxy.init /etc/init.d/haproxy
# chmod +x /etc/init.d/haproxy
# groupadd haproxy
# useradd -g haproxy -s /bin/false -d /home/haproxy haproxy
# mkdir /etc/haproxy/
# touch /etc/haproxy/haproxy.cfg
# chown haproxy:haproxy -R /etc/haproxy/
# ifconfig eth0:0 192.168.22.111 netmask 255.255.255.0
# echo "ifconfig eth0:0 192.168.22.111 netmask 255.255.255.0" >> /etc/rc.local
# chkconfig haproxy on

Sada prelazimo na konfiguraciju HAProxy servera. U fajl /etc/haproxy/haproxy.cfg ubacite sledeće:
Code:
global
   maxconn 4096
   uid 500
   gid 500
   daemon

defaults
   mode http
   stats uri /haproxy-stats
   option httplog
   option dontlognull
   retries 3
   redispatch
   maxconn 2000
   contimeout 5000
   clitimeout 50000
   srvtimeout 50000

listen webcluster 192.168.22.111:80
   cookie SERVERID rewrite
   balance roundrobin
   server web01 192.168.22.101:80 cookie web01 check inter 2000 rise 2 fall 5
   server web02 192.168.22.102:80 cookie web02 check inter 2000 rise 2 fall 5

Nakon toga pokrenite HAProxy:
# /etc/init.d/haproxy check
# /etc/init.d/haproxy start

Na serverima web01 i web02 uradite sledeće:
# touch /var/www/html/index.html
# echo `hostname` >> /var/www/html/index.html
# /etc/init.d/httpd start
# chkconfig httpd on

Sada otvorite u Firefox-u virtuelnu ip adresu 192.168.22.111 (u mom slučaju):


Kada uradite refresh stranice dobićete nešto ovog tipa:


Probajte da ugasite apache na jednom od web servera:
# /etc/init.d/httpd stop

Videćete da će HAProxy prosleđivati zahteve samo "živim" serverima.

Možete da vidite i HAProxy statistike na stranici (/haproxy-stats):


Ako neko ima nešto da izmeni ili doda slobodno. Za više informacija posetite sajt: http://haproxy.1wt.eu/

[Ovu poruku je menjao Miroslav Strugarevic dana 16.04.2008. u 17:32 GMT+1]
[ Miroslav Strugarevic @ 16.04.2008. 15:07 ] @
Još jedna bitna stvar: po pravilu bi trebalo da imate dva load balancer-a u slučaju otkaza jednog. To možete vrlo lako da postignete korišćenjem Linux-HA cluster software-a.
[ sEaGhOsT @ 20.02.2010. 12:11 ] @
Miroslav Strugarevic:
Citat:
Još jedna bitna stvar: po pravilu bi trebalo da imate dva load balancer-a u slučaju otkaza jednog. To možete vrlo lako da postignete korišćenjem Linux-HA cluster software-a.
 

U potpuno sti se slazem sa tobom, ukoliko postoji samo jedan load balancer i on crkne, sajt nece funkcionisati bez obzira sto dva servera iza nesmetano rade.

U svakom slucaju, lep tutorijal.
[ Srđan Pavlović @ 20.02.2010. 12:26 ] @
Hvala za tutorijal, dodacu ga u HowTo kolekciju

/edit: izgleda je neko bio dodao vec, nisam video, tek posle edita - u svakom slucaju, tamo je tema...