HAProxy + keepalived

# 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

W celu świadczenia usług na najwyższym poziomie stosujemy pliki cookies, które będą zamieszczane w Państwa urządzeniu (komputerze, laptopie, smartfonie). W każdym momencie mogą Państwo dokonać zmiany ustawień Państwa przeglądarki internetowej i wyłączyć opcję zapisu plików cookies. View more
Zaakceptuj