Outils pour utilisateurs

Outils du site


admin:procedures:basculer_cluster

Ceci est une ancienne révision du document !


Basculer le cluster d'un noeud à l'autre

Avant d'effectuer une telle manipulation, relire la page d'architecture du cluster pour être sûr de comprendre l'architecture en place.

Arrêt propre d'un hyperviseur

Suivre les procédures de redémarrage (redemarrer-maine ou redemarrer-coon) en s'arrêtant à la partie reboot ici remplacé par halt.

Basculer de maine à coon

Arrêter maine le cas échéant.

Basculer la FIP vers coon, soit par la console Hetzner soit par le script suivant:

curl -u LOGIN:PASSWORD https://robot-ws.your-server.de/failover/88.99.233.240 \
     -d active_server_ip=94.130.8.3

LOGIN et PASSWORD étant les identifiants de Hetzner (voir la procédure concernant Pass).

Sur coon, ajouter les IP virtuelles:

ip addr add  88.99.233.240/32 dev enp0s31f6
ip route replace default via 94.130.8.1 dev enp0s31f6 src 88.99.233.240
ip route replace 94.130.8.1 dev enp0s31f6 proto kernel scope link src 88.99.233.240

Toujours sur coon, éditer /etc/firehol/firehol.conf et décommenter la ligne “fip=” et lancer un firehol start

Vérifier l'état de drbd:

# drbd-overview 
 0:maine/0  Connected Secondary/Primary UpToDate/UpToDate 
 1:coon/0   Connected Primary/Secondary UpToDate/UpToDate /var/lib/libvirt/coon ext4 1007G 48G 909G 5%

Le partage maine doit être en secondary. Si maine est en panne, l'état est Secondary/Unknown. Sinon, il doit être Secondary/Primary.

Passer le partage maine en primaire:

# drbdadm primary maine
# drbd-overview 
 0:maine/0  Connected Primary/Secondary UpToDate/UpToDate /var/lib/libvirt/maine ext4 1007G 48G 909G 5%
 1:coon/0   Connected Primary/Secondary UpToDate/UpToDate /var/lib/libvirt/coon ext4 1007G 48G 909G 5%

Si on est en Primary, effectuer le montage:

# mount /var/lib/libvirt/maine

Régler les hooks pour l'IPv6 sur coon :

cd /etc/libvirt/hooks
ln -sf /etc/libvirt/hooks/network/network-only-coon-running network

Puis activer les VM:

# cd /etc/libvirt/qemu
# for host in $(ls *xml | sed -e 's/.xml//g'| grep -v modele) ; do virsh start $host ; done

Note: cette boucle for doit être faite pour toutes les VM à basculer.

Retour à la normale

Sur coon:

# for host in $(ls *xml | sed -e 's/.xml//g'| grep -v modele) ; do virsh shutdown $host ; done

Redémarrer maine par la console Hetzner (ça peut prendre 2mn).

Sur coon:

# umount /var/lib/libvirt/maine

Sur maine:

# drbd-overview 
 0:maine/0  Connected Secondary/Primary UpToDate/UpToDate
 1:coon/0   Connected Secondary/Primary UpToDate/UpToDate

On doit être en Secondary/Primary pour le partage //maine//.  Sur coon, passer le partage //maine// en secondaire et supprimer les interfaces de FIP:

<code>
# drbdadm secondary maine
# ip addr del  88.99.233.240/32 dev enp0s31f6
# ip route replace default via 94.130.8.1 dev enp0s31f6 src 94.130.8.2
# ip route replace 94.130.8.1 dev enp0s31f6 proto kernel scope link src 94.130.8.2

Sur coon, recommenter la ligne fip= dans /etc/firehol/firehol.conf et lancer firehol start

Sur maine, passer le partage en primaire, le monter et remettre les interfaces FIP en ligne:

cd /etc/libvirt/hooks
ln -sf /etc/libvirt/hooks/network/network-maine-coon-running network
# drbdadm primary maine
# umount /var/lib/libvirt/maine
# for host in $(ls *xml | sed -e 's/.xml//g'| grep -v modele) ; do virsh shutdown $host ; done

Basculer la VIP à nouveau sur virola:

curl -u LOGIN:PASSWORD https://robot-ws.your-server.de/failover/88.99.233.240 \
     -d active_server_ip=94.130.8.2

Basculer de coon à maine

Arrêter calamus le cas échéant (voir début de cette page).

En théorie, la bascule et l'ajout des VIP n'est pas nécessaire car virola possède par défaut les VIP.

Vérifier sur virola l'état de drbd:

# cat /proc/drbd
version: 8.4.3 (api:1/proto:86-101)
srcversion: 1A9F77B1CA5FF92235C2213 
 0: cs:WFConnection ro:Primary/Unknown ds:UpToDate/DUnknown C r-----
    ns:574528 nr:5066780 dw:5646932 dr:2439761 al:168 bm:407 lo:0 pe:0 ua:0 ap:0 ep:1 wo:f oos:3960
 1: cs:WFConnection ro:Secondary/Unknown ds:UpToDate/DUnknown C r-----
    ns:0 nr:4950536 dw:4950536 dr:0 al:0 bm:0 lo:0 pe:0 ua:0 ap:0 ep:1 wo:f oos:0

Le partage 1 (calamus) doit être en secondary. Si calamus est en panne, l'état est Secondary/Unknown. Sinon, il doit être Secondary/Primary.

Passer le partage calamus en primaire:

# drbdadm primary calamus
# cat /proc/drbd
version: 8.4.3 (api:1/proto:86-101)
srcversion: 1A9F77B1CA5FF92235C2213 
 0: cs:WFConnection ro:Primary/Unknown ds:UpToDate/DUnknown C r-----
    ns:574528 nr:5066780 dw:5647340 dr:2439761 al:168 bm:407 lo:0 pe:0 ua:0 ap:0 ep:1 wo:f oos:4248
 1: cs:WFConnection ro:Primary/Unknown ds:UpToDate/DUnknown C r-----
    ns:0 nr:4950536 dw:4950536 dr:912 al:0 bm:0 lo:0 pe:0 ua:0 ap:0 ep:1 wo:f oos:0

Si on est en Primary, effectuer le montage:

# mount /dev/drbd1
cd /etc/libvirt/hooks
ln -sf /etc/libvirt/hooks/network/network-only-maine-running network

Puis activer les VM:

# cd /etc/libvirt/qemu
# for machine in adl ...
do
  virsh define $machine.xml
  virsh start $machine
done

Note: cette boucle for doit être faite pour toutes les VM à basculer.

Retour à la normale

Sur virola:

# for machine in adl ... ; do virsh shutdown $machine ; done

Redémarrer calamus par la console Online (ça peut prendre 2mn).

Sur virola:

# umount /dev/drbd1

Sur calamus:

# cat /proc/drbd 
  version: 8.4.3 (api:1/proto:86-101)
  srcversion: 1A9F77B1CA5FF92235C2213 
   0: cs:Connected ro:Secondary/Primary ds:UpToDate/UpToDate C r-----
      ns:0 nr:5066780 dw:5066780 dr:0 al:0 bm:407 lo:0 pe:0 ua:0 ap:0 ep:1 wo:f oos:0
   1: cs:Connected ro:Secondary/Primary ds:UpToDate/UpToDate C r-----
      ns:0 nr:0 dw:0 dr:0 al:0 bm:0 lo:0 pe:0 ua:0 ap:0 ep:1 wo:f oos:0

On doit être en Secondary/Primary pour le partage 1. Sur virola, passer le partage calamus en secondaire:

# drbdadm secondary calamus
cd /etc/libvirt/hooks
ln -sf /etc/libvirt/hooks/network/network-maine-coon-running network

Sur calamus, passer le partage en primaire, le monter et remettre les interfaces VIP en ligne:

# drbdadm primary calamus
# mount /dev/drbd1
# for machine in adl ... ; do virsh start $machine ; done

Et si la VM bastion a été migrée, se rendre sur galanga et relancer le VPN:

# /etc/init.d/openvpn restart

Autres procédures DRBD

admin/procedures/basculer_cluster.1525527998.txt.gz · Dernière modification : 2018/05/05 13:46 de qgibeaux