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)
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
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
# 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
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
# /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
# 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]