XenServer

Configurer la haute disponibilité

La haute disponibilité vise à protéger la charge de travail de vos machines virtuelles en cas de défaillance de l’hôte ou du matériel.

Cet article décrit les tâches à effectuer pour configurer la haute disponibilité. Pour plus d’informations sur les concepts, les exigences et les comportements attendus de la haute disponibilité, consultez Haute disponibilité.

1. Configurer votre pool pour la haute disponibilité

Pour qu’un pool soit compatible avec la haute disponibilité, il doit remplir certaines exigences :

  1. Assurez-vous que votre pool est homogène, qu’il contient au moins trois hôtes et que tous les hôtes sont en ligne. Pour plus d’informations, consultez Créer un pool.

  2. Configurez une interface agrégée dédiée pour le réseau de gestion du pool et assurez-vous que ce réseau autorise le trafic UDP sur le port 694. Pour plus d’informations, consultez Créer des agrégations de cartes réseau dans les pools de ressources.

  3. Configurez des adresses IP statiques pour tous les hôtes du pool.

  4. Configurez un stockage partagé pour tous les hôtes du pool. Pour plus d’informations, consultez Créer un SR.

  5. Assurez-vous qu’un référentiel de stockage partagé dans le pool se trouve sur un LUN iSCSI, NFS ou Fibre Channel qui répond aux exigences suivantes :

    • 4 Go ou plus.
    • Dispose d’une communication de stockage résiliente : Pour les SR iSCSI et Fibre Channel, configurez le multipathing. Pour les SR NFS, utilisez un réseau agrégé résilient comme réseau de stockage.

    Ce SR est utilisé comme SR de pulsation.

2. Préparer vos machines virtuelles pour la haute disponibilité

Effectuez ces étapes pour toutes les machines virtuelles de votre pool que vous souhaitez protéger avec la haute disponibilité :

  1. Assurez-vous que la VM est agile :

    1. Assurez-vous que ses disques virtuels se trouvent sur un stockage partagé.

      Si les disques ne se trouvent pas sur un stockage partagé, utilisez la commande suivante pour les déplacer :

      xe vm-copy uuid=<vm_uuid> new-name-label=<name_for_copy> sr-uuid=<uuid_of_sr>

      Définissez le sr-uuid sur l’UUID du stockage partagé du pool.

    2. Assurez-vous que la VM n’est pas connectée à un lecteur de DVD local.

      1. Identifiez si la VM ne possède pas de lecteurs de CD/DVD vides en tapant ce qui suit :

        xe vbd-list type=CD empty=false vm-uuid=<vm_uuid>
        <!--NeedCopy-->
        

        S’il y a un lecteur attaché, cela renvoie ses informations. Notez le uuid, qui est le premier élément de la liste.

      2. Pour vider les lecteurs de CD/DVD de la VM, tapez ce qui suit :

        xe vbd-eject uuid=<uuid>
        <!--NeedCopy-->
        
    3. Assurez-vous que ses interfaces réseau virtuelles se trouvent sur des réseaux à l’échelle du pool.

    4. Assurez-vous que la VM répond aux exigences de la migration en direct. Pour plus d’informations, consultez Exigences de migration.

  2. Spécifiez un ensemble de priorités qui déterminent quelles VM reçoivent la priorité de redémarrage la plus élevée lorsqu’un pool est surchargé.

    Définissez la valeur de ha-restart-priority sur l’une des options suivantes :

    • restart pour que la VM soit redémarrée sur un autre hôte du pool, à condition que le pool ne soit pas surchargé. XenServer retente ce redémarrage jusqu’à ce qu’il réussisse.
    • best-effort pour tenter une seule fois de redémarrer la VM sur un autre hôte du pool. XenServer ne fait cette tentative qu’après que toutes les VM protégées ont été redémarrées avec succès.

    Lors de la définition de la valeur pour order des machines virtuelles, attribuez aux machines virtuelles de la plus haute priorité l’ordre de démarrage le plus bas. La valeur par défaut de ce paramètre est 0 et les machines virtuelles avec cet ordre de démarrage sont démarrées en premier.

    xe vm-param-set uuid=<vm_uuid> ha-restart-priority=<priority> order=<start_order>
    <!--NeedCopy-->
    

    Vous pouvez plutôt utiliser XenCenter pour configurer ces paramètres sur vos machines virtuelles. Pour plus d’informations, consultez Options de démarrage.

3. Activer la haute disponibilité sur votre pool XenServer®

Vous pouvez activer la haute disponibilité sur un pool en utilisant XenCenter ou l’interface de ligne de commande (CLI). Pour plus d’informations sur l’utilisation de XenCenter pour activer la haute disponibilité, consultez Activer la haute disponibilité.

Pour activer la haute disponibilité à l’aide de l’interface de ligne de commande xe :

  1. Pour activer la haute disponibilité sur le pool et, éventuellement, spécifier un délai d’expiration, exécutez la commande suivante :

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

    Le délai d’expiration configuré par cette commande s’applique uniquement à cette activation de la haute disponibilité. Si vous ne spécifiez pas de délai d’expiration, la valeur par défaut est de 60 secondes. Pour modifier ce délai d’expiration par défaut pour votre pool, consultez Configurer le délai d’expiration de la haute disponibilité.

  2. Calculez le nombre maximal d’hôtes pouvant tomber en panne avant que les ressources ne soient insuffisantes pour exécuter toutes les machines virtuelles protégées dans le pool en exécutant la commande suivante :

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

    Le nombre renvoyé indique le nombre de pannes d’hôtes actuellement possibles dans le pool sans perte de la garantie de vivacité pour les machines virtuelles protégées. Cette valeur peut changer à mesure que les conditions du pool évoluent.

  3. Spécifiez le nombre de pannes d’hôtes à tolérer, qui doit être inférieur ou égal à la valeur donnée à l’étape précédente.

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

    Le nombre de pannes à 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 pannes supplémentaires possibles sans perte de la garantie de vivacité pour les 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.

Configurer le délai d’expiration de la haute disponibilité

Le délai d’expiration est la période pendant laquelle le réseau ou le stockage n’est pas accessible par les hôtes de votre pool. Si un hôte XenServer ne peut pas accéder au réseau ou au stockage pendant la période de délai d’expiration, il peut s’isoler et redémarrer. Le délai d’expiration par défaut est de 60 secondes. Cependant, vous pouvez modifier cette valeur en définissant 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é à l’aide de XenCenter® au lieu de l’interface de ligne de commande xe, cette valeur par défaut s’applique toujours.

Supprimer la protection de haute disponibilité d’une machine virtuelle

Pour désactiver les fonctionnalités de haute disponibilité pour une machine virtuelle, utilisez la commande suivante :

xe vm-param-set uuid=<vm_uuid> ha-restart-priority=

Cette commande conserve les paramètres d’ordre de démarrage. Vous pouvez réactiver la haute disponibilité pour cette machine virtuelle en définissant le paramètre ha-restart-priority sur restart ou best-effort selon le cas.

Configurer le comportement de redémarrage des machines virtuelles arrêtées en interne

Si une machine virtuelle est protégée par la HA, elle est redémarrée par défaut chaque fois qu’elle s’arrête. Ce comportement inclut les arrêts internes dus à un crash de la machine virtuelle ou à un arrêt propre depuis le système d’exploitation invité.

Vous pouvez modifier ce comportement pour vous assurer que les machines virtuelles du pool activé pour la HA ne sont redémarrées que si l’hôte sur lequel elles s’exécutent tombe en panne ou est mis en quarantaine, et que dans les cas d’arrêt interne, une machine virtuelle reste arrêtée.

Pour configurer les machines virtuelles protégées par la HA afin qu’elles ne redémarrent pas automatiquement après un arrêt interne, définissez la valeur ha-reboot-vm-on-internal-shutdown sur false :

xe pool-param-set uuid=<pool_uuid> ha-reboot-vm-on-internal-shutdown=false

Pour configurer les machines virtuelles protégées par la HA afin qu’elles redémarrent automatiquement après un arrêt interne, définissez la valeur ha-reboot-vm-on-internal-shutdown sur true :

xe pool-param-set uuid=<pool_uuid> ha-reboot-vm-on-internal-shutdown=true

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 XenServer, vous devrez peut-être désactiver la haute disponibilité à l’aide de la commande host-emergency-ha-disable sur l’hôte :

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

Si l’hôte était le coordinateur de 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 un membre du pool et ne peut pas contacter le coordinateur de pool, vous devrez peut-être prendre l’une des mesures suivantes :

  • Forcer l’hôte à redémarrer en tant que coordinateur de pool (xe pool-emergency-transition-to-master)

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

     xe pool-emergency-reset-master master-address=<new pool coordinator 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êter un hôte lorsque la haute disponibilité est activée

Prenez des précautions particulières lors de l’arrêt ou du redémarrage d’un hôte pour éviter que le mécanisme de haute disponibilité ne suppose que l’hôte a échoué. Pour arrêter un hôte proprement lorsque la haute disponibilité est activée, désactivez l’hôte, évacuez l’hôte, puis arrêtez l’hôte en utilisant XenCenter ou la CLI. Pour arrêter un hôte dans un environnement où la haute disponibilité est activée, exécutez ces commandes :

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

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

Lorsqu’une VM est protégée par 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 VM, désactivez d’abord sa protection de haute disponibilité, puis exécutez la commande CLI.

xe vm-param-set uuid=<vm_uuid> ha-restart-priority=
xe vm-shutdown uuid=<vm_uuid>
<!--NeedCopy-->

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 VM protégée.

Remarque :

Si vous arrêtez une VM depuis le système d’exploitation invité, et que la VM est protégée, elle est automatiquement redémarrée dans les conditions de défaillance de la 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 VM protégée. Si vous souhaitez arrêter cette VM, désactivez d’abord sa protection de haute disponibilité.