Keepalived

Iš Žinynas.
17:45, 14 gruodžio 2016 versija, sukurta \dev\null (Aptarimas | indėlis) (pictures :-D)
(skirt) ← Ankstesnė versija | Dabartinė versija (skirt) | Vėlesnė versija → (skirt)
Jump to navigation Jump to search

Šiame straipsnyje bus aprašoma kaip sukonfigūruoti Aukšto pasiekiamumo Linux serverį su slankiojančiu IP (angl. floating IP) pasitelkiant keepalived daemon'ą jog jis veiktų kaip Master > Slave (dviejuose serveriuose) ir priskirtų aktyviam serveriui floating IP. Bus naudojamas DigitalOcean API (reikalingas digital ocean api auth key).

Diegimas[keisti]

apt-get install keepalived

Konfigūravimas[keisti]

Naudosime vidinius tinklo ip (galima naudoti ir išorinius):

  • eth1 - vidinis tinklo interfeisas.
  • X.X.X.X - Master serverio ip.
  • Y.Y.Y.Y - Slave serverio ip.
  • PA55 - Slaptažodis komunikavimui tarp serverių.
  • chk_nginx - tikrinamas nginx serviso gyvybiškumas (galima pridėti ir papildomų).
  • virtual_router_id - abiejuose serveriuose turi būti vienodas
  • state - Pirmajame turi būti MASTER, antrajame BACKUP.
  • priority - Pagrindiniame serveryje turi būti didesnis.
  • /etc/keepalived/master.sh - Scriptas kurį leisime aktyviame serveryje (floating ip priskyrimui)

Master serveris[keisti]

/etc/keepalived/keepalived.conf:

vrrp_script chk_nginx {
   script "pidof nginx"
   interval 2
}
vrrp_instance VI_1 {
   interface eth1
   state MASTER
   priority 200
   advert_int 1
   virtual_router_id 199
unicast_src_ip X.X.X.X
   unicast_peer {
         Y.Y.Y.Y
   }
  track_script {
       chk_nginx
   }
 authentication {
       auth_type PASS
       auth_pass PA55
   }
  notify_master /etc/keepalived/master.sh
}

Slave serveris[keisti]

/etc/keepalived/keepalived.conf:

vrrp_script chk_nginx {
   script "pidof nginx"
   interval 2
}
vrrp_instance VI_1 {
   interface eth1
   state BACKUP
   priority 100
   advert_int 1
   virtual_router_id 199
unicast_src_ip Y.Y.Y.Y
   unicast_peer {
          X.X.X.X
   }
   track_script {
       chk_nginx
   }
   authentication {
       auth_type PASS
       auth_pass PA55
   }
   notify_master /etc/keepalived/master.sh
}

/etc/keepalived/master.sh scriptas[keisti]

Būtinai reiktų nusistatyti digital ocean api key

Make token digocean.png

ir floating ip prieš naudojant šį scriptą. 

Fip assign to primary.png


Kaip matote jis paleidžia žemiau esantį assign-ip scriptą kurį aprašysiu žemiau šio straipsnio.

#!/bin/sh
export DO_TOKEN='JUSU_DIGITALOCEAN_API_KEY'
IP='FLOATING_IP_ADRESAS'
ID=$(curl -s http://169.254.169.254/metadata/v1/id)
HAS_FLOATING_IP=$(curl -s http://169.254.169.254/metadata/v1/floating_ip/ipv4/active)
if [ $HAS_FLOATING_IP = "false" ]; then
    n=0
    while [ $n -lt 10 ]
    do
        /usr/local/bin/assign-ip $IP $ID && break
        n=$((n+1))
        sleep 3
    done
fi

/usr/local/bin/assign-ip scriptas[keisti]

sudo curl -L -o /usr/local/bin/assign-ip http://do.co/assign-ip
sudo chmod +x /usr/local/bin/assign-ip

Debuginimas[keisti]

Debuginimas paprastas, pirmiausia pažiūrėkite ar nėra paleistas keepalived daemonas, tuomet jį leiskite šitaip, abejuose serveriuose ir bandykite restart/shutdown, ar dar ką nors (t.y nginx service restart).

keepalived -D -n

Šitaip paleistas servisas visą stdout'ą mes ir foreground'ą ir bus aišku ką ir kaip padarėte negerai bei galite taisytis.