Définir la stratégie de maintenance de l'hôte pour une instance


Ce document explique comment définir la stratégie de maintenance de l'hôte pour une instance de machine virtuelle (VM) ou bare metal afin de contrôler le comportement de l'instance 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 en sélectionnant l'une des options suivantes:

    Select the tab for how you plan to use the samples on this page:

    Console

    When you use the Google Cloud console to access Google Cloud services and APIs, you don't need to set up authentication.

    gcloud

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

      gcloud init
    2. Set a default region and zone.
    3. 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

      Pour en savoir plus, consultez la section S'authentifier pour utiliser REST dans la documentation sur l'authentification Google Cloud.

Limites

  • Vous ne pouvez pas modifier le comportement de maintenance 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 le comportement de maintenance de la VM en remplaçant MIGRATE par TERMINATE ou inversement.
  • Vous ne pouvez pas modifier le comportement de maintenance des instances bare metal telles que c3-standard-192-metal ou x4-megamem-1920-metal, qui sont définies sur TERMINATE et redémarrent automatiquement.

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

Vous pouvez configurer le comportement de maintenance, de redémarrage et d'attente en cas d'erreur de l'hôte d'une instance de calcul. Compute Engine configure chaque instance avec les valeurs par défaut, sauf si vous spécifiez des valeurs.

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

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

    • MIGRATE: entraîne la migration à chaud de l'instance par Compute Engine lors d'un événement de maintenance. Il s'agit de la valeur par défaut pour la plupart des VM.
    • TERMINATE: arrête l'instance au lieu d'utiliser la migration à chaud. Il s'agit de l'option par défaut pour les instances Z3, bare metal et avec accélérateurs tels que les GPU et les TPU. Pour ces types d'instances, vous ne pouvez pas modifier le paramètre onHostMaintenance.
  • automaticRestart: détermine le comportement en cas de plantage ou d'arrêt d'une instance 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 instance 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 des disques SSD locaux sont associés. Si vous configurez ce paramètre pour une instance qui ne dispose pas de disques SSD locaux connectés, il est ignoré.

    • Non défini (Par défaut): Compute Engine attend jusqu'à une heure pour récupérer les données du disque SSD local. Pour les VM Z3, le temps d'attente par défaut est de six heures.
    • Entier compris entre 0 et 168: spécifie le nombre d'heures pendant lesquelles Compute Engine attend pour récupérer les données du SSD local. La valeur maximale est équivalente à 7 jours. Une valeur de 0 signifie que Compute Engine ne patiente pas pour récupérer les données du disque SSD local et redémarre immédiatement l'instance.
  • hostErrorTimeoutSeconds (Bêta): définit la durée maximale, en secondes, pendant laquelle Compute Engine attend de redémarrer ou d'arrêter une instance de calcul 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 instance qui ne répond pas.
    • Entier compris entre 90 et 330: nombre de secondes, spécifié par incréments de 30, pendant lequel Compute Engine attend avant de redémarrer une instance Compute qui ne répond pas.

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

Vous pouvez modifier la stratégie de maintenance de l'hôte d'une instance lorsque vous créez l'instance ou après sa création.

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

Les informations de cette section expliquent comment définir la stratégie de maintenance de l'hôte lorsque vous créez une instance. Pour en savoir plus sur la création d'instances, consultez la section Créer et démarrer une instance Compute Engine.

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

Console

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

    Accéder à la page Créer une instance

  2. Renseignez un nom pour l'instance.

  3. Sélectionnez une région et une zone pour l'instance.

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

    1. Spécifiez les détails du type de machine pour l'instance.
    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 :
      1. Pour migrer des VM lors d'événements de maintenance, sélectionnez Migrer l'instance de VM.
      2. Pour arrêter les instances lors des événements de maintenance, sélectionnez Arrêter l'instance de VM.
  5. Pour créer l'instance, cliquez sur Créer.

gcloud

Pour définir la stratégie de maintenance de l'hôte d'une nouvelle instance, utilisez la commande gcloud compute instances create.

Pour définir la propriété --host-error-timeout-seconds (Preview), vous devez utiliser la commande gcloud beta compute instances create.

Vous pouvez définir la stratégie de maintenance de l'hôte d'une nouvelle instance à 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 INSTANCE_NAME \
      --zone=ZONE \
      --maintenance-policy=MAINTENANCE_BEHAVIOR \
      --RESTART_ON_FAILURE_BEHAVIOR \
      --local-ssd-recovery-timeout=SSD_RECOVERY_TIMEOUT \
      --host-error-timeout-seconds=ERROR_DETECTION_TIMEOUT

Remplacez les éléments suivants :

  • INSTANCE_NAME : nom de l'instance.
  • ZONE: zone où se trouve l'instance
  • MAINTENANCE_BEHAVIOR: comportement de l'événement de maintenance d'une instance, TERMINATE ou MIGRATE. Pour la plupart des types de machines, la VM est migrée par défaut si vous omettez cette propriété. Les instances Z3 et bare metal sont arrêtées.
  • RESTART_ON_FAILURE_BEHAVIOR: comportement de redémarrage pour les instances arrêtées ou qui ne répondent pas, défini sur restart-on-failure (par défaut) ou no-restart-on-failure.
  • SSD_RECOVERY_TIMEOUT: nombre d'heures à consacrer à la récupération des disques SSD locaux associés à une instance arrêtée ou 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 instance qui ne répond pas, de 90 à 330 secondes (5,5 minutes), par incréments de 30 secondes.

REST

Pour définir la stratégie de maintenance de l'hôte d'une nouvelle instance à l'aide de REST, utilisez la méthode instances.insert.

Vous pouvez définir la stratégie de maintenance de l'hôte d'une nouvelle instance à l'aide de la commande suivante. Si vous omettez l'un des champs, la valeur par défaut du champ est utilisée.

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

      {
        "name": "INSTANCE_NAME",

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

Remplacez les éléments suivants :

  • PROJECT_ID: projet de l'instance.
  • ZONE: zone dans laquelle vous souhaitez créer l'instance.
  • INSTANCE_NAME : nom de l'instance.
  • MAINTENANCE_BEHAVIOR: comportement de l'événement de maintenance d'une instance, TERMINATE ou MIGRATE. Pour la plupart des types de machines, la VM est migrée par défaut si vous omettez ce champ. Les instances Z3 et bare metal sont arrêtées.
  • RESTART_POLICY: indique si l'instance redémarre automatiquement après un événement de maintenance ou une erreur d'hôte. La valeur peut être true (par défaut) ou false.
  • SSD_RECOVERY_TIMEOUT: nombre d'heures que Compute Engine passe à récupérer des disques SSD locaux associés à une instance qui ne répond pas ou qui a été arrêtée. Les valeurs valides sont comprises entre 0 et 168, par incréments d'une heure. La valeur par défaut pour Z3 est de 6 heures, et pour toutes les autres VM, elle est de 1 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 instance qui ne répond pas, utilisez la méthode instances.insert bêta, car cette option est disponible en preview.

Ajoutez la propriété hostErrorTimeoutSeconds à l'objet scheduling du corps de la requête, où HOST_ERROR_TIMEOUT correspond au nombre de secondes pendant lesquelles Compute Engine attend avant de redémarrer ou d'arrêter une instance qui ne répond pas. Les valeurs valides sont comprises entre 90 et 330 (5,5 minutes), par incréments de 30 secondes.


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

   {
      "name": "INSTANCE_NAME",

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

Mettre à jour la stratégie de maintenance de l'hôte d'une instance 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 le nom de l'instance dont vous souhaitez modifier les paramètres. La page de détails de l'instance s'affiche.

  3. Lorsque l'onglet Détails est sélectionné, 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 modifier les options de maintenance de l'hôte.
    3. Cliquez sur Enregistrer.

gcloud

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

Pour mettre à jour la durée maximale pendant laquelle Compute Engine attend avant de redémarrer ou d'arrêter une instance qui ne répond pas (Preview), exécutez la commande gcloud beta compute instances set-scheduling et incluez --host-error-timeout-seconds=NUMBER_OF_SECONDS.

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

Remplacez les éléments suivants :

  • 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 (5,5 minutes), par incréments de 30 secondes.
    • INSTANCE_NAME : nom de l'instance.
    • MAINTENANCE_BEHAVIOR: comportement de l'événement de maintenance d'une instance, TERMINATE ou MIGRATE. Pour la plupart des types de machines, la VM est migrée par défaut si vous omettez cette propriété. Les instances Z3 et bare metal sont arrêtées.
    • RESTART_ON_FAILURE_BEHAVIOR: comportement de redémarrage pour les instances arrêtées ou qui ne répondent pas, défini sur restart-on-failure (par défaut) ou no-restart-on-failure.
    • SSD_RECOVERY_TIMEOUT: nombre d'heures à consacrer à la récupération des disques SSD locaux associés à une instance arrêtée ou qui ne répond pas. Les valeurs valides sont comprises entre 0 et 168, par incréments d'une heure.
    • NUMBER_OF_SECONDS: délai d'attente en secondes avant que Compute Engine ne redémarre une instance qui ne répond pas, de 90 à 330 secondes (5,5 minutes), par incréments de 30 secondes.

REST

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

    POST https://compute.googleapis.com/compute/v1projects/PROJECT_ID/zones/ZONE/instances/INSTANCE_NAME/setScheduling

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

Remplacez les éléments suivants :

  • PROJECT_ID: projet de l'instance.
  • ZONE : zone où se trouve l'instance
  • INSTANCE_NAME : nom de l'instance.
  • MAINTENANCE_BEHAVIOR: comportement de l'événement de maintenance de cette instance, TERMINATE ou MIGRATE.
  • RESTART_POLICY: indique si l'instance redémarre automatiquement, true ou false.
    • SSD_RECOVERY_TIMEOUT: nombre d'heures à consacrer à la récupération des disques SSD locaux associés à l'instance. Les valeurs valides sont comprises entre 0 et 168, par incréments d'une heure.

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 en version Preview.

Ajoutez la propriété hostErrorTimeoutSeconds au corps de la requête, où HOST_ERROR_TIMEOUT correspond au nombre de secondes pendant lesquelles Compute Engine attend avant de redémarrer ou d'arrêter une instance qui ne répond pas. Les valeurs valides sont comprises entre 90 et 330 (5,5 minutes), par incréments de 30 secondes.

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

  {
    ...
    "hostErrorTimeoutSeconds": NUMBER_OF_SECONDS
  }

Afficher les paramètres de la stratégie de maintenance de l'hôte pour une instance

Console

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

    Accéder à la page Instances de VM

  2. Cliquez sur le nom de l'instance pour laquelle vous souhaitez afficher les paramètres. La page des détails de l'instance s'affiche.

  3. Accédez à la section Gestion. La sous-section Règles de disponibilité affiche vos paramètres actuels pour les éléments suivants:

    • Pendant la maintenance de l'hôte
    • Redémarrage automatique
    • Délai avant expiration de l'erreur de l'hôte

gcloud

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

Pour afficher la valeur actuelle du paramètre hostErrorTimeoutSeconds (Preview), utilisez la commande gcloud beta compute instances describe.

 gcloud compute instances describe INSTANCE_NAME \
 --zone ZONE --format="yaml(scheduling)"

Remplacez les éléments suivants :

  • INSTANCE_NAME : nom de l'instance
  • ZONE : zone où se trouve l'instance

La sortie inclut les paramètres actuels de la stratégie de maintenance de l'hôte, par exemple:

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

REST

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

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

Remplacez les éléments suivants :

  • PROJECT_ID: projet contenant l'instance.
  • ZONE : zone où se trouve l'instance
  • INSTANCE_NAME : nom de l'instance.

Dans le résultat, l'objet scheduling contient les paramètres de la stratégie de maintenance de l'hôte de l'instance, 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 en envoyant une requête GET à l'aide de la méthode bêta instances.get.

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

Remplacez les éléments suivants :

  • PROJECT_ID: projet de l'instance.
  • ZONE : zone où se trouve l'instance
  • INSTANCE_NAME : nom de l'instance.

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

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

Étape suivante