Table des matières

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-persan ou redemarrer-korat) en s'arrêtant à la partie reboot. Au lieu de redémarrer le serveur, passez-le en mode rescue dans la console Hetzner.

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 https://robot-ws.your-server.de/failover/88.99.233.240 \
     -d active_server_ip=94.130.8.3

LOGIN étant l'identifiant de Hetzner, le mot de passe sera demandé en interactif (voir la procédure concernant Pass). Le serveur met plusieurs secondes à répondre.

Sur coon, ajouter les IP virtuelles:

ip addr add  88.99.233.240/32 dev enp0s31f6
ip addr add  192.168.1.254/32 dev virbr0
ip route replace 94.130.8.1 dev enp0s31f6 proto kernel scope link src 88.99.233.240
ip route replace default via 94.130.8.1 dev enp0s31f6 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
# Nettoyage des règles ipv6 avant bascule :
/etc/libvirt/hooks/network default stopped end 
# Changement de script network
ln -sf /etc/libvirt/hooks/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.

Aller sur dns.cluster.chapril.org :

cd /etc/bind/zones/masters
ln -fs /etc/bind/zones/masters/coon-running.include ipv6
ln -fs /etc/bind/zones/masters/coon-running.include-int ipv6-int

Ne pas oublier d'incrémenter le serial sur chapril.org et chapril.org-int et de lancer un rndc reload.

Retour à la normale

Sur coon:

# for host in admin bastion pouet ... ; do virsh shutdown $host ; done; sleep 20;
# for host in admin bastion pouet ... ; do virsh destroy $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:

# drbdadm secondary maine
# ip addr del  88.99.233.240/32 dev enp0s31f6
# ip addr del  192.168.1.254/32 dev virbr0
# ip route replace default via 94.130.8.1 dev enp0s31f6 src 94.130.8.3
# ip route replace 94.130.8.1 dev enp0s31f6 proto kernel scope link src 94.130.8.3

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

cd /etc/libvirt/hooks
ln -sf /etc/libvirt/hooks/network-maine-coon-running network
/etc/libvirt/hooks/network default started begin

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

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

Basculer la FIP à nouveau sur maine:

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

Aller sur dns.cluster.chapril.org :

cd /etc/bind/zones/masters
ln -fs /etc/bind/zones/masters/maine-coon-running.include ipv6
ln -fs /etc/bind/zones/masters/maine-coon-running.include-int ipv6-int

Ne pas oublier d'incrémenter le serial sur chapril.org et chapril.org-int et de lancer un rndc reload.

Arrêt propre d'un hyperviseur

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

Basculer de coon à maine

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

En théorie, la bascule et l'ajout de la FIP n'est pas nécessaire car maine possède par défaut la FIP.

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

# drbd-overview 
 0:maine/0  Connected Primary/Secondary UpToDate/UpToDate /var/lib/libvirt/maine ext4 1007G 63G 893G 7% 
 1:coon/0   Connected Secondary/Primary UpToDate/UpToDate

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

Passer le partage coon en primaire:

# drbdadm primary coon
# drbd-overview 
 0:maine/0  Connected Primary/Secondary UpToDate/UpToDate /var/lib/libvirt/maine ext4 1007G 63G 893G 7% 
 1:coon/0   Connected Primary/Secondary UpToDate/UpToDate /var/lib/libvirt/maine ext4 1007G 63G 893G 7% 

Si on est en Primary, effectuer le montage:

# mount /var/lib/libvirt/coon
cd /etc/libvirt/hooks
/etc/libvirt/hooks/network default stopped begin
ln -sf /etc/libvirt/hooks/network-only-maine-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.

Aller sur dns.cluster.chapril.org :

cd /etc/bind/zones/masters
ln -fs /etc/bind/zones/masters/maine-running.include ipv6
ln -fs /etc/bind/zones/masters/maine-running.include-int ipv6-int

Ne pas oublier d'incrémenter le serial sur chapril.org et chapril.org-int et de lancer un rndc reload.

Retour à la normale

Sur maine:

# for host in dns lamp mail sympa ... ; do virsh shutdown $host ; done; sleep 20;
# for host in dns lamp mail sympa ... ; do virsh destroy $host ; done

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

Sur maine

# umount /var/lib/libvirt/coon

Sur coon:

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

Attendre que ce soit UpToDate, il est possible qu'il synchronise

On doit être en Secondary/Primary pour le partage coon. Sur maine, passer le partage coon en secondaire:

# drbdadm secondary coon
cd /etc/libvirt/hooks
ln -sf /etc/libvirt/hooks/network-maine-coon-running network
/etc/libvirt/hooks/network default started begin

Sur coon, passer le partage en primaire, le monter et remettre l'interfaces FIP en ligne:

# drbdadm primary coon
# mount /var/lib/libvirt/coon
# for machine in adl ... ; do virsh start $machine ; done

Aller sur dns.cluster.chapril.org :

cd /etc/bind/zones/masters
ln -fs /etc/bind/zones/masters/maine-coon-running.include ipv6
ln -fs /etc/bind/zones/masters/maine-coon-running.include-int ipv6-int

Ne pas oublier d'incrémenter le serial sur chapril.org et chapril.org-int et de lancer un rndc reload.