Définir les règles de disponibilité d'une instance

Google Compute Engine effectue une maintenance régulière de son infrastructure. Cette page décrit les types et les fréquences approximatives de ces événements de maintenance et explique comment définir les règles de disponibilité d'instance pour configurer le comportement des instances de VM lorsque ces événements de maintenance se produisent. La présente page explique également comment configurer une instance pour qu'elle migre à chaud lors d'un événement de maintenance.

Avant de commencer

Événements de maintenance

Les événements de maintenance de Compute Engine impliquent des mises à jour matérielles et logicielles. Certains de ces événements de maintenance nécessitent que Google transfère votre VM depuis l'hôte en cours de maintenance. Dans ce cas, Compute Engine gère automatiquement le comportement de planification de ces instances. Compute Engine migre à chaud les instances de VM si vous avez configuré la règle de disponibilité pour une migration à chaud. Cela empêche que les applications ne subissent des perturbations lors de ces événements. Vous pouvez également choisir d'arrêter les instances lors de ces événements plutôt que de les migrer à chaud.

Le tableau suivant classe les événements de maintenance de Compute Engine en deux catégories, chacune étant illustrée par des exemples, et identifie l'événement de maintenance nécessitant la migration à chaud de votre VM vers un hôte différent.

Type d'événement de maintenance Exemples Fréquence approximative* Nécessite une migration à chaud vers un nouvel hôte
Maintenance de l'hôte Mise à niveau du noyau, réparation matérielle ou mise à niveau Une fois par mois Oui
Configuration légère Mise à niveau de l'hyperviseur ou de la pile réseau 1 à 2 fois par semaine Non

* Notez que ces fréquences sont approximatives et ne sont pas garanties. Compute Engine peut occasionnellement effectuer des opérations de maintenance plus fréquentes que celles mentionnées ici.

Choisir des règles de disponibilité

La stratégie de disponibilité d'une instance de VM détermine son comportement dans le cas d'un événement de maintenance nécessitant que Google déplace cette instance vers une autre machine hôte. Vous pouvez configurer vos instances de VM pour continuer à fonctionner pendant que Compute Engine les migre à chaud vers un autre hôte, ou vous pouvez choisir de les arrêter. Vous pouvez modifier la règle de disponibilité d'une instance de machine virtuelle à tout moment pour contrôler le comportement de cette instance.

Vous pouvez modifier cette règle en configurant les deux paramètres suivants :

  • Le comportement en cas de maintenance de l'instance de machine virtuelle, qui détermine si l'instance doit être migrée à chaud ou arrêtée lors d'un événement de maintenance
  • Le comportement au redémarrage de l'instance, qui détermine si l'instance doit redémarrer automatiquement en cas de plantage ou d'arrêt

Le comportement par défaut des instances en cas de maintenance est la migration à chaud, mais vous pouvez le modifier pour que l'instance soit arrêtée lors des événements de maintenance.

Migrer à chaud

Par défaut, les instances standards sont configurées de manière à migrer à chaud. Google Compute Engine migre automatiquement l'instance hors de l'événement de maintenance de l'infrastructure, mais celle-ci reste en cours d'exécution pendant la migration. Il est possible que l'instance connaisse une courte période de baisse des performances. Cependant, aucune différence n'est généralement constatée pour la plupart des instances. Ceci est idéal pour les instances qui nécessitent une activité constante et peuvent tolérer une courte période de performances réduites.

Lorsque Google Compute Engine migre l'instance, il signale un événement système qui est publié dans la liste des opérations de la zone. Vous pouvez consulter cet événement en affichant les opérations Compute Engine concernant une zone spécifique. Les événements de migration à chaud sont associés au type d'opération suivant :

compute.instances.migrateOnHostMaintenance

Arrêter et (éventuellement) redémarrer

Si vous ne souhaitez pas que l'instance migre à chaud, vous pouvez choisir de l'arrêter et éventuellement de la redémarrer. Grâce à cette option, Google Compute Engine signifie à votre instance de se fermer, attend un instant qu'elle s'éteigne proprement, l'arrête, et la redémarre hors de l'événement de maintenance. Cette option est idéale pour les instances exigeant des performances constantes et maximales, et lorsque l'application globale est conçue pour gérer les échecs ou les redémarrages d'instances.

Lorsque Google Compute Engine arrête et redémarre des instances, il signale un événement système qui est publié dans la liste des opérations de la zone. Vous pouvez consulter cet événement en affichant les opérations Compute Engine concernant une zone spécifique. Les événements d'arrêt sont associés au type d'opération suivant :

compute.instances.terminateOnHostMaintenance

Lorsque l'instance redémarre, elle utilise le même disque de démarrage persistant et rattache tous les disques persistants secondaires que vous avez configurés. Les données sur ces disques persistent lors de la migration et du redémarrage de l'instance.

Les données SSD locales ne persistent pas à l'arrêt de l'instance. Lorsque l'instance redémarre, elle crée un nouveau disque SSD local que vous devez formater et installer.

Redémarrage automatique

Si l'instance est configurée de manière à s'arrêter en cas d'événement de maintenance ou de plantage lié à un problème matériel sous-jacent, vous pouvez configurer Google Compute Engine pour qu'il la redémarre automatiquement en définissant le champ automaticRestart sur true. Ce paramètre ne s'applique pas si l'instance est mise hors ligne par une action utilisateur, telle que l'utilisation de la commande sudo shutdown, ou pendant une indisponibilité de zone.

Lorsque Google Compute Engine redémarre automatiquement une instance, il signale un événement système qui est publié dans la liste des opérations de la zone. Vous pouvez consulter cet événement en affichant les opérations Compute Engine concernant une zone spécifique. Les événements de redémarrage automatique sont associés au type d'opération suivant:

compute.instances.automaticRestart

Afficher les opérations Compute Engine

Vous pouvez afficher une liste des opérations terminées via la console Google Cloud Platform, l'outil de ligne de commande gcloud ou l'API Compute Engine.

Console

Pour afficher une liste des opérations de votre projet, accédez à la page "Opérations".

  1. Accéder à la page Opérations

  2. Pour afficher les détails d'une opération, cliquez sur le résumé de l'opération. Par exemple, pour afficher les détails de la migration de l'instance my-instance, cliquez sur l'opération Automatically migrate an instance (Transférer automatiquement une instance). Capture d'écran de la page des opérations montrant la migration à chaud Capture d'écran des détails de la migration à chaud

gcloud

Pour afficher une liste des opérations de votre projet à l'aide de gcloud compute, utilisez la sous-commande operations list.

Pour afficher la liste des opérations dans une zone spécifiée, ajoutez l'indicateur --filter.

gcloud compute operations list --filter="zone:(ZONE)"

Par exemple, pour afficher la liste des opérations dans us-cental1-c, exécutez la commande suivante :

gcloud compute operations list --filter="zone:(us-central1-c)"

NAME                            TYPE                                        TARGET                                HTTP_STATUS  STATUS  TIMESTAMP
systemevent-1543845145000...    compute.instances.migrateOnHostMaintenance  us-central1-c/instances/my-instance   200          DONE    2018-12-03T05:52:25.000-08:00

API

Les requêtes d'API pour les opérations doivent être spécifiées au niveau global, régional ou zonal. La migration à chaud, les arrêts d'instances et les redémarrages automatiques sont des opérations au niveau de la zone.

Pour les opérations de zone, exécutez une requête GET sur la méthode zoneOperations.list.

GET https://www.googleapis.com/compute/v1/projects/[PROJECT_ID]/zones/[ZONE]/operations

où :

  • [PROJECT_ID] est l'ID de projet pour cette requête.
  • [ZONE] est le nom de la zone pour cette requête.

    Laissez le corps de la requête vide.

Voici un exemple de résultat d'une requête d'opération de zone. Les détails d'une migration d'hôte y sont affichés.

{
 "kind": "compute#operation",
 "id": "3216798767364213712",
 "name": "systemevent-1543845145000-57c1e7574b840-a195b637-5ff74d9b",
 "zone": "https://www.googleapis.com/compute/v1/projects/my-project/zones/us-central1-c",
 "operationType": "compute.instances.migrateOnHostMaintenance",
 "targetLink": "https://www.googleapis.com/compute/v1/projects/my-project/zones/us-central1-c/instances/my-instance",
 "targetId": "3070988523247098025",
 "status": "DONE",
 "statusMessage": "Instance migrated during Compute Engine maintenance.",
 "user": "system",
 "progress": 100,
 "insertTime": "2018-12-03T05:52:25.000-08:00",
 "startTime": "2018-12-03T05:52:25.000-08:00",
 "endTime": "2018-12-03T05:52:25.000-08:00",
 "selfLink": "https://www.googleapis.com/compute/v1/projects/my-project/zones/us-central1-c/operations/systemevent-1543845145000-57c1e7574b840-a195b637-5ff74d9b"
}

Définir des règles de disponibilité

Configurez le comportement en cas de maintenance et le paramètre de redémarrage automatique d'une instance à l'aide des propriétés onHostMaintenance et automaticRestart. Toutes les instances sont configurées avec des valeurs par défaut sauf si vous les avez définies.

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

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

    • [Par défaut] true : 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.

Vous pouvez modifier les règles de disponibilité d'une instance lorsque vous créez une instance ou après la création de l'instance, à l'aide de la méthode setScheduling.

Définir des options lors de la création d'une instance

Console

  1. Dans la console GCP, accédez à la page "Instances de VM".

    Accéder à la page Instances de VM

  2. Cliquez sur Créer une instance.
  3. Sur la page Créer une instance, spécifiez les propriétés souhaitées pour votre instance.
  4. Développez l'option Gestion, sécurité, disques, mise en réseau, location unique.
  5. Sous Stratégie de disponibilité, définissez les options de Redémarrage automatique et de Maintenance de l'hôte.
  6. Cliquez sur Créer pour créer l'instance.

gcloud

Pour spécifier les règles de disponibilité d'une nouvelle instance dans gcloud compute, utilisez l'indicateur --maintenance-policy pour indiquer si l'instance est migrée ou arrêtée. Par défaut, les instances sont automatiquement configurées de manière à redémarrer sauf si vous utilisez l'indicateur --no-restart-on-failure.

gcloud compute instances create INSTANCE .. \
    [--maintenance-policy MAINTENANCE_POLICY] \
    [--no-restart-on-failure]

API

Dans l'API, envoyez une requête POST à l'URL suivante, en remplaçant le projet et la zone par votre ID de projet et la zone de l'instance :

https://www.googleapis.com/compute/v1/projects/myproject/zones/us-central1-f/instances

avec les paramètres onHostMaintenance et automaticRestart dans le corps de la requête :

{
  "name": "example-instance",
  "description": "Front-end for real-time ingest; don't migrate.",
  ...
  // User options for influencing this Instance’s life cycle.
  "scheduling": {
    "onHostMaintenance": "migrate",
    "automaticRestart": "true" # specifies that Google Compute Engine should automatically restart your instance
  }
}

Pour plus d'informations, consultez la documentation de référence sur les instances.

Mettre à jour les options d'une instance

Console

  1. Accédez à la page des instances de VM de la console Google Cloud Platform.

    Accéder à la page des instances de VM.

  2. Cliquez sur l'instance dont vous souhaitez modifier les paramètres. La page de détails de l'instance s'affiche.
  3. Sur la page des détails de l'instance, procédez comme suit :
    1. Cliquez sur le bouton Modifier en haut de la page.
    2. Sous Règles de disponibilité, mettez à jour les règles en fonction de vos besoins. Dans la section Règles de disponibilité, vous pouvez configurer les options Redémarrage automatique et Pendant la maintenance de l'hôte.
    3. Cliquez sur Enregistrer.

gcloud

Pour modifier les règles de disponibilité d'une instance, utilisez la commande instances set-scheduling avec les mêmes paramètres et indicateurs que ceux utilisés dans la commande de création d'instance ci-dessus :

gcloud compute instances set-scheduling INSTANCE \
    [--maintenance-policy BEHAVIOR] \
    [--no-restart-on-failure | --restart-on-failure]

API

Dans l'API, vous pouvez exécuter une requête à l'URL suivante, en remplaçant le projet et la zone par votre propre ID de projet et la zone de l'instance :

https://www.googleapis.com/compute/v1/projects/example-project/zones/us-central1-f/instances/setScheduling

Le corps de votre requête doit contenir la nouvelle valeur pour les règles de disponibilité :

{
  "onHostMaintenance": "migrate"
  "automaticRestart": "true" # specifies that Google Compute Engine should automatically restart your instance
}

Pour en savoir plus, consultez la documentation de référence sur la méthode instances().setScheduling.

Tester les règles de disponibilité

Après avoir défini les règles de disponibilité, vous pouvez simuler des événements de maintenance pour tester les effets de ces règles sur vos applications. Par exemple, vous pouvez simuler un événement de maintenance sur vos instances dans l'une des situations suivantes :

  • Vous avez des instances configurées de telle manière qu'elles migrent à chaud lors des événements de maintenance, et vous devez tester les effets de la migration à chaud sur vos applications.
  • Vous avez des tâches par lot exécutées sur des instances de VM préemptives, et vous devez tester la manière dont les applications gèrent la préemption et l'arrêt d'une ou plusieurs instances.
  • Vos instances sont configurées de telle manière qu'elles s'arrêtent et redémarrent au lieu de migrer à chaud lors des événements de maintenance, et vous devez tester la manière dont les applications gèrent ce processus d'arrêt et de redémarrage.

Les événements de maintenance simulés sont soumis à des limites relatives à l'API spécifiques.

Vous pouvez simuler un événement de maintenance sur une instance à l'aide de l'outil de ligne de commande gcloud ou d'une requête API.

gcloud

Exécutez la commande instances simulate-maintenance-event pour forcer une instance à activer sa règle de maintenance configurée :

gcloud compute instances simulate-maintenance-event [INSTANCE_NAME] \
    --zone [ZONE]

où :

  • [INSTANCE_NAME] est le nom de l'instance sur laquelle vous souhaitez simuler l'événement de maintenance. Vous pouvez spécifier plusieurs noms d'instances pour simuler des événements de maintenance sur plusieurs instances dans la même zone.
  • [ZONE] est la zone où se trouve l'instance.

API

Dans l'API, envoyez une requête à la méthode compute.instances.simulateMaintenanceEvent dans l'API Compute Engine :

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

où :

  • [INSTANCE_NAME] est le nom de l'instance sur laquelle vous souhaitez simuler l'événement de maintenance.
  • [ZONE] est la zone où se trouve l'instance.

    Pour en savoir plus, consultez la documentation de référence sur la méthode instances().simulateMaintenanceEvent.

Étapes suivantes

Cette page vous a-t-elle été utile ? Évaluez-la :

Envoyer des commentaires concernant…

Documentation Compute Engine