Keepalived
Sissejuhatus
Keepalived tarkvara abil on üsna lihtsalt võimalik korraldada kahe või enama arvuti nn aktiivset/passiivset klastrit kasutades VRRP MAC aadressi põhist protokolli. Klastri igal arvutil on oma individuaalne IP aadress, ning lisaks on kogu klastri peale üks virtuaalne IP aadress, millelt on kättesaadav klastri pakutav teenus. Sõltuvalt sellest, kuidas on klastri osalised masteri osas kokku leppinud, on virtuaalne IP parasjagu masteriks oleva arvuti küljes ja teised on nö kõrval-seisvas (ingl. k. standby) asendis. Sarnast võimekust pakub ka CARP protokolli põhine mõnevõrra lihtsam UCARP või heartbeat.
Paigaldamine
CentOSis paigaldamiseks tuleb mõlemal nodel käivitada järgnevad käsud
# yum install keepalived # systemctl enable keepalived
Seadistus
Seadistame kaks keepalived serverit millest üks master ja teine slave. Mõlemad jagavad omavahel 192.168.0.5 virtuaalst aadressi.
Master serveri /etc/keepalived/keepalived.conf
global_defs {
notification_email {
info@test.ee
}
notification_email_from keepalived@test.ee
smtp_server 192.168.0.10
smtp_connect_timeout 30
router_id minginimi
vrrp_skip_check_adv_addr
vrrp_garp_interval 0
vrrp_gna_interval 0
}
vrrp_instance VI_1 {
interface eth0 # interface to monitor
state MASTER
virtual_router_id 1
priority 101
virtual_ipaddress {
192.168.0.5
}
}
Slave serveri /etc/keepalived/keepalived.conf
global_defs {
notification_email {
info@test.ee
}
notification_email_from keepalived@test.ee
smtp_server 192.168.0.10
smtp_connect_timeout 30
router_id minginimi
vrrp_skip_check_adv_addr
vrrp_garp_interval 0
vrrp_gna_interval 0
}
vrrp_instance VI_1 {
interface eth0 # interface to monitor
state BACKUP
virtual_router_id 1
priority 100
virtual_ipaddress {
192.168.0.5
}
}
Võimalik on panna keepalived programmi enda IP aadressi masterilt slave serverile vahetama ka teataval tingimusel. Näiteks kui serveris enal haproxy protsess ei tööta
vrrp_script chk_haproxy {
script "pidof haproxy" # check the haproxy process
interval 2 # every 2 seconds
weight 2 # add 2 points if OK
}
Ning vrrp_instance VI_1 alla tuleb lisada
track_script {
chk_haproxy
}
Kuid võimalik on käivitada ka keerukamaid skripte
vrrp_script chk_myscript {
script "/usr/local/bin/mycheckscript.sh"
interval 2 # check every 2 seconds
fall 2 # require 2 failures for KO
rise 2 # require 2 successes for OK
}