XenServer

Dépanner les pools en cluster GFS2

Les pools XenServer® qui utilisent GFS2 pour provisionner de manière dynamique leur stockage par blocs partagé sont en cluster. Ces pools se comportent différemment des pools qui utilisent un stockage basé sur des fichiers partagés ou LVM avec un stockage par blocs 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 dépanner les problèmes mineurs qui peuvent survenir lors de l’utilisation de cette fonctionnalité.

Tous mes hôtes peuvent se pinger mutuellement, 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 y a des pare-feu ou similaires entre les hôtes du pool, assurez-vous que ces ports sont ouverts.

Si vous avez précédemment configuré la HA dans le pool, désactivez la HA avant d’activer le clustering.

Pourquoi est-ce que j’obtiens une erreur lorsque j’essaie de joindre un nouvel hôte à un pool en cluster existant ?

Lorsque le clustering est activé sur un pool, chaque modification de l’appartenance au pool doit être approuvée par chaque membre du cluster avant de pouvoir réussir. Si un membre du cluster n’est pas joignable, les opérations qui modifient l’appartenance au cluster (telles que l’ajout ou la suppression d’un hôte) échouent.

Pour ajouter votre nouvel hôte au pool en cluster :

  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 rejoignant le pool dispose d’une adresse IP allouée sur la carte réseau qui rejoint le réseau de cluster du pool.

  4. Assurez-vous que le clustering n’utilise pas un réseau VLAN non-management dans le pool.

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

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

Que faire si certains membres du pool en cluster ne rejoignent pas le cluster automatiquement ?

Ce problème peut être causé par une perte de synchronisation des membres du pool en cluster.

Pour resynchroniser les membres du pool en cluster, utilisez la commande suivante :

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

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

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

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

  2. Désactivez le pool en cluster à 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 en cluster à 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. Rattachez le SR GFS2 en exécutant la commande xe pbd-plug uuid=<uuid_of_pbd> sur chaque hôte.

Alternativement, pour utiliser XenCenter afin de rattacher le SR GFS2 :

  1. Dans l’onglet Storage du pool, cliquez avec le bouton droit sur le SR GFS2 et sélectionnez Detach….
  2. Dans la barre d’outils, sélectionnez Pool > Properties.
  3. Dans l’onglet Clustering, désélectionnez Enable clustering.
  4. Cliquez sur OK pour appliquer votre modification.
  5. Dans la barre d’outils, sélectionnez Pool > Properties.
  6. Dans l’onglet Clustering, sélectionnez Enable clustering et choisissez le réseau à utiliser pour le clustering.
  7. Cliquez sur OK pour appliquer votre modification.
  8. Dans l’onglet Storage du pool, cliquez avec le bouton droit sur le SR GFS2 et sélectionnez Repair.

Comment savoir si mon hôte s’est auto-isolé ?

Si votre hôte s’est auto-isolé, il a peut-être rejoint le cluster lors de son redémarrage. Pour savoir si un hôte s’est auto-isolé et a récupéré, vous pouvez vérifier le fichier /var/opt/xapi-clusterd/boot-times pour voir les heures de démarrage de l’hôte. S’il y a des heures de démarrage dans le fichier que vous ne vous attendiez pas à voir, l’hôte s’est auto-isolé.

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

Il existe de nombreuses raisons possibles pour qu’un hôte soit hors ligne. Selon la raison, l’hôte peut être récupéré ou non.

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

  • Arrêt propre
  • Arrêt forcé
  • Panne de courant temporaire
  • Redémarrage

Les raisons suivantes pour qu’un hôte soit hors ligne sont moins courantes :

  • Défaillance matérielle permanente de l’hôte
  • Défaillance permanente de l’alimentation électrique 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 morts.

Un hôte de mon pool en cluster est hors ligne et je ne peux pas le récupérer. Comment puis-je 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 diminue 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 diminue 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 votre certitude avant de poursuivre avec la commande.

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

J’ai réparé un hôte qui était marqué comme mort. Comment le réintégrer à mon cluster ?

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

Que faire si mon cluster perd constamment le quorum et que ses hôtes continuent de se mettre en quarantaine ?

Si un ou plusieurs des hôtes XenServer du cluster entrent dans une boucle de mise en quarantaine en raison d’une perte continue de quorum, vous pouvez démarrer l’hôte avec l’argument de ligne de commande dom0 nocluster. Connectez-vous à la console physique ou série de l’hôte et, à la ligne de commande dom0, exécutez la commande suivante : /opt/xensource/libexec/xen-cmdline --set-dom0 nocluster. La prochaine fois que l’hôte redémarrera, il ne tentera pas de rejoindre le cluster.

Après avoir diagnostiqué et résolu le problème avec l’hôte, vous pouvez activer le clustering en supprimant l’argument nocluster. Pour ce faire, exécutez la commande suivante : /opt/xensource/libexec/xen-cmdline --remove-dom0 nocluster. Redémarrez votre hôte pour que la modification prenne effet.

Pour plus d’informations sur l’accès aux hôtes via la console série et la modification de la ligne de commande Xen, consultez Dépannage avancé.

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

Dans la plupart des cas, le comportement lorsque le coordinateur de pool est arrêté ou redémarré dans un pool en cluster est le même que celui d’un autre membre du pool qui 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, consultez Quorum.

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

  • Si la haute disponibilité (HA) est activée, un nouveau coordinateur est sélectionné et le service général est maintenu.
  • Si la haute disponibilité (HA) 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 l’arrêt forcé d’un hôte dans le pool en cluster ?

Si vous arrêtez un hôte normalement (pas de force), il est temporairement retiré des calculs de quorum jusqu’à ce qu’il soit redémarré. Cependant, si vous arrêtez de force un hôte ou s’il perd l’alimentation, cet hôte compte toujours dans les calculs de quorum. Par exemple, si vous aviez un pool de 3 hôtes et que vous en arrêtiez de force 2, l’hôte restant se met en quarantaine (fences) car il n’a plus de quorum.

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

Pourquoi tous les hôtes du pool en cluster 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 à ces valeurs :

  • 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 dans le pool en cluster. Pour plus d’informations sur le quorum, consultez Quorum.

Dans cette situation, tous les hôtes s’auto-isolent (self-fence) et vous voyez tous les hôtes redémarrer.

Pour diagnostiquer pourquoi le pool a perdu le quorum, les informations suivantes peuvent être utiles :

  • Dans XenCenter, vérifiez la section Notifications pour l’heure du problème afin de voir si une auto-isolation (self-fencing) 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-isolation (self-fencing) sont affichés.
  • Examinez la sortie de la commande dlm_tool status pour les informations de fencing.

    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-->
    

Lors de la collecte des journaux pour le débogage, collectez les informations de diagnostic de tous les hôtes du cluster. Dans le cas où un seul hôte s’est auto-isolé (self-fenced), les autres hôtes du cluster sont plus susceptibles de contenir des informations utiles.

Collectez des rapports d’état complets du serveur pour les hôtes de votre pool en cluster. Pour plus d’informations, consultez Rapports d’état du serveur XenServer.

Pourquoi ne puis-je pas récupérer mon pool en cluster lorsque j’ai le quorum ?

Si vous avez 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, consultez Quorum.

Si vous êtes dans un pool avec un nombre pair d’hôtes 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.

Vous pouvez vérifier si votre cluster a le quorum en exécutant la commande suivante :

xe cluster-list params=is-quorate uuid=<cluster_id>

Pourquoi vois-je une erreur Invalid token lors de la modification des paramètres du cluster ?

Lors de la mise à jour de la configuration de votre cluster, vous pourriez recevoir le message d’erreur suivant concernant un jeton invalide ("[[\"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 SR GFS2 du pool en cluster.

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

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

    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 SR GFS2 au pool

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

Dépanner les pools en cluster GFS2