Définir la stratégie de maintenance de l'hôte d'une VM


Ce document explique comment définir la stratégie de maintenance de l'hôte d'une instance de machine virtuelle (VM) pour contrôler le comportement de la VM lorsqu'un Événement hôte se produit.

Avant de commencer

  • Si ce n'est pas déjà fait, configurez l'authentification. L'authentification est le processus permettant de valider votre identité pour accéder aux services et aux API Google Cloud. Pour exécuter du code ou des exemples depuis un environnement de développement local, vous pouvez vous authentifier auprès de Compute Engine comme suit :

    Sélectionnez l'onglet correspondant à la façon dont vous prévoyez d'utiliser les exemples de cette page :

    Console

    Lorsque vous utilisez la console Google Cloud pour accéder aux services et aux API Google Cloud, vous n'avez pas besoin de configurer l'authentification.

    gcloud

    1. Install the Google Cloud CLI, then initialize it by running the following command:

      gcloud init
    2. Définissez une région et une zone par défaut.

    REST

    Pour utiliser les exemples d'API REST de cette page dans un environnement de développement local, vous devez utiliser les identifiants que vous fournissez à gcloud CLI.

      Install the Google Cloud CLI, then initialize it by running the following command:

      gcloud init

Limites

  • Vous ne pouvez pas modifier la stratégie de maintenance de l'hôte d'une VM préemptive. En cas d'événement de maintenance, la VM préemptive s'arrête et la migration n'est pas effectuée. Vous devez redémarrer manuellement la VM préemptée.
  • Une fois que vous avez créé une VM à l'aide d'un type de machine E2, vous ne pouvez pas modifier les paramètres de maintenance de l'hôte de la VM en remplaçant MIGRATE par TERMINATE ou inversement.

Propriétés de maintenance de l'hôte disponibles

Vous pouvez configurer les comportements de maintenance et de redémarrage d'une VM, et son comportement après une erreur d'hôte, avec les propriétés suivantes.

Compute Engine configure chaque VM avec les valeurs par défaut, sauf si vous avez spécifié des valeurs.

Lors des événements hôtes, en fonction de la stratégie de maintenance de l'hôte configurée, les VM non compatibles avec la migration à chaud sont arrêtées ou redémarrées automatiquement.

  • onHostMaintenance : détermine le comportement en cas d'événement de maintenance susceptible de provoquer le redémarrage de la VM.

    • MIGRATE (Par défaut) : entraîne la migration à chaud de l'instance par Compute Engine lors d'un événement de maintenance.
    • TERMINATE : arrête une VM au lieu de la migrer.
  • automaticRestart : détermine le comportement en cas de plantage ou d'arrêt d'une VM par le système.

    • true (Par défaut) : Compute Engine redémarre une instance si celle-ci plante ou est arrêtée.
    • false : Compute Engine ne redémarre pas une VM si celle-ci plante ou est arrêtée.
  • localSsdRecoveryTimeout : définit le délai avant expiration de récupération des disques SSD locaux. Il s'agit de la durée maximale, en heures, pendant laquelle Compute Engine attend de récupérer les données des disques SSD locaux après une erreur d'hôte. Ce paramètre ne s'applique qu'aux VM auxquelles sont associés des disques SSD locaux.

    • Non défini (Par défaut) : Compute Engine attend jusqu'à une heure pour récupérer le disque. Pour les VM Z3 (bêta), le temps d'attente par défaut est de 4 heures.
    • Nombre compris entre 0 et 168 : spécifie la durée pendant laquelle Compute Engine attend avant de récupérer le disque. Le nombre doit être un entier, par incréments d'une heure, avec une valeur maximale de sept jours. La valeur 0 signifie que Compute Engine n'attend pas de récupérer les données.
  • hostErrorTimeoutSeconds (Bêta) : définit la durée maximale, en secondes, pendant laquelle Compute Engine attend de redémarrer ou d'arrêter une VM après avoir détecté qu'elle ne répondait pas.

    • Non défini (Par défaut) : Compute Engine attend jusqu'à 5,5 minutes (330 secondes) avant de redémarrer une VM qui ne répond pas.
    • Nombre compris entre 90 et 330 : spécifie le nombre de secondes, par incréments de 30, pendant lequel Compute Engine attend avant de redémarrer une VM qui ne répond pas.

Définir la stratégie de maintenance de l'hôte d'une VM

Vous pouvez modifier la stratégie de maintenance de l'hôte d'une VM au moment de la création de la VM ou après sa création.

Définir la stratégie de maintenance de l'hôte lors de la création d'une VM

Les informations de cette section expliquent comment définir la stratégie de maintenance de l'hôte lorsque vous créez une VM. Pour voir d'autres exemples de création de VM, consultez la page Créer et démarrer une instance de VM.

Vous pouvez définir la stratégie de maintenance de l'hôte d'une VM lors de sa création à l'aide de la console Google Cloud, de gcloud CLI ou de l'API Compute Engine.

Console

  1. Accédez à la page Créer une instance dans Google Cloud Console.

    Accéder à Créer une instance

  2. Spécifiez un nom pour la VM.

  3. Sélectionnez une région et une zone pour la VM.

  4. Dans la section Configuration de la machine, procédez comme suit :

    1. Spécifiez les détails du type de machine pour la VM.
    2. Développez le menu Paramètres avancés du modèle de provisionnement de la VM.
    3. Dans le menu Pendant la maintenance de l'hôte, sélectionnez l'une des étapes suivantes :
    4. Pour migrer des VM lors d'événements de maintenance, sélectionnez Migrer l'instance de VM.
    5. Pour arrêter les VM lors des événements de maintenance, sélectionnez Arrêter l'instance de VM.
  5. Pour créer la VM, cliquez sur Créer.

gcloud

In the Google Cloud console, activate Cloud Shell.

Activate Cloud Shell

At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.

Pour définir la stratégie de maintenance de l'hôte d'une nouvelle VM, utilisez la commande gcloud compute instances create. Incluez un ou plusieurs des paramètres suivants :

  • --maintenance-policy : indique si la VM est migrée ou arrêtée lors de la maintenance de l'hôte. Si vous omettez cette propriété, la VM est migrée par défaut.
  • --no-restart-on-failure ou --restart-on-failure : indique si la VM redémarre automatiquement après une erreur d'hôte. Par défaut, la VM redémarre toujours lorsqu'une défaillance est détectée.
  • --local-ssd-recovery-timeout : temps que Compute Engine passe à récupérer des disques SSD locaux associés après une erreur d'hôte. La valeur par défaut est d'une heure.

Définissez la stratégie de maintenance de l'hôte d'une nouvelle VM à l'aide de la commande suivante. Si vous omettez l'une des options, la valeur par défaut de l'option est utilisée.

  gcloud compute instances create VM_NAME \
      --maintenance-policy=MAINTENANCE_POLICY \
      --RESTART_ON_FAILURE_BEHAVIOR \
      --local-ssd-recovery-timeout=SSD_RECOVERY_TIMEOUT

Remplacez les éléments suivants :

  • VM_NAME : nom de la VM.
  • MAINTENANCE_POLICY : règle de maintenance de cette VM, TERMINATE ou MIGRATE.
  • RESTART_ON_FAILURE_BEHAVIOR : comportement de redémarrage de la VM, défini sur --no-restart-on-failure ou --restart-on-failure.
  • SSD_RECOVERY_TIMEOUT : nombre d'heures à consacrer à la récupération d'un disque SSD local associé à une VM qui ne répond pas. Les valeurs valides sont comprises entre 0 et 168, par incréments d'une heure.

Définir le délai avant expiration de la détection des erreurs de l'hôte

Pour définir la durée maximale pendant laquelle Compute Engine attend avant de redémarrer ou d'arrêter une VM qui ne répond pas, utilisez la commande gcloud compute instances create. Spécifiez le délai avant expiration avec l'option --host-error-timeout-seconds.

  gcloud beta compute instances create VM_NAME \
      --maintenance-policy=MAINTENANCE_POLICY \
      --RESTART_ON_FAILURE_BEHAVIOR \
      --local-ssd-recovery-timeout=SSD_RECOVERY_TIMEOUT \
      --host-error-timeout-seconds=ERROR_DETECTION_TIMEOUT

Remplacez les éléments suivants :

  • VM_NAME : nom de la VM.
  • MAINTENANCE_POLICY : règle de maintenance de cette VM, TERMINATE ou MIGRATE.
  • RESTART_ON_FAILURE_BEHAVIOR : comportement de redémarrage de la VM, défini sur --no-restart-on-failure ou --restart-on-failure.
  • SSD_RECOVERY_TIMEOUT : nombre d'heures que Compute Engine passe à récupérer un disque SSD local associé à une VM qui ne répond pas. Les valeurs valides sont comprises entre 0 et 168, par incréments d'une heure.
  • ERROR_DETECTION_TIMEOUT : délai d'attente en secondes avant que Compute Engine ne redémarre une VM qui ne répond pas, de 90 à 330, par incréments de 30.

REST

Pour définir la stratégie de maintenance de l'hôte d'une nouvelle VM à l'aide de l'API Compute Engine, utilisez la méthode instances.insert. Incluez une ou plusieurs des propriétés suivantes dans l'objet scheduling du corps de la requête :

  • onHostMaintenance : indique si la VM est migrée ou arrêtée lors de la maintenance de l'hôte. La VM est migrée par défaut.
  • automaticRestart : indique si la VM redémarre automatiquement après une erreur d'hôte. Les VM sont redémarrées automatiquement par défaut.
  • localSsdRecoveryTimeout : temps passé par Compute Engine pour récupérer des disques SSD locaux associés après la détection d'une erreur d'hôte. La valeur par défaut est d'une heure.
      POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances

      {
        "name": "VM_NAME",

        "scheduling": {
          "onHostMaintenance": "MAINTENANCE_POLICY",
          "automaticRestart": "RESTART_POLICY,
          "localSsdRecoveryTimeout": SSD_RECOVERY_TIMEOUT
        }
      }

Remplacez les éléments suivants :

  • PROJECT_ID : projet de la VM.
  • ZONE : zone dans laquelle vous souhaitez créer la VM.
  • VM_NAME : nom de la VM.
  • MAINTENANCE_POLICY : règle de maintenance de cette VM, TERMINATE ou MIGRATE.
  • RESTART_POLICY : règle de redémarrage de cette VM, true ou false
  • SSD_RECOVERY_TIMEOUT : nombre d'heures passées par Compute Engine pour récupérer un disque SSD local associé à une VM qui ne répond pas. Les valeurs valides sont comprises entre 0 et 168, par incréments d'une heure.

Définir le délai avant expiration de la détection des erreurs de l'hôte

Pour définir la durée maximale pendant laquelle Compute Engine attend avant de redémarrer ou d'arrêter une VM qui ne répond pas, utilisez la méthode instances.insert en version bêta car cette option est disponible dans la version bêta.

Ajoutez la propriété hostErrorTimeoutSeconds à l'objet scheduling du corps de la requête.


   POST https://compute.googleapis.com/compute/beta/projects/PROJECT_ID/zones/ZONE/instances

   {
      "name": "VM_NAME",

      "scheduling": {
        "onHostMaintenance": "MAINTENANCE_POLICY",
        "automaticRestart": "RESTART_POLICY,
        "localSsdRecoveryTimeout": SSD_RECOVERY_TIMEOUT
        "hostErrorTimeoutSeconds": HOST_ERROR_TIMEOUT,
      }
    }

Remplacez les éléments suivants :

  • PROJECT_ID : projet de la VM.
  • ZONE : zone dans laquelle vous souhaitez créer la VM.
  • VM_NAME : nom de la VM.
  • MAINTENANCE_POLICY : règle de maintenance de cette VM, TERMINATE ou MIGRATE.
  • RESTART_POLICY : règle de redémarrage de cette VM, true ou false
  • SSD_RECOVERY_TIMEOUT : nombre d'heures passées par Compute Engine pour récupérer un disque SSD local associé à une VM qui ne répond pas. Les valeurs valides sont comprises entre 0 et 168, par incréments d'une heure.
  • HOST_ERROR_TIMEOUT : délai d'attente en secondes avant que Compute Engine ne redémarre ou n'arrête une VM qui ne répond pas. Les valeurs valides sont comprises entre 90 et 330, par incréments de 30.

Mettre à jour la stratégie de maintenance de l'hôte d'une VM existante

Console

  1. Dans la console Google Cloud, accédez à la page Instances de VM.

    Accéder à la page "Instances de VM"

  2. Cliquez sur la VM dont vous souhaitez modifier les paramètres. La page des détails de la VM s'affiche.

  3. Sur la page des détails de la VM, procédez comme suit :

    1. Cliquez sur le bouton Modifier en haut de la page.
    2. Accédez à la section Gestion. Dans la section Règles de disponibilité, vous pouvez configurer les options Pendant la maintenance de l'hôte et Redémarrage automatique.
    3. Cliquez sur Enregistrer.

gcloud

In the Google Cloud console, activate Cloud Shell.

Activate Cloud Shell

At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.

Mettez à jour la stratégie de maintenance de l'hôte d'une VM existante à l'aide de la commande gcloud compute instances set-scheduling. Utilisez les mêmes paramètres que ceux décrits dans la commande de création de VM de la section précédente.

    gcloud compute instances set-scheduling VM_NAME \
      --maintenance-policy=MAINTENANCE_POLICY \
      --RESTART_ON_FAILURE_BEHAVIOR \
      --local-ssd-recovery-timeout=SSD_RECOVERY_TIMEOUT

Remplacez les éléments suivants :

  • VM_NAME : nom de la VM.
  • MAINTENANCE_POLICY : règle de cette VM, TERMINATE ou MIGRATE
  • RESTART_ON_FAILURE_BEHAVIOR : comportement au redémarrage de la VM, --no-restart-on-failure ou --restart-on-failure.
  • SSD_RECOVERY_TIMEOUT : temps en heures passé par Compute Engine à récupérer un disque SSD local associé à une VM qui ne répond pas. Les valeurs valides sont comprises entre 0 et 168.

Mettre à jour le délai avant expiration de la détection des erreurs de l'hôte

Pour mettre à jour le délai maximal pendant lequel Compute Engine attend avant de redémarrer ou d'arrêter une VM qui ne répond pas, exécutez la commande gcloud beta compute instances set-scheduling, car cette fonctionnalité n'est disponible qu'en version bêta.

Mettez à jour le délai avant expiration à l'aide du paramètre --host-error-timeout-seconds. Par exemple :

    gcloud beta compute instances set-scheduling VM_NAME \
      --maintenance-policy=MAINTENANCE_POLICY \
      --RESTART_ON_FAILURE_BEHAVIOR \
      --local-ssd-recovery-timeout=SSD_RECOVERY_TIMEOUT \
      --host-error-timeout-seconds=NUMBER_OF_SECONDS

Remplacez les éléments suivants :

  • VM_NAME : nom de la VM.
  • MAINTENANCE_POLICY : règle de maintenance de cette VM, TERMINATE ou MIGRATE.
  • RESTART_ON_FAILURE_BEHAVIOR : comportement de redémarrage de la VM, défini sur --no-restart-on-failure ou --restart-on-failure.
  • SSD_RECOVERY_TIMEOUT : temps en heures passé par Compute Engine à récupérer un disque SSD local associé à une VM qui ne répond pas. Les valeurs valides sont comprises entre 0 et 168.
  • NUMBER_OF_SECONDS : délai d'attente en secondes avant que Compute Engine n'arrête ou ne redémarre une VM qui ne répond pas, de 90 à 330, par incréments de 30.

REST

Mettez à jour la stratégie de maintenance de l'hôte d'une VM existante en envoyant une requête POST à la méthode instances.setScheduling.

Incluez une ou plusieurs des propriétés suivantes dans le corps de la requête :

  • onHostMaintenance : indique si la VM est migrée ou arrêtée lors de la maintenance de l'hôte. La VM est migrée par défaut.
  • automaticRestart : indique si la VM redémarre automatiquement après une erreur d'hôte. Les VM sont redémarrées automatiquement par défaut.
  • localSsdRecoveryTimeout : temps passé par Compute Engine pour récupérer des disques SSD locaux associés après la détection d'une erreur d'hôte. Si aucune valeur n'est spécifiée, la valeur par défaut est d'une heure.
    POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/VM_NAME/setScheduling

    {
      "onHostMaintenance": "MAINTENANCE_POLICY",
      "automaticRestart": RESTART_POLICY,
      "localSsdRecoveryTimeout": SSD_RECOVERY_TIMEOUT
    }

Remplacez les éléments suivants :

  • PROJECT_ID : projet de la VM.
  • ZONE : zone où se trouve la VM.
  • VM_NAME : nom de la VM.
  • MAINTENANCE_POLICY : règle de maintenance de cette VM, TERMINATE ou MIGRATE.
  • RESTART_POLICY : règle de redémarrage de cette VM, true ou false
  • SSD_RECOVERY_TIMEOUT : temps en heures passé par Compute Engine à récupérer un disque SSD local associé à une VM qui ne répond pas. Les valeurs valides sont comprises entre 0 et 168.

Mettre à jour le délai avant expiration de la détection des erreurs de l'hôte

Pour mettre à jour le délai maximal pendant lequel Compute Engine attend avant de redémarrer ou d'arrêter une VM qui ne répond pas, vous devez utiliser la méthode instances.setScheduling bêta, car cette fonctionnalité est disponible en version Bêta.

Ajoutez le paramètre hostErrorTimeoutSeconds au corps de la requête.

  POST https://compute.googleapis.com/compute/beta/projects/PROJECT_ID/zones/ZONE/instances/VM_NAME/setScheduling

  {
    "hostErrorTimeoutSeconds": NUMBER_OF_SECONDS,
  }

Remplacez les éléments suivants :

  • PROJECT_ID : projet de la VM.
  • ZONE : zone où se trouve la VM.
  • VM_NAME : nom de la VM.
  • NUMBER_OF_SECONDS : délai d'attente en secondes avant que Compute Engine n'arrête ou ne redémarre une VM qui ne répond pas, de 90 à 330, par incréments de 30.

Afficher les paramètres des stratégies de maintenance de l'hôte d'une VM

Console

  1. Accédez à la page Instances de VM.

    Accéder à la page "Instances de VM"

  2. Cliquez sur le nom de la VM dont vous souhaitez afficher les paramètres. La page Détails de l'instance de VM s'affiche.

  3. Accédez à la section Gestion. La sous-section Règles de disponibilité affiche les paramètres actuels pour la maintenance de l'hôte et le redémarrage automatique.

gcloud

Affichez les paramètres des options de maintenance de l'hôte pour une VM à l'aide de la commande gcloud compute instances describe suivante :

    gcloud compute instances describe VM_NAME --format="yaml(scheduling)"

Remplacez VM_NAME par le nom de la VM.

Le résultat inclut le délai de détection des erreurs de l'hôte de la VM, par exemple :

    scheduling:
      automaticRestart: true
      localSsdRecoveryTimeout:
        nanos: 0
        seconds: '10800'
      onHostMaintenance: MIGRATE
      preemptible: false
      provisioningModel: STANDARD

Afficher le paramètre de délai avant expiration pour la détection d'erreur de l'hôte

Affichez la valeur actuelle de hostErrorTimeoutSeconds à l'aide de la commande gcloud beta compute instances describe, car cette option n'est disponible qu'en version bêta.

  gcloud beta compute instances describe VM_NAME --format="yaml(scheduling)"

Remplacez VM_NAME par le nom de la VM.

Le résultat inclut le délai de détection des erreurs de l'hôte de la VM, par exemple :

  scheduling:
    automaticRestart: true
    hostErrorTimeoutSeconds: 120
    localSsdRecoveryTimeout:
      nanos: 0
      seconds: '10800'
    onHostMaintenance: MIGRATE
    preemptible: false
    provisioningModel: STANDARD

REST

Pour afficher les paramètres d'option de maintenance de l'hôte d'une VM, utilisez la méthode instances.get :

  GET https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/VM_NAME

Remplacez les éléments suivants :

  • PROJECT_ID : projet dans lequel se trouve la VM
  • ZONE : zone où se trouve la VM.
  • VM_NAME : nom de la VM.

Dans le résultat, l'objet scheduling contient la stratégie de maintenance de l'hôte de la VM, par exemple :

  "scheduling": {
      "onHostMaintenance": "MIGRATE",
      "automaticRestart": true,
      "preemptible": false,
      "provisioningModel": "STANDARD",
      "localSsdRecoveryTimeout": {
        "seconds": "10800",
        "nanos": 0
      }
    }

Afficher les paramètres de délai avant expiration de l'erreur de l'hôte

Affichez le paramètre hostErrorTimeoutSeconds actuel avec une requête GET sur la méthode bêta instances.get, car cette option n'est disponible qu'en version Bêta.

 GET https://compute.googleapis.com/compute/beta/projects/PROJECT_ID/zones/ZONE/instances/VM_NAME

Remplacez les éléments suivants :

  • PROJECT_ID : projet de la VM.
  • ZONE : zone où se trouve la VM.
  • VM_NAME : nom de la VM.

Dans le résultat, l'objet scheduling inclut le délai de détection des erreurs de l'hôte de la VM, par exemple :

  "scheduling": {
    "hostErrorTimeoutSeconds": 120
  }

Étapes suivantes