====== Basculer le cluster d'un noeud à l'autre ======
Avant d'effectuer une telle manipulation, relire [[:admin|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 ([[admin:procedures:redemarrer-persan]] ou [[admin:procedures: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 [[:admin:procedures:configuration_password_store|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 ([[admin:procedures:redemarrer-persan]] ou [[admin:procedures: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//.