Outils pour utilisateurs

Outils du site


admin:procedures:basculer_cluster

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Prochaine révision
Révision précédente
admin:procedures:basculer_cluster [2018/05/05 12:26] – copie depuis wiki april rhadmin:procedures:basculer_cluster [2024/03/11 08:43] (Version actuelle) – ↷ Liens modifiés en raison d'un déplacement. 34.70.224.243
Ligne 1: Ligne 1:
 ====== Basculer le cluster d'un noeud à l'autre ====== ====== Basculer le cluster d'un noeud à l'autre ======
  
-Avant d'effectuer une telle manipulation, relire [[:sysadm:architecture_du_cluster|la page d'architecture du cluster]] pour être sûr de comprendre l'architecture en place.+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 ===== ===== Arrêt propre d'un hyperviseur =====
  
-Arrêter les guests par virt-manager ou virsh.  Par exemple pour arrêter virola:+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 =====
  
-<code> +Arrêter //maine// le cas échéant.
-cd /etc/libvirt/qemu +
-for host in $(ls *xml | sed -e 's/.xml//g') ; do virsh destroy $host ; done +
-</code>+
  
-Déconnecter les volumes DRBD:+Basculer la FIP vers //coon//, soit par la console Hetzner soit par le script suivant:
  
 <code> <code>
-umount /var/lib/libvirt/virola +curl -u LOGIN https://robot-ws.your-server.de/failover/88.99.233.240 \ 
-drbdadm disconnect calamus +     -d active_server_ip=94.130.8.3
-drbdadm secondary virola +
-drbdadm disconnect virola+
 </code> </code>
  
-Puis enfinarrêter la machine. +//LOGIN// étant l'identifiant de Hetznerle 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.
-===== Basculer de virola à calamus =====+
  
-Arrêter //virola// le cas échéant. +Sur coonajouter les IP virtuelles:
- +
-Basculer la VIP vers //calamus//soit par la [[:sysadm:console online]] soit par le script suivant:+
  
 <code> <code>
-curl -X POST \ +ip addr add  88.99.233.240/32 dev enp0s31f6 
-     -H "Authorization: Bearer XXX" \ +ip addr add  192.168.1.254/32 dev virbr0 
-     -H "X-Pretty-JSON: 1" \ +ip route replace 94.130.8.1 dev enp0s31f6 proto kernel scope link src 88.99.233.240 
-     -d 'source=195.154.56.24&destination=62.210.101.106' \ +ip route replace default via 94.130.8.1 dev enp0s31f6 src 88.99.233.240
-     "https://api.online.net/api/v1/server/failover/edit"+
 </code> </code>
  
-//XXX// étant le token de l'API (voir le [[:sysadm:keepass|Keepass]]).+Toujours sur coon, éditer /etc/firehol/firehol.conf et décommenter la ligne "fip=" et lancer un //firehol start//
  
-Sur calamus, ajouter les IP virtuelles:+Vérifier l'état de drbd:
  
 <code> <code>
-ip addr add 195.154.56.24/32 dev br0 +# drbd-overview  
-ip addr add 172.16.0.250/32 dev br1 + 0:maine/0  Connected Secondary/Primary UpToDate/UpToDate  
-</code>+ 1:coon/  Connected Primary/Secondary UpToDate/UpToDate /var/lib/libvirt/coon ext4 1007G 48G 909G 5%</code>
  
-Vérifier l'état de drbd:+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:
  
 <code> <code>
-cat /proc/drbd +drbdadm primary maine 
-  version8.4.3 (api:1/proto:86-101) +drbd-overview  
-  srcversion: 1A9F77B1CA5FF92235C2213  + 0:maine/ Connected Primary/Secondary UpToDate/UpToDate /var/lib/libvirt/maine ext4 1007G 48G 909G 5% 
-   0: cs:WFConnection ro:Secondary/Unknown ds:UpToDate/DUnknown C r----- + 1:coon/0   Connected Primary/Secondary UpToDate/UpToDate /var/lib/libvirt/coon ext4 1007G 48G 909G 5%</code>
-      ns:5074552 nr:13482320 dw:563214048 dr:5241965 al:35 bm:32386 lo:0 pe:0 ua:0 ap:0 ep:wo:f oos:0 +
-   1: cs:WFConnection ro:Primary/Unknown ds:UpToDate/DUnknown C r----- +
-      ns:524873904 nr:0 dw:8347412 dr:516529269 al:2162 bm:32000 lo:0 pe:0 ua:0 ap:0 ep:1 wo:f oos:0 +
-</code>+
  
-Le partage //0// (//virola//) doit être en secondary.  Si //virola// est en pannel'état est ''Secondary/Unknown'' Sinon, il doit être ''Secondary/Primary''+Si on est en Primaryeffectuer le montage:
- +
-Passer le partage //virola// en primaire:+
  
 <code> <code>
-drbdadm primary virola +mount /var/lib/libvirt/maine
-# 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:5074552 nr:13482320 dw:563214048 dr:5242877 al:35 bm:32386 lo:0 pe:0 ua:0 ap:0 ep:1 wo:f oos:0 +
-    1: cs:WFConnection ro:Primary/Unknown ds:UpToDate/DUnknown C r----- +
-       ns:524873904 nr:0 dw:8347412 dr:516529269 al:2162 bm:32000 lo:0 pe:0 ua:0 ap:0 ep:1 wo:f oos:0+
 </code> </code>
  
-Si on est en Primary, effectuer le montage:+Régler les hooks pour l'IPv6 sur //coon// :
  
 <code> <code>
-mount /dev/drbd0+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
 </code> </code>
  
Ligne 82: Ligne 67:
 <code> <code>
 # cd /etc/libvirt/qemu # cd /etc/libvirt/qemu
-# for machine in bastion admin dns ... +# for host in $(ls *xml | sed -e 's/.xml//g'| grep -v modele) ; do virsh start $host ; done
-do +
-  virsh define $machine.xml +
-  virsh start $machine +
-done+
 </code> </code>
  
 **Note:** cette boucle //for// doit être faite pour toutes les VM à basculer.   **Note:** cette boucle //for// doit être faite pour toutes les VM à basculer.  
  
- +Aller sur dns.cluster.chapril.org :
-Sur galanga, redémarrer le VPN qui doit être perdu si on a migré la VM //bastion//: +
 <code> <code>
-/etc/init.d/openvpn restart+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
 </code> </code>
  
 +Ne pas oublier d'incrémenter le serial sur chapril.org et chapril.org-int et de lancer un //rndc reload//.
  
 ==== Retour à la normale ==== ==== Retour à la normale ====
  
-Sur calamus:+Sur coon:
  
 <code> <code>
-# for machine in bastion admin dns ... ; do virsh shutdown $machine ; done+# for host in admin bastion pouet ... ; do virsh shutdown $host ; done; sleep 20; 
 +# for host in admin bastion pouet ... ; do virsh destroy $host ; done
 </code> </code>
  
-Redémarrer virola par la console Online (ça peut prendre 2mn).+Redémarrer maine par la console Hetzner (ça peut prendre 2mn).
  
-Sur calamus:+Sur coon:
  
 <code> <code>
-# umount /dev/drbd0+# umount /var/lib/libvirt/maine
 </code> </code>
  
-Sur virola:+Sur maine:
  
 <code> <code>
-cat /proc/drbd  +# drbd-overview  
-  version8.4.3 (api:1/proto:86-101) + 0:maine/ Connected Secondary/Primary UpToDate/UpToDate 
-  srcversion: 1A9F77B1CA5FF92235C2213  + 1:coon/0   Connected Secondary/Primary UpToDate/UpToDate
-   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: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+
 </code> </code>
  
-On doit être en Secondary/Primary pour le partage //0//.  Sur calamus, passer le partage //virola// en secondaire et supprimer les interfaces de VIP:+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> <code>
-# drbdadm secondary virola +# drbdadm secondary maine 
-# ip addr del 195.154.56.24/32 dev br0 +# ip addr del  88.99.233.240/32 dev enp0s31f6 
-# ip addr del 172.16.0.250/32 dev br1+# 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
 </code> </code>
  
-Sur //virola//, passer le partage en primaire, le monter et remettre les interfaces VIP en ligne:+Sur //coon//, recommenter la ligne //fip=// dans /etc/firehol/firehol.conf et lancer //firehol start//
  
 <code> <code>
-# drbdadm primary virola +cd /etc/libvirt/hooks 
-# mount /dev/drbd0 +ln -sf /etc/libvirt/hooks/network-maine-coon-running network 
-# for machine in bastion admin dns ... ; do virsh start $machine ; done +/etc/libvirt/hooks/network default started begin
-# ip addr add 195.154.56.24/32 dev br0 +
-# ip addr add 172.16.0.250/32 dev br1+
 </code> </code>
  
-Basculer la VIP à nouveau sur virola+Sur //maine//, passer le partage en primaire, le monter et remettre les interfaces FIP en ligne:
  
 <code> <code>
-curl -X POST \ +drbdadm primary maine 
-     -H "Authorization: Bearer xxx" \ +# mount /var/lib/libvirt/maine 
-     -H "X-Pretty-JSON: 1" \ +# cd /etc/libvirt/qemu 
-     -'source=195.154.56.24&destination=62.210.101.52'+# for host in $(ls *xml | sed -'s/.xml//g'| grep -v modele) ; do virsh start $host ; done
-     "https://api.online.net/api/v1/server/failover/edit"+
 </code> </code>
  
-Et si la VM //bastion// a été migrée, se rendre sur galanga et relancer le VPN:+Basculer la FIP à nouveau sur maine
  
 <code> <code>
-/etc/init.d/openvpn restart+curl -u LOGIN https://robot-ws.your-server.de/failover/88.99.233.240 \ 
 +     -d active_server_ip=94.130.8.2
 </code> </code>
  
 +Aller sur dns.cluster.chapril.org :
 +<code>
 +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
 +</code>
 +
 +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 calamus à virola =====+===== Basculer de coon à maine =====
  
-Arrêter //calamus// le cas échéant (voir début de cette page).+Arrêter //coon// 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.+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 //virola// l'état de drbd:+Vérifier sur //maine// l'état de drbd:
  
 <code> <code>
-cat /proc/drbd +# drbd-overview  
-version8.4.3 (api:1/proto:86-101) + 0:maine/0  Connected Primary/Secondary UpToDate/UpToDate /var/lib/libvirt/maine ext4 1007G 63G 893G 7%  
-srcversion: 1A9F77B1CA5FF92235C2213  + 1:coon/  Connected Secondary/Primary UpToDate/UpToDate
- 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+
 </code> </code>
  
-Le partage //1// (//calamus//doit être en secondary.  Si //calamus// est en panne, l'état est ''Secondary/Unknown'' Sinon, il doit être ''Secondary/Primary''.+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 //calamus// en primaire:+Passer le partage //coon// en primaire:
  
 <code> <code>
-# drbdadm primary calamus +# drbdadm primary coon 
-cat /proc/drbd +# drbd-overview  
-version8.4.3 (api:1/proto:86-101) + 0:maine/0  Connected Primary/Secondary UpToDate/UpToDate /var/lib/libvirt/maine ext4 1007G 63G 893G 7%  
-srcversion: 1A9F77B1CA5FF92235C2213  + 1:coon/  Connected Primary/Secondary UpToDate/UpToDate /var/lib/libvirt/maine ext4 1007G 63G 893G 7% 
- 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+
 </code> </code>
  
Ligne 199: Ligne 181:
  
 <code> <code>
-# mount /dev/drbd1+# mount /var/lib/libvirt/coon 
 +</code> 
 + 
 +<code> 
 +cd /etc/libvirt/hooks 
 +/etc/libvirt/hooks/network default stopped begin 
 +ln -sf /etc/libvirt/hooks/network-only-maine-running network
 </code> </code>
  
Ligne 206: Ligne 194:
 <code> <code>
 # cd /etc/libvirt/qemu # cd /etc/libvirt/qemu
-# for machine in adl ... +# for host in $(ls *xml | sed -e 's/.xml//g'| grep -v modele) ; do virsh start $host ; done
-do +
-  virsh define $machine.xml +
-  virsh start $machine +
-done+
 </code> </code>
  
 **Note:** cette boucle //for// doit être faite pour toutes les VM à basculer.   **Note:** cette boucle //for// doit être faite pour toutes les VM à basculer.  
  
 +
 +Aller sur dns.cluster.chapril.org :
 +<code>
 +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
 +</code>
 +
 +Ne pas oublier d'incrémenter le serial sur chapril.org et chapril.org-int et de lancer un //rndc reload//.
  
 ==== Retour à la normale ==== ==== Retour à la normale ====
  
-Sur virola:+Sur maine:
  
 <code> <code>
-# for machine in adl ... ; do virsh shutdown $machine ; done+# 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
 </code> </code>
  
-Redémarrer calamus par la console Online (ça peut prendre 2mn).+Redémarrer coon par la console Hetzner (ça peut prendre 2mn).
  
-Sur virola:+Sur maine
  
 <code> <code>
-# umount /dev/drbd1+# umount /var/lib/libvirt/coon
 </code> </code>
  
-Sur calamus:+Sur coon:
  
 <code> <code>
-cat /proc/drbd  +# drbd-overview  
-  version8.4.3 (api:1/proto:86-101) + 0:maine/ Connected Secondary/Primary UpToDate/UpToDate  
-  srcversion: 1A9F77B1CA5FF92235C2213  + 1:coon/0   Connected Secondary/Primary UpToDate/UpToDate 
-   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:wo:f oos:0 +Attendre que ce soit UpToDate, il est possible qu'il synchronise
-   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+
 </code> </code>
  
-On doit être en Secondary/Primary pour le partage //1//.  Sur virola, passer le partage //calamus// en secondaire:+On doit être en Secondary/Primary pour le partage //coon//.  Sur maine, passer le partage //coon// en secondaire:
  
 <code> <code>
-# drbdadm secondary calamus+# drbdadm secondary coon
 </code> </code>
- 
-Sur //calamus//, passer le partage en primaire, le monter et remettre les interfaces VIP en ligne: 
  
 <code> <code>
-# drbdadm primary calamus +cd /etc/libvirt/hooks 
-# mount /dev/drbd1 +ln -sf /etc/libvirt/hooks/network-maine-coon-running network 
-# for machine in adl ... ; do virsh start $machine ; done+/etc/libvirt/hooks/network default started begin
 </code> </code>
  
-Et si la VM //bastion// a été migréese rendre sur galanga et relancer le VPN:+Sur //coon//, passer le partage en primaire, le monter et remettre l'interfaces FIP en ligne:
  
 <code> <code>
-# /etc/init.d/openvpn restart+drbdadm primary coon 
 +# mount /var/lib/libvirt/coon 
 +# for machine in adl ... ; do virsh start $machine ; done
 </code> </code>
  
  
 +Aller sur dns.cluster.chapril.org :
 +<code>
 +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
 +</code>
  
 +Ne pas oublier d'incrémenter le serial sur chapril.org et chapril.org-int et de lancer un //rndc reload//.
  
-===== Autres procédures DRBD ===== 
- 
-Voir [[[:sysadm:procedures:Procédures relatives à DRBD]]. 
admin/procedures/basculer_cluster.1525523183.txt.gz · Dernière modification : 2018/05/05 12:26 de rh