Citrix Hypervisor

Haute disponibilité

La haute disponibilité est un ensemble de fonctionnalités automatiques conçues pour planifier et récupérer en toute sécurité les problèmes qui arrêtent les serveurs Citrix Hypervisor ou les rendent inaccessibles. Par exemple, lors d’une interruption physique du réseau ou de pannes matérielles de l’hôte.

Vue d’ensemble

La haute disponibilité garantit que si un hôte devient inaccessible ou instable, les machines virtuelles qui s’exécutent sur cet hôte sont automatiquement redémarrées en toute sécurité sur un autre hôte. Il n’est donc plus nécessaire de redémarrer manuellement les machines virtuelles, ce qui réduit au minimum les temps d’arrêt des machines virtuelles.

Lorsque le maître de pool devient inaccessible ou instable, la haute disponibilité peut également récupérer le contrôle administratif d’un pool. La haute disponibilité garantit le rétablissement automatique du contrôle administratif sans aucune intervention manuelle.

En option, la haute disponibilité peut également automatiser le processus de redémarrage des machines virtuelles sur des hôtes dont l’état est connu pour être en bon état sans intervention manuelle. Le redémarrage de ces machines virtuelles peut être planifié par groupes afin de laisser le temps de démarrer les services. Il permet de démarrer les machines virtuelles d’infrastructure avant les machines virtuelles dépendantes (par exemple, un serveur DHCP avant son serveur SQL dépendant).

Avertissements :

Utilisez la haute disponibilité ainsi que le stockage multichemins et la mise en réseau liée. Configurez le stockage multichemin et la mise en réseau liée avant d’essayer de configurer la haute disponibilité. Les clients qui ne configurent pas le stockage multichemin et la mise en réseau liée peuvent constater un comportement inattendu de redémarrage de l’hôte (auto-clôture) en cas d’instabilité de l’infrastructure.

Toutes les solutions graphiques (NVIDIA vGPU, AMD MxGPU (obsolète) et vGPU pass-through) peuvent être utilisées dans un environnement qui utilise la haute disponibilité. Toutefois, les machines virtuelles qui utilisent ces solutions graphiques ne peuvent pas être protégées par une haute disponibilité. Ces machines virtuelles peuvent être redémarrées au mieux tant que certains hôtes disposent des ressources gratuites appropriées.

Surengagement

Un pool est surengagé lorsque les machines virtuelles en cours d’exécution ne peuvent pas être redémarrées ailleurs à la suite d’un nombre défini par l’utilisateur de défaillances d’hôtes. Un surengagement peut se produire s’il n’y a pas assez de mémoire libre dans le pool pour exécuter ces machines virtuelles à la suite d’une défaillance. Cependant, des modifications plus subtiles peuvent rendre la haute disponibilité insoutenable : les modifications apportées aux périphériques virtuels (VBD) et aux réseaux peuvent affecter les machines virtuelles pouvant être redémarrées sur quels hôtes. Citrix Hypervisor ne peut pas vérifier toutes les actions potentielles et déterminer si elles entraînent une violation des exigences de haute disponibilité. Toutefois, une notification asynchrone est envoyée si la haute disponibilité devient insoutenable.

Citrix Hypervisor gère de manière dynamique un plan de basculement qui détaille la marche à suivre en cas de défaillance d’un ensemble d’hôtes d’un pool à un moment donné. Un concept important à comprendre est la valeur host failures to tolerate, qui est définie dans le cadre de la configuration de haute disponibilité. La valeur de host failures to tolerate détermine le nombre de pannes d’hôte autorisées tout en étant en mesure de redémarrer toutes les machines virtuelles protégées. Par exemple, considérez un pool de ressources composé de 64 hôtes et host failures to tolerate défini sur 3. Dans ce cas, le pool calcule un plan de basculement qui permet à trois hôtes quelconques de tomber en panne, puis redémarre les machines virtuelles sur d’autres hôtes. Si aucun plan n’est trouvé, le pool est considéré comme étant surchargé. Le plan est recalculé dynamiquement en fonction des opérations et des mouvements du cycle de vie des machines virtuelles. Si des modifications (par exemple, l’ajout de nouvelles machines virtuelles au pool) entraînent un surengagement du pool, des alertes sont envoyées via XenCenter ou par e-mail.

Avertissement de surcharge

Si des tentatives de démarrage ou de reprise d’une machine virtuelle entraînent un surengagement du pool, une alerte d’avertissement s’affiche dans XenCenter. Vous pouvez ensuite choisir d’annuler l’opération ou de continuer quand même. Si vous continuez, le pool est surchargé et un message est envoyé à toutes les adresses e-mail configurées. Ceci est également disponible en tant qu’instance de message via l’API de gestion. La quantité de mémoire utilisée par les machines virtuelles de différentes priorités est affichée au niveau du pool et de l’hôte.

Escrime hôte

Parfois, un serveur peut tomber en panne en raison d’une perte de connectivité réseau ou en cas de problème avec la pile de contrôle. Dans de tels cas, le serveur Citrix Hypervisor se délimite automatiquement pour s’assurer que les machines virtuelles ne s’exécutent pas simultanément sur deux serveurs. Lorsqu’une action de clôture est entreprise, le serveur redémarre immédiatement et brusquement, ce qui entraîne l’arrêt de toutes les machines virtuelles qui s’exécutent sur celui-ci. Les autres serveurs détectent que les machines virtuelles ne sont plus en cours d’exécution, puis les machines virtuelles sont redémarrées en fonction des priorités de redémarrage qui leur sont attribuées. Le serveur clôturé entre dans une séquence de redémarrage et, lorsqu’il a redémarré, il essaie de rejoindre le pool de ressources.

Remarque :

Les hôtes des pools en cluster peuvent également se protéger eux-mêmes lorsqu’ils ne peuvent pas communiquer avec plus de la moitié des autres hôtes du pool de ressources. Pour plus d’informations, consultez Pools en cluster.

Configuration requise

Pour utiliser la fonctionnalité de haute disponibilité, vous devez :

  • Pool Citrix Hypervisor (cette fonctionnalité fournit une haute disponibilité au niveau du serveur au sein d’un seul pool de ressources).

    Remarque :

    Nous vous recommandons d’activer la haute disponibilité uniquement dans les pools contenant au moins 3 serveurs Citrix Hypervisor. Pour plus d’informations, consultez CTX129721 - Comportement de haute disponibilité en cas de perte du rythme cardiaque dans un pool.

  • Stockage partagé, y compris au moins un LUN iSCSI, NFS ou Fibre Channel d’une taille de 356 Mo ou plus, le rythme cardiaque SR. Le mécanisme de haute disponibilité crée deux volumes sur le rythme cardiaque SR :

    • Volume de pulsation de 4 Mo : utilisé pour fournir un rythme cardiaque.
    • Volume de métadonnées de 256 Mo : pour stocker les métadonnées maîtresses de pool à utiliser en cas de basculement principal.

    Remarque :

    Auparavant, nous vous recommandons d’utiliser un référentiel de stockage NFS ou iSCSI dédié comme disque Heartbeat à haute disponibilité. Toutefois, cela n’est utile que si le référentiel de stockage ne partage pas de ressources sur l’appliance de stockage sous-jacente, sinon cela ne fait qu’accroître la complexité et l’utilisation des ressources dans le domaine de contrôle (dom0) de l’hôte.

    Si votre pool est un pool en cluster, votre SR de pulsation doit être une SR GFS2.

    Le stockage connecté via SMB ou iSCSI lorsqu’il est authentifié à l’aide du protocole CHAP ne peut pas être utilisé comme SR de pulsation.

  • Adresses IP statiques pour tous les hôtes.

    Avertissement :

    Si l’adresse IP d’un serveur change alors que la haute disponibilité est activée, la haute disponibilité suppose que le réseau de l’hôte a échoué. Le changement d’adresse IP peut clôturer l’hôte et le laisser dans un état impossible à démarrer. Pour remédier à cette situation, désactivez la haute disponibilité à l’aide de la commande host-emergency-ha-disable, réinitialisez le pool principal à l’aide de pool-emergency-reset-master, puis réactivez la haute disponibilité.

  • Pour une fiabilité maximale, nous vous recommandons d’utiliser une interface liée dédiée en tant que réseau de gestion haute disponibilité.

Pour qu’une machine virtuelle soit protégée par la haute disponibilité, elle doit être agile. Cela signifie que la machine virtuelle :

  • Ses disques virtuels doivent être stockés sur un stockage partagé. Vous pouvez utiliser n’importe quel type de stockage partagé. Le LUN iSCSI, NFS ou Fibre Channel n’est requis que pour le battement de cœur de stockage et peut être utilisé pour le stockage sur disque virtuel.

  • Peut utiliser la migration en direct.

  • Aucune connexion à un lecteur de DVD local n’est configurée.

  • Possède ses interfaces réseau virtuelles sur les réseaux à l’échelle du pool.

Remarque :

Lorsque la haute disponibilité est activée, nous vous recommandons vivement d’utiliser une interface de gestion liée sur les serveurs du pool et un stockage multichemin pour le SR de pulsation.

Si vous créez des VLAN et des interfaces liées à partir de l’interface de ligne de commande, il se peut qu’ils ne soient pas branchés et actifs malgré leur création. Dans ce cas, une machine virtuelle peut sembler ne pas être agile et elle n’est pas protégée par une haute disponibilité. Vous pouvez utiliser la commande CLI pif-plug pour afficher le VLAN et les PIF de liaison afin que la machine virtuelle devienne agile. Vous pouvez également déterminer précisément pourquoi une machine virtuelle n’est pas agile à l’aide de la commande CLI xe diagnostic-vm-status. Cette commande analyse ses contraintes de placement et vous pouvez prendre des mesures correctives si nécessaire.

Redémarrer les paramètres de configuration

Les machines virtuelles peuvent être considérées comme protégées, au mieux ou non protégées par la haute disponibilité. La valeur de ha-restart-priority définit si une machine virtuelle est traitée comme protégée, au mieux ou non protégée. Le comportement de redémarrage des machines virtuelles de chacune de ces catégories est différent.

Protégé

La haute disponibilité garantit le redémarrage d’une machine virtuelle protégée qui passe hors ligne ou dont l’hôte est hors ligne, à condition que le pool ne soit pas surengagé et que la machine virtuelle soit agile.

Si une machine virtuelle protégée ne peut pas être redémarrée en cas de défaillance d’un serveur, la haute disponibilité tente de démarrer la machine virtuelle lorsqu’il y a une capacité supplémentaire dans un pool. Les tentatives de démarrage de la machine virtuelle lorsqu’il y a une capacité supplémentaire peuvent désormais réussir.

ha-restart-priority Valeur : restart

Meilleur effort

Si l’hôte d’une machine virtuelle se met hors ligne, la haute disponibilité tente de redémarrer la machine virtuelle au mieux sur un autre hôte. Cette tentative n’est effectuée qu’une fois que toutes les machines virtuelles protégées ont été redémarrées avec succès. La haute disponibilité ne permet qu’une seule tentative de redémarrage d’une machine virtuelle au mieux. Si cette tentative échoue, la haute disponibilité n’effectue pas d’autres tentatives de redémarrage de la machine virtuelle.

ha-restart-priority Valeur : best-effort

Non protégé

Si une machine virtuelle non protégée ou l’hôte sur lequel elle s’exécute est arrêté, la haute disponibilité ne tente pas de redémarrer la machine virtuelle.

ha-restart-priority Valeur : la valeur est une chaîne vide

Remarque :

La haute disponibilité n’arrête ni ne migre jamais une machine virtuelle en cours d’exécution pour libérer des ressources pour redémarrer une machine virtuelle protégée ou au mieux.

Si le pool connaît des défaillances de serveur et que le nombre de défaillances tolérables tombe à zéro, il n’est pas garanti que les machines virtuelles protégées redémarrent. Dans ce cas, une alerte système est générée. Si une autre défaillance se produit, toutes les machines virtuelles dont la priorité de redémarrage est définie se comportent selon le meilleur comportement possible.

Ordre de départ

L’ordre de démarrage est l’ordre dans lequel Citrix Hypervisor High Availability tente de redémarrer les machines virtuelles protégées en cas de défaillance. Les valeurs de la order propriété de chacune des machines virtuelles protégées déterminent l’ordre de démarrage.

La order propriété d’une machine virtuelle est utilisée par la haute disponibilité ainsi que par d’autres fonctionnalités qui démarrent et arrêtent les machines virtuelles. Toutes les machines virtuelles peuvent avoir le jeu de order propriétés, et pas seulement les machines virtuelles marquées comme protégées pour la haute disponibilité. Toutefois, la haute disponibilité utilise cette order propriété uniquement pour les machines virtuelles protégées.

La valeur de laorder propriété est un entier. La valeur par défaut est 0, qui est la priorité la plus élevée. Les machines virtuelles protégées avec une order valeur de 0 sont redémarrées d’abord par la haute disponibilité. Plus la valeur de laorder propriété est élevée, plus tard dans la séquence, la machine virtuelle est redémarrée.

Vous pouvez définir la valeur de la propriété order d’une machine virtuelle à l’aide de l’interface de ligne de commande :

xe vm-param-set uuid=<vm uuid> order=<int>
<!--NeedCopy-->

Ou dans XenCenter, dans le panneau Options de démarrage d’une machine virtuelle, définissez l’ ordre de démarrage sur la valeur requise.

Activez la haute disponibilité sur votre pool Citrix Hypervisor

Vous pouvez activer la haute disponibilité sur un pool à l’aide de XenCenter ou de l’interface de ligne de commande (CLI). Dans les deux cas, vous spécifiez un ensemble de priorités qui déterminent quelles machines virtuelles reçoivent la priorité de redémarrage la plus élevée lorsqu’un pool est surengagé.

Avertissements :

  • Lorsque vous activez la haute disponibilité, certaines opérations qui compromettent le plan de redémarrage des machines virtuelles (comme la suppression d’un serveur d’un pool) peuvent être désactivées. Vous pouvez désactiver temporairement la haute disponibilité pour effectuer de telles opérations, ou bien rendre les machines virtuelles protégées par la haute disponibilité non protégées.

  • Si la haute disponibilité est activée, vous ne pouvez pas activer le clustering sur votre pool. Désactivez temporairement la haute disponibilité pour activer le clustering. Vous pouvez activer la haute disponibilité sur votre pool en cluster. Certains comportements de haute disponibilité, tels que l’auto-clôture, sont différents pour les pools en cluster. Pour plus d’informations, consultez Pools en cluster.

Activer la haute disponibilité à l’aide de l’interface de ligne de commande

  1. Vérifiez que vous disposez d’un référentiel de stockage (SR) compatible connecté à votre pool. Les SR iSCSI, NFS ou Fibre Channel sont compatibles. Pour plus d’informations sur la configuration d’un tel référentiel de stockage à l’aide de l’interface de ligne de commande, voir Gérer les référentiels de stockage.

  2. Pour chaque machine virtuelle que vous souhaitez protéger, définissez une priorité de redémarrage et un ordre de démarrage. Vous pouvez définir la priorité de redémarrage comme suit :

    xe vm-param-set uuid=<vm uuid> ha-restart-priority=restart order=1
    <!--NeedCopy-->
    
  3. Activez la haute disponibilité sur le pool et, éventuellement, spécifiez un délai d’expiration :

    xe pool-ha-enable heartbeat-sr-uuids=<sr uuid> ha-config:timeout=<timeout in seconds>
    <!--NeedCopy-->
    

    Vous pouvez également définir un délai d’expiration par défaut pour votre pool. Pour plus d’informations sur la façon de définir un délai d’attente, voir Configurer un délai d’expiration de haute disponibilité.

  4. Exécutez la commande pool-ha-compute-max-host-failures-to-tolerate. Cette commande renvoie le nombre maximal d’hôtes susceptibles de tomber en panne avant que les ressources ne soient insuffisantes pour exécuter toutes les machines virtuelles protégées du pool.

    xe pool-ha-compute-max-host-failures-to-tolerate
    <!--NeedCopy-->
    

    Le nombre de défaillances à tolérer détermine le moment où une alerte est envoyée. Le système recalcule un plan de basculement à mesure que l’état du pool change. Il utilise ce calcul pour identifier la capacité du pool et le nombre de défaillances supplémentaires possibles sans perte de la garantie de disponibilité des machines virtuelles protégées. Une alerte système est générée lorsque cette valeur calculée tombe en dessous de la valeur spécifiée pour ha-host-failures-to-tolerate.

  5. Spécifiez le paramètre ha-host-failures-to-tolerate. La valeur doit être inférieure ou égale à la valeur calculée :

    xe pool-param-set ha-host-failures-to-tolerate=2 uuid=<pool uuid>
    <!--NeedCopy-->
    

Configurer un délai d’expiration de haute disponibilité

Le délai d’expiration de haute disponibilité est la période pendant laquelle le réseau ou le stockage ne sont pas accessibles aux hôtes de votre pool. Si un serveur Citrix Hypervisor n’est pas en mesure d’accéder au réseau ou au stockage dans le délai imparti, il peut s’auto-clôturer et redémarrer. Le délai d’expiration par défaut est de 60 secondes. Vous pouvez toutefois modifier cette valeur à l’aide de la commande suivante.

Définissez un délai d’expiration de haute disponibilité par défaut pour votre pool :

xe pool-param-set uuid=<pool uuid> other-config:default_ha_timeout=<timeout in seconds>
<!--NeedCopy-->

Si vous activez la haute disponibilité en utilisant XenCenter au lieu de l’interface de ligne de commande xe, cette valeur par défaut s’applique toujours.

Vous pouvez également définir un délai d’expiration lorsque vous activez la haute disponibilité :

xe pool-ha-enable heartbeat-sr-uuids=<sr uuid> ha-config:timeout=<timeout in seconds>
<!--NeedCopy-->

Notez que si vous définissez un délai d’expiration lors de l’activation de la haute disponibilité, cela ne s’applique qu’à cette activation spécifique. Par conséquent, si vous désactivez, puis réactivez la haute disponibilité ultérieurement, la fonctionnalité de haute disponibilité revient à utiliser le délai d’expiration par défaut.

Supprimer la protection haute disponibilité d’une machine virtuelle à l’aide de la CLI

Pour désactiver les fonctionnalités de haute disponibilité pour une machine virtuelle, utilisez la commande xe vm-param-set pour définir le paramètre ha-restart-priority comme une chaîne vide. La définition du paramètre ha-restart-priority n’efface pas les paramètres de l’ordre de départ. Vous pouvez réactiver la haute disponibilité pour une machine virtuelle en définissant le paramètre ha-restart-priority sur restart ou best-effort selon le cas.

Récupérer un hôte inaccessible

Si, pour une raison quelconque, un hôte ne peut pas accéder au fichier d’état de haute disponibilité, il est possible qu’un hôte devienne inaccessible. Pour récupérer votre installation Citrix Hypervisor, vous devrez peut-être désactiver la haute disponibilité à l’aide de la commande host-emergency-ha-disable :

xe host-emergency-ha-disable --force
<!--NeedCopy-->

Si l’hôte était le maître du pool, il démarre normalement avec la haute disponibilité désactivée. Les membres du pool se reconnectent et désactivent automatiquement la haute disponibilité Si l’hôte était membre du pool et ne peut pas contacter le maître, vous devrez peut-être prendre l’une des mesures suivantes :

  • Forcer le redémarrage de l’hôte en tant que maître de pool (xe pool-emergency-transition-to-master)

     xe pool-emergency-transition-to-master uuid=<host uuid>
     <!--NeedCopy-->
    
  • Indiquez à l’hôte où se trouve le nouveau maître (xe pool-emergency-reset-master) :

     xe pool-emergency-reset-master master-address=<new master hostname>
     <!--NeedCopy-->
    

Lorsque tous les hôtes ont redémarré avec succès, réactivez la haute disponibilité :

xe pool-ha-enable heartbeat-sr-uuid=<sr uuid>
<!--NeedCopy-->

Arrêt d’un hôte lorsque la haute disponibilité est activée

Faites particulièrement attention lors de l’arrêt ou du redémarrage d’un hôte pour empêcher le mécanisme de haute disponibilité de supposer que l’hôte a échoué. Pour arrêter proprement un hôte lorsque la haute disponibilité est activée, désactivez l’hôte, évacuez l’hôte et enfin arrêtez l’hôte à l’aide de XenCenter ou de l’interface de ligne de commande. Pour arrêter un hôte dans un environnement où la haute disponibilité est activée, exécutez les commandes suivantes :

xe host-disable host=<host name>
xe host-evacuate uuid=<host uuid>
xe host-shutdown host=<host name>
<!--NeedCopy-->

Arrêter une machine virtuelle protégée par la haute disponibilité

Lorsqu’une machine virtuelle est protégée dans le cadre d’un plan de haute disponibilité et configurée pour redémarrer automatiquement, elle ne peut pas être arrêtée tant que cette protection est active. Pour arrêter une machine virtuelle, désactivez d’abord sa protection de haute disponibilité, puis exécutez la commande CLI. XenCenter vous propose une boîte de dialogue pour automatiser la désactivation de la protection lorsque vous sélectionnez le bouton Arrêter d’une machine virtuelle protégée.

Remarque :

Si vous arrêtez une machine virtuelle depuis l’invité et que celle-ci est protégée, elle est automatiquement redémarrée dans des conditions de défaillance de haute disponibilité. Le redémarrage automatique permet de s’assurer qu’une erreur de l’opérateur n’entraîne pas l’arrêt accidentel d’une machine virtuelle protégée. Si vous souhaitez arrêter cette machine virtuelle, désactivez d’abord sa protection haute disponibilité.

Haute disponibilité