# Instalacja
pakiety: haproxy keepalived
# Konfiguracja
– Warto dodać do pliku /etc/hosts wpisy odnośnie wykorzystywanych serwerów WEB.
/etc/haproxy/haproxy.cfg
na obu HA taka sama komfiguracja
defaults
mode tcp
log global
option tcplog
frontend www [ruch wchodzący do HAProxy]
bind anchor_IP:80 (adres wspólnego IP)
default_backend nginx
backend nginx [ruch wypychane na serwery końcowe]
balance roundrobin
mode tcp
server web1 private_ip:80 check
server web2 private_ip:80 check
Żeby HAProxy mogło przypisać się do naszego głównego IP na drugiej maszynie (czyli tej która w danej chwili jest zapasowa) potrzebujemy zezwolić na taką akcję poprzez dodanie net.ipv4.ip_nonlocal_bind=1 w /etc/sysctl.conf (po dodaniu wpisu przeładuj sysctl -p).
– W przypadku systemów z rodziny RHEL należy ogarnąć jeszcze SELinuxa:
Do pliku /etc/firewalld/services/haproxy.xml wklej:
<?xml version=”1.0″ encoding=”utf-8″?>
<service>
<short>HAProxy</short>
<description>HAProxy load-balancer</description>
<port protocol=”tcp” port=”80″/>
</service>
cd /etc/firewalld/services
restorecon haproxy.xml
chmod 640 haproxy.xml
firewall-cmd –permanent –add-service=haproxy
firewall-cmd –reload
# Usługa
haproxy
keepalived
# Keepalived
Nasłuchuje co się dzieje z LoadBalancerami i jak padnie główny to przeniesie ruch na drugi serwer zachowując działanie witryny.
/etc/keepalived/keepalived.conf [master]
vrrp_script chk_haproxy {
script „killall -0 haproxy” # verify the pid existance
interval 2 # check every 2 seconds
weight 2 # add 2 points of prio if OK
}
vrrp_instance VI_1 {
interface eth0 # interface to monitor
state MASTER
virtual_router_id 51 # Assign one ID for this route
priority 101 # 101 on master, 100 on backup
virtual_ipaddress {
192.168.0.99 # the virtual IP
}
track_script {
chk_haproxy
}
}
na slave modyfikujemy priority i state:
vrrp_script chk_haproxy {
script „killall -0 haproxy” # verify the pid existance
interval 2 # check every 2 seconds
weight 2 # add 2 points of prio if OK
}
vrrp_instance VI_1 {
interface eth0 # interface to monitor
state BACKUP
virtual_router_id 51 # Assign one ID for this route
priority 100 # 101 on master, 100 on backup
virtual_ipaddress {
192.168.0.99 # the virtual IP
}
track_script {
chk_haproxy
}
}
Daemony keepalived gadają ze sobą i sprawdzają czy drugi jeszcze żyje. Jeżeli umarł to przejmują IP.
– Sprawdzenie komunikacji pomiędzy daemonami keepalived
tcpdump -i <interfejs do którego podpięty jest Keepalived> vrrp -c 10 -v