XenServer

Résoudre les problèmes liés aux pools en cluster

Les pools XenServer qui utilisent GFS2 pour provisionner leur stockage par blocs partagé sont mis en cluster. Ces pools se comportent différemment des pools qui utilisent un stockage basé sur des fichiers partagé ou LVM avec stockage en mode bloc partagé. Par conséquent, certains problèmes spécifiques peuvent survenir dans les pools en cluster XenServer et les environnements GFS2.

Utilisez les informations suivantes pour résoudre les problèmes mineurs qui peuvent survenir lors de l’utilisation de cette fonctionnalité.

Tous mes hôtes peuvent envoyer un ping entre eux, mais je ne peux pas créer de cluster. Pourquoi ?

Le mécanisme de clustering utilise des ports spécifiques. Si vos hôtes ne peuvent pas communiquer sur ces ports (même s’ils peuvent communiquer sur d’autres ports), vous ne pouvez pas activer le clustering pour le pool.

Assurez-vous que les hôtes du pool peuvent communiquer sur les ports suivants :

  • TCP : 8892, 8896, 21064
  • UDP : 5404, 5405 (pas de multidiffusion)

S’il existe des pare-feux ou similaires entre les hôtes du pool, assurez-vous que ces ports sont ouverts.

Si vous avez déjà configuré HA dans le pool, désactivez la HA avant d’activer le clustering.

Pourquoi un message d’erreur s’affiche-t-il lorsque j’essaie de joindre un nouvel hôte à un pool clusterisé existant ?

Lorsque le clustering est activé sur un pool, chaque modification de l’appartenance au pool doit être approuvée par tous les membres du cluster pour qu’elle puisse aboutir. Si un membre du cluster n’est pas joignable, les opérations qui modifient l’appartenance au cluster (comme l’ajout ou la suppression d’un hôte) échouent.

Pour ajouter votre nouvel hôte au pool clusterisé :

  1. Assurez-vous que tous vos hôtes sont en ligne et peuvent être contactés.

  2. Assurez-vous que les hôtes du pool peuvent communiquer sur les ports suivants :

    • TCP : 8892, 8896, 21064
    • UDP : 5404, 5405 (pas de multidiffusion)
  3. Assurez-vous que l’hôte participant dispose d’une adresse IP attribuée sur la carte réseau qui rejoint le réseau de clusters du pool.

  4. Assurez-vous qu’aucun hôte du pool n’est hors ligne lorsqu’un nouvel hôte tente de rejoindre le pool en cluster.

  5. Si un hôte hors ligne ne peut pas être restauré, marquez-le comme mort pour le supprimer du cluster. Pour plus d’informations, voir Un hôte de mon pool clusterisé est hors ligne et je ne parviens pas à le récupérer. Comment supprimer l’hôte de mon cluster ?

Que dois-je faire si certains membres du pool clusterisé ne rejoignent pas automatiquement le cluster ?

Ce problème peut être dû au fait que les membres du pool clusterisé perdent la synchronisation.

Pour resynchroniser les membres du pool clusterisé, utilisez la commande suivante :

xe cluster-pool-resync cluster-uuid=<cluster_uuid>

Si le problème persiste, vous pouvez essayer de rattacher le GFS2 SR. Vous pouvez effectuer cette tâche à l’aide de l’interface de ligne de commande xe ou via XenCenter.

Reconnectez le GFS2 SR à l’aide de l’interface de ligne de commande xe :

  1. Détachez le GFS2 SR du pool. Sur chaque hôte, exécutez la commande xe CLI xe pbd-unplug uuid=<uuid_of_pbd>.

  2. Désactivez le pool clusterisé à l’aide de la commande xe cluster-pool-destroy cluster-uuid=<cluster_uuid>

    Si la commande précédente échoue, vous pouvez désactiver de force un pool en cluster en exécutant xe cluster-host-force-destroy uuid=<cluster_host> sur chaque hôte du pool.

  3. Réactivez le pool clusterisé à l’aide de la commande xe cluster-pool-create network-uuid=<network_uuid> [cluster-stack=cluster_stack] [token-timeout=token_timeout] [token-timeout-coefficient=token_timeout_coefficient]

  4. Reconnectez le GFS2 SR en exécutant la commande xe pbd-plug uuid=<uuid_of_pbd> sur chaque hôte.

Vous pouvez également utiliser XenCenter pour rattacher le GFS2 SR :

  1. Dans l’onglet Pool Storage, cliquez avec le bouton droit sur le GFS2 SR et sélectionnez Détacher….
  2. Dans la barre d’outils, sélectionnez Pool > Propriétés.
  3. Dans l’onglet Clustering, désélectionnez Activerle clustering.
  4. Cliquez sur OK pour appliquer votre modification.
  5. Dans la barre d’outils, sélectionnez Pool > Propriétés.
  6. Dans l’onglet Clustering, sélectionnez Activer le clustering et choisissez le réseau à utiliser pour le clustering.
  7. Cliquez sur OK pour appliquer votre modification.
  8. Dans l’onglet Stockage du pool, cliquez avec le bouton droit sur le GFS2 SR et sélectionnez Réparer.

Comment savoir si mon hôte dispose d’une clôture automatique ?

Si votre hôte s’est auto-protégé, il a peut-être rejoint le cluster lors de son redémarrage. Pour vérifier si un hôte s’est auto-protégé et s’est restauré, vous pouvez consulter le fichier /var/opt/xapi-clusterd/boot-times pour voir à quelle heure l’hôte a démarré. S’il y a dans le fichier des heures de début que vous ne vous attendiez pas à voir, cela signifie que l’hôte s’est défini lui-même.

Pourquoi mon hôte est-il hors ligne ? Comment puis-je le récupérer ?

Il existe de nombreuses raisons pour lesquelles un hôte se déconnecte. Selon la raison, l’hôte peut être restauré ou non.

Les raisons suivantes pour lesquelles un hôte est hors ligne sont plus courantes et peuvent être résolues en récupérant l’hôte :

  • Arrêt normal
  • Arrêt forcé
  • Panne de courant temporaire
  • Redémarrer

Les raisons suivantes pour lesquelles un hôte est hors ligne sont moins courantes :

  • Défaillance matérielle permanente de l’hôte
  • Défaillance permanente de l’alimentation de l’hôte
  • Partition réseau
  • Défaillance du commutateur réseau

Ces problèmes peuvent être résolus en remplaçant le matériel ou en marquant les hôtes défaillants comme étant morts.

Un hôte de mon pool clusterisé est hors ligne et je ne parviens pas à le récupérer. Comment supprimer l’hôte de mon cluster ?

Vous pouvez demander au cluster d’oublier l’hôte. Cette action supprime définitivement l’hôte du cluster et réduit le nombre d’hôtes actifs requis pour le quorum.

Pour supprimer un hôte irrécupérable, utilisez la commande suivante :

xe host-forget uuid=<host_uuid>

Cette commande supprime définitivement l’hôte du cluster et réduit le nombre d’hôtes actifs requis pour le quorum.

Remarque :

Si l’hôte n’est pas hors ligne, cette commande peut entraîner une perte de données. Il vous est demandé de confirmer que vous êtes sûr avant de passer à la commande.

Lorsqu’un hôte est oublié, il ne peut pas être réintégré au cluster. Pour réintégrer cet hôte dans le cluster, vous devez effectuer une nouvelle installation de XenServer sur l’hôte.

J’ai réparé un hôte marqué comme mort. Comment puis-je le réintégrer dans mon cluster ?

Un hôte XenServer marqué comme mort ne peut pas être réintégré dans le cluster. Pour réintégrer ce système dans le cluster, vous devez effectuer une nouvelle installation de XenServer. Cette nouvelle installation apparaît au cluster comme un nouvel hôte.

Que dois-je faire si mon cluster ne cesse de perdre le quorum et que ses hôtes continuent de clôturer ?

Si un ou plusieurs hôtes XenServer du cluster entrent dans une boucle de clôture en raison de la perte et de l’augmentation continues du quorum, vous pouvez démarrer l’hôte à l’aide de l’argument de ligne de commande du noyau nocluster. Connectez-vous à la console physique ou série de l’hôte et modifiez les arguments de démarrage dans grub.

Exemple :

/boot/grub/grub.cfg
menuentry 'XenServer' {
        search --label --set root root-oyftuj
        multiboot2 /boot/xen.gz dom0_mem=4096M,max:4096M watchdog ucode=scan dom0_max_vcpus=1-16 crashkernel=192M,below=4G console=vga vga=mode-0x0311
        module2 /boot/vmlinuz-4.4-xen root=LABEL=root-oyftuj ro nolvm hpet=disable xencons=hvc console=hvc0 console=tty0 quiet vga=785 splash plymouth.ignore-serial-consoles nocluster
        module2 /boot/initrd-4.4-xen.img
}
menuentry 'XenServer (Serial)' {
        search --label --set root root-oyftuj
        multiboot2 /boot/xen.gz com1=115200,8n1 console=com1,vga dom0_mem=4096M,max:4096M watchdog ucode=scan dom0_max_vcpus=1-16 crashkernel=192M,below=4G
        module2 /boot/vmlinuz-4.4-xen root=LABEL=root-oyftuj ro nolvm hpet=disable console=tty0 xencons=hvc console=hvc0 nocluster
        module2 /boot/initrd-4.4-xen.img
}
<!--NeedCopy-->

Que se passe-t-il lorsque le coordinateur du pool est redémarré dans un pool en cluster ?

Dans la plupart des cas, le comportement lorsque le coordinateur du pool est arrêté ou redémarré dans un pool en cluster est le même que lorsqu’un autre membre du pool s’arrête ou redémarre.

La manière dont l’hôte est arrêté ou redémarré peut affecter le quorum du pool en cluster. Pour plus d’informations sur le quorum, voir Quorum.

La seule différence de comportement dépend de l’activation ou non de la HA dans votre pool :

  • Si la HA est activée, un nouveau coordinateur est sélectionné et le service général est maintenu.
  • Si la haute disponibilité n’est pas activée, il n’y a pas de coordinateur pour le pool. Les machines virtuelles en cours d’exécution sur les hôtes restants continuent de fonctionner. La plupart des opérations administratives ne sont pas disponibles tant que le coordinateur n’a pas redémarré.

Pourquoi mon pool a-t-il disparu après qu’un hôte du pool clusterisé ait été contraint de fermer ses portes ?

Si vous arrêtez un hôte normalement (pas de force), il est temporairement supprimé des calculs de quorum jusqu’à ce qu’il soit réactivé. Toutefois, si vous arrêtez de force un hôte ou si celui-ci perd de l’alimentation, cet hôte est toujours pris en compte dans le calcul du quorum. Par exemple, si vous aviez un pool de 3 hôtes et que vous fermiez de force 2 d’entre eux, les hôtes restants bloquent les hôtes restants parce que le quorum n’est plus atteint.

Essayez de toujours arrêter correctement les hôtes d’un pool en cluster. Pour plus d’informations, voir Gérer votre pool clusterisé.

Pourquoi tous les hôtes du pool clusterisé ont-ils redémarré en même temps ?

Tous les hôtes d’un cluster actif sont considérés comme ayant perdu le quorum lorsque le nombre d’hôtes joignables dans le pool est inférieur aux valeurs suivantes :

  • Pour un pool avec un nombre pair d’hôtes : n/2
  • Pour un pool avec un nombre impair d’hôtes : (n+1)/2

La lettre n indique le nombre total d’hôtes du pool clusterisé. Pour plus d’informations sur le quorum, voir Quorum.

Dans ce cas, tous les hôtes se bloqueront automatiquement et vous verrez tous les hôtes redémarrer.

Pour diagnostiquer la raison pour laquelle le pool a perdu le quorum, les informations suivantes peuvent être utiles :

  • Dans XenCenter, consultez la section Notifications pour connaître l’heure à laquelle le problème s’est produit pour voir si l’auto-clôture s’est produite.
  • Sur les hôtes du cluster, vérifiez /var/opt/xapi-clusterd/boot-times pour voir si un redémarrage s’est produit à un moment inattendu.
  • Dans Crit.log, vérifiez si des messages d’auto-clôture sont émis.
  • Consultez la sortie de la commande dlm_tool status pour obtenir des informations sur les clôtures.

    Exemple de sortie dlm_tool status :

     dlm_tool status
    
     cluster nodeid 1 quorate 1 ring seq 8 8
     daemon now 4281 fence_pid 0
     node 1 M add 3063 rem 0 fail 0 fence 0 at 0 0
     node 2 M add 3066 rem 0 fail 0 fence 0 at 0 0
     <!--NeedCopy-->
    

Lorsque vous collectez des journaux pour le débogage, collectez des informations de diagnostic auprès de tous les hôtes du cluster. Dans le cas où un seul hôte est autonome, les autres hôtes du cluster sont plus susceptibles de disposer d’informations utiles.

Collectez des rapports complets sur l’état des serveurs pour les hôtes de votre pool en cluster. Pour plus d’informations, consultez les journaux des hôtes XenServer.

Pourquoi ne puis-je pas récupérer mon pool clusterisé alors que le quorum est atteint ?

Si vous disposez d’un pool en cluster avec un nombre pair d’hôtes, le nombre d’hôtes requis pour atteindre le quorum est supérieur d’un au nombre d’hôtes requis pour maintenir le quorum. Pour plus d’informations sur le quorum, voir Quorum.

Si vous vous trouvez dans un pool pair et que vous avez récupéré la moitié des hôtes, vous devez récupérer un hôte supplémentaire avant de pouvoir récupérer le cluster.

Pourquoi un message d’erreur Invalid token s’affiche-t-il lorsque je modifie les paramètres du cluster ?

Lors de la mise à jour de la configuration de votre cluster, vous pouvez recevoir le message d’erreur suivant concernant un jeton non valide ("[[\"InternalError\",\"Invalid token\"]]").

Vous pouvez résoudre ce problème en suivant les étapes suivantes :

  1. (Facultatif) Sauvegardez la configuration actuelle du cluster en collectant un rapport d’état du serveur qui inclut les journaux xapi-clusterd et système.

  2. Utilisez XenCenter pour détacher le GFS2 SR du pool clusterisé.

    Dans l’onglet Pool Storage, cliquez avec le bouton droit sur le GFS2 SR et sélectionnez Détacher….

  3. Sur n’importe quel hôte du cluster, exécutez cette commande pour détruire de force le cluster :

    xe cluster-pool-force-destroy cluster-uuid=<uuid>
    
  4. Utilisez XenCenter pour réactiver le clustering sur votre pool.

    1. Dans la barre d’outils, sélectionnez Pool > Propriétés.
    2. Dans l’onglet Clustering, sélectionnez Activer le clustering et choisissez le réseau à utiliser pour le clustering.
    3. Cliquez sur OK pour appliquer votre modification
  5. Utilisez XenCenter pour rattacher le GFS2 SR au pool

    Dans l’onglet Stockage du pool, cliquez avec le bouton droit sur le GFS2 SR et sélectionnez Réparer.

Résoudre les problèmes liés aux pools en cluster