Keepalived

Allikas: Kuutõrvaja

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
}