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 }