Simuler un événement de maintenance d'hôte


Cette page explique comment tester les effets de la stratégie de maintenance de l'hôte de votre instance Compute Engine sur vos applications.

Vous pouvez simuler un événement de maintenance sur vos VM pour tester les éléments suivants:

Si vous essayez de simuler un événement de maintenance de l'hôte sur une instance qui n'est pas compatible avec la migration à chaud, elle est soit arrêtée, soit redémarrée, en fonction de la règle de maintenance de l'hôte configurée.

Avant de commencer

  • Consultez la limite de débit de l'API régionale pour SimulateMaintenanceEventRequestsPerMinutePerProjectPerRegion.
  • 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:

    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

  • Pour simuler correctement un événement de maintenance sur un groupe de nœuds à locataire unique pour lequel la stratégie de maintenance de l'hôte est définie sur migrer dans le groupe de nœuds, vous devez déclencher l'événement de maintenance de manière séquentielle sur chaque nœud.
  • Pour un groupe de nœuds à locataire unique, lorsque vous essayez de simuler un événement de maintenance de l'hôte et que la stratégie de maintenance de l'hôte du groupe de nœuds est définie sur "migrer dans le groupe de nœuds" :
    • Si le nombre de nœuds spécifié est inférieur ou égal au nombre total de nœuds réservés, la simulation des événements de maintenance de l'hôte s'exécute simultanément pour tous les nœuds spécifiés.
    • Si le nombre de nœuds spécifié est supérieur au nombre total de nœuds réservés, la simulation échoue.
  • Le nombre de simulations d'événements de maintenance que vous pouvez démarrer par minute et par région est limité par la limite de débit de l'API pour la métrique simulate_maintenance_event_requests_per_region.

Simuler des événements de maintenance de l'hôte pour tester la migration à chaud

Vous pouvez simuler un événement de maintenance pour une instance de calcul à l'aide de Google Cloud CLI ou d'une requête API. Cet événement simulé inclut les différentes activités de maintenance qui se produisent dans un événement de maintenance régulier. Vous pouvez ainsi observer le processus de bout en bout et tester toute automatisation que vous avez peut-être implémentée.

Lors de la simulation de l'événement de maintenance de l'hôte pour une instance qui utilise la migration à chaud, la clé de métadonnées maintenance-event de l'instance subit les modifications suivantes:

  1. Au début de la simulation, la valeur de la clé de métadonnées maintenance-event passe de NONE à MIGRATE_ON_HOST_MAINTENANCE.
  2. Pendant toute la durée de l'événement de simulation, la valeur reste à MIGRATE_ON_HOST_MAINTENANCE.
  3. Une fois la simulation terminée, la valeur revient à NONE.

Pour interroger la clé de l'événement de maintenance, consultez la section Interroger la clé de métadonnées d'un événement de maintenance.

gcloud

Utilisez la commande compute instances simulate-maintenance-event pour simuler un événement de maintenance pour une instance et tester les paramètres de la règle de maintenance de l'hôte configurés:

gcloud compute instances simulate-maintenance-event INSTANCE_NAME \
    --zone=ZONE --with-extended-notifications=True

Remplacez les éléments suivants :

  • INSTANCE_NAME: nom de l'instance de calcul sur laquelle vous souhaitez simuler l'événement de maintenance.

    Vous pouvez spécifier plusieurs noms d'instance séparés par des espaces pour simuler des événements de maintenance sur plusieurs instances dans la même zone. Par exemple, instance-1 instance-2 instance-3.

  • ZONE : zone où se trouve l'instance

REST

Envoyez une requête POST à la méthode compute.instances.simulateMaintenanceEvent:

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

Remplacez les éléments suivants :

  • PROJECT_ID : ID du projet pour cette requête.
  • INSTANCE_NAME: nom de l'instance pour laquelle vous souhaitez simuler l'événement de maintenance.
  • ZONE : zone où se trouve l'instance

Simuler la maintenance de l'hôte pour les instances de calcul qui s'arrêtent

Vous pouvez simuler un événement de maintenance pour une instance de calcul à l'aide de Google Cloud CLI ou d'une requête API. Cet événement simulé inclut les différentes activités de maintenance qui se produisent dans un événement de maintenance régulier. Vous pouvez ainsi observer le processus de bout en bout et tester toute automatisation que vous avez peut-être implémentée.

De plus, en utilisant le paramètre --with-extended-notifications avec un type de machine compatible, vous pouvez tester le démarrage manuel de la maintenance de l'hôte lors de l'événement simulé.

gcloud

  1. Utilisez la commande compute instances simulate-maintenance-event pour simuler un événement de maintenance pour une instance et tester ses paramètres de règle de maintenance de l'hôte configurés. Vous pouvez également inclure l'option --with-extended-notifications.

    gcloud compute instances simulate-maintenance-event INSTANCE_NAME \
       --zone=ZONE --with-extended-notifications=True
    

    Remplacez les éléments suivants :

    • INSTANCE_NAME: nom de l'instance de calcul sur laquelle vous souhaitez simuler l'événement de maintenance.

      Vous pouvez spécifier plusieurs noms d'instance séparés par des espaces pour simuler des événements de maintenance sur plusieurs instances dans la même zone. Par exemple, instance-1 instance-2 instance-3.

    • ZONE : zone où se trouve l'instance

  2. Facultatif: Pour démarrer manuellement l'événement de maintenance simulé, utilisez la commande compute instances perform-maintenance.

    gcloud compute instances perform-maintenance INSTANCE_NAME \
       --zone=ZONE
    

    Remplacez les éléments suivants :

    • INSTANCE_NAME: nom de l'instance de calcul sur laquelle vous souhaitez simuler l'événement de maintenance.

      Vous pouvez spécifier plusieurs noms d'instance séparés par des espaces pour simuler des événements de maintenance sur plusieurs instances dans la même zone. Par exemple, instance-1 instance-2 instance-3.

    • ZONE: zone où se trouvent les instances.

REST

  1. Envoyez une requête POST à la méthode compute.instances.simulateMaintenanceEvent. Vous pouvez également inclure le paramètre de requête withExtendedNotifications.

    POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/INSTANCE_NAME/simulateMaintenanceEvent?withExtendedNotifications=True
    

    Remplacez les éléments suivants :

    • PROJECT_ID : ID du projet pour cette requête.
    • INSTANCE_NAME: nom de l'instance pour laquelle vous souhaitez simuler l'événement de maintenance.
    • ZONE : zone où se trouve l'instance
  2. Facultatif: Pour démarrer manuellement l'événement de maintenance simulé, créez une requête POST à la méthode compute.instances.performMaintenance.

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

    Remplacez les éléments suivants :

    • INSTANCE_NAME: nom de l'instance de calcul sur laquelle vous souhaitez démarrer l'événement de maintenance.

      Vous pouvez spécifier plusieurs noms d'instance séparés par des espaces pour effectuer des événements de maintenance sur plusieurs instances dans la même zone. Par exemple, instance-1 instance-2 instance-3.

    • ZONE: zone où se trouvent les instances.

Simuler des événements de maintenance de l'hôte sur des nœuds à locataire unique

Vous pouvez simuler un événement de maintenance de l'hôte sur des nœuds à locataire unique à l'aide de Google Cloud CLI ou d'une requête API. Pendant la simulation de l'événement de maintenance de l'hôte sur une VM à locataire unique, la valeur de la clé de métadonnées maintenance-event ne change pas et garde la valeur NONE tout au long de la simulation.

gcloud

Exécutez la commande sole-tenancy node-groups simulate-maintenance-event pour forcer les nœuds à locataire unique à activer la règle de maintenance configurée :

 gcloud compute sole-tenancy node-groups simulate-maintenance-event NODE_GROUP \
    --nodes=NODE_NAMES \
    --zone=ZONE \
    --async

Remplacez les éléments suivants :

  • NODE_GROUP : nom du groupe de nœuds dans lequel vous souhaitez simuler l'événement de maintenance.

  • NODE_NAMES : noms des nœuds sur lesquels vous souhaitez simuler l'événement de maintenance. Lorsque vous spécifiez plusieurs noms de nœuds, utilisez des valeurs séparées par une virgule, par exemple node-1,node-2,node-3.

  • ZONE : zone où se trouvent les nœuds

REST

Envoyez une requête POST à la méthode compute.nodeGroups.simulateMaintenanceEvent:

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/nodeGroups/NODE_GROUP/simulateMaintenanceEvent

{
  "nodes": [
      "NODE_NAMES"
  ]
}

Remplacez les éléments suivants :

  • PROJECT_ID : ID du projet pour cette requête.
  • ZONE : zone où se trouvent les nœuds
  • NODE_GROUP : nom du groupe de nœuds dans lequel vous souhaitez simuler l'événement de maintenance.
  • NODE_NAMES : noms des nœuds dans lesquels vous souhaitez simuler l'événement de maintenance. Placez le nom du nœud entre guillemets doubles, par exemple "node-1". Lorsque vous spécifiez plusieurs noms de nœuds, utilisez des valeurs séparées par une virgule, par exemple "node-1","node-2","node-3".

Étapes suivantes