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


Ce document explique comment définir la stratégie de maintenance de l'hôte pour une instance Compute Engine afin de déterminer son comportement lors des événements hôtes. Pour en savoir plus sur les stratégies de maintenance de l'hôte, consultez Stratégie de maintenance de l'hôte.

Une stratégie de maintenance de l'hôte détermine la manière dont votre instance répond lorsque l'hôte sur lequel elle s'exécute nécessite une maintenance ou rencontre une erreur. La configuration de la stratégie de maintenance de l'hôte pour une instance vous permet d'effectuer les opérations suivantes :

  • Minimisez les temps d'arrêt.

  • Évitez toute perte de données.

Limites

Les limites suivantes s'appliquent aux stratégies de maintenance des hôtes :

  • Les instances de machines virtuelles utilisant des types de machines E2 ne peuvent migrer à chaud que lors d'événements de maintenance de l'hôte, sauf s'il s'agit de VM Spot ou de VM préemptives.

  • Les instances suivantes ne peuvent s'arrêter que lors des événements de maintenance de l'hôte :

    • Instances non compatibles avec la migration à chaud, telles que les instances Z3 avec plus de 18 Tio de SSD Titanium associés, les instances bare metal ou les VM avec des GPU associés.

    • VM Spot ou préemptives

  • Les VM Spot et les VM préemptives ne peuvent pas redémarrer automatiquement après des erreurs d'hôte ou des arrêts programmés.

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. After installing the Google Cloud CLI, initialize it by running the following command:

        gcloud init

        If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.

      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.

          After installing the Google Cloud CLI, initialize it by running the following command:

          gcloud init

          If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.

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

Rôles requis

Pour obtenir les autorisations nécessaires pour définir la stratégie de maintenance de l'hôte d'une instance de calcul, demandez à votre administrateur de vous accorder le rôle IAM Administrateur d'instances Compute (v1) (roles/compute.instanceAdmin.v1) sur votre projet. Pour en savoir plus sur l'attribution de rôles, consultez la page Gérer l'accès aux projets, aux dossiers et aux organisations.

Ce rôle prédéfini contient les autorisations requises pour définir la stratégie de maintenance de l'hôte pour une instance de calcul. Pour connaître les autorisations exactes requises, développez la section Autorisations requises :

Autorisations requises

Les autorisations suivantes sont requises pour définir la stratégie de maintenance de l'hôte pour une instance de calcul :

  • Pour créer une instance :
    • compute.instances.create sur le projet
    • Pour créer la VM à l'aide d'une image personnalisée : compute.images.useReadOnly sur l'image
    • Pour créer la VM à l'aide d'un instantané : compute.snapshots.useReadOnly sur l'instantané
    • Pour créer la VM à l'aide d'un modèle d'instance : compute.instanceTemplates.useReadOnly sur le modèle d'instance
    • Pour attribuer un ancien réseau à la VM : compute.networks.use sur le projet
    • Pour spécifier une adresse IP statique pour la VM : compute.addresses.use sur le projet
    • Pour attribuer une adresse IP externe à la VM, en cas d'utilisation d'un ancien réseau : compute.networks.useExternalIp sur le projet
    • Pour spécifier un sous-réseau pour la VM : compute.subnetworks.use sur le projet ou sur le sous-réseau choisi
    • Pour attribuer une adresse IP externe à la VM, en cas d'utilisation d'un réseau VPC : compute.subnetworks.useExternalIp sur le projet ou sur le sous-réseau choisi
    • Pour définir les métadonnées d'instance de VM pour la VM : compute.instances.setMetadata sur le projet
    • Pour définir des tags pour la VM : compute.instances.setTags sur la VM
    • Pour définir des libellés pour la VM : compute.instances.setLabels sur la VM
    • Pour définir un compte de service à utiliser avec la VM : compute.instances.setServiceAccount sur la VM
    • Pour créer un disque pour la VM : compute.disks.create sur le projet
    • Pour associer un disque existant en mode lecture seule ou en mode lecture-écriture : compute.disks.use sur le disque
    • Pour associer un disque existant en mode lecture seule : compute.disks.useReadOnly sur le disque
  • Pour créer un modèle d'instance : compute.instanceTemplates.create sur le projet.
  • Pour mettre à jour la stratégie de maintenance de l'hôte d'une instance : compute.instances.setScheduling sur l'instance

Vous pouvez également obtenir ces autorisations avec des rôles personnalisés ou d'autres rôles prédéfinis.

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

Vous pouvez personnaliser le comportement de votre instance de calcul lors d'une maintenance planifiée ou d'événements d'hôte inattendus. Sauf indication contraire, Compute Engine utilise les paramètres par défaut lorsque vous créez une instance, des instances en masse ou un modèle d'instance.

Vous pouvez configurer les propriétés de maintenance de l'hôte suivantes :

  • Comportement de maintenance (onHostMaintenance) : ce qui arrive à votre instance lors d'un événement de maintenance sur son hôte qui pourrait entraîner le redémarrage de l'instance. Vous pouvez définir cette propriété sur l'une des valeurs suivantes :

    • Migrate : Compute Engine migre automatiquement votre instance à chaud vers un autre hôte. Il s'agit du paramètre par défaut pour tous les types d'instances, à l'exception des VM Spot et des VM préemptives.

    • Mettre fin : Compute Engine arrête votre instance. Il s'agit du paramètre par défaut pour les VM Spot ou préemptibles. C'est également le seul paramètre compatible avec les instances Z3 comportant plus de 18 TiB de SSD Titanium associés, les instances bare metal et les instances comportant des GPU ou des TPU associés.

  • Redémarrage automatique (automaticRestart) : indique si votre instance redémarre en cas de plantage ou si Compute Engine l'arrête pour un arrêt programmé, par exemple lors d'un événement de maintenance. Vous pouvez définir cette propriété sur l'une des valeurs suivantes :

    • Activé : Compute Engine redémarre automatiquement l'instance. Il s'agit du paramètre par défaut pour tous les types d'instances, à l'exception des VM Spot et des VM préemptives. Pour spécifier ce paramètre :

      • Pour la console Google Cloud , dans le volet Avancé, dans la liste Redémarrage automatique, sélectionnez Activé (recommandé).

      • Avec Google Cloud CLI, utilisez l'option --restart-on-failure.

      • Pour REST, définissez le champ automaticRestart sur true.

    • Désactivé : Compute Engine ne redémarre pas l'instance. Il s'agit du paramètre par défaut pour les VM Spot ou préemptives. Pour spécifier ce paramètre :

      • Pour la console Google Cloud , dans le volet Advanced (Avancé), dans la liste Automatic restart (Redémarrage automatique), sélectionnez Off (Désactivé).

      • Avec gcloud CLI, utilisez l'option --no-restart-on-failure.

      • Pour REST, définissez le champ automaticRestart sur false.

  • Délai avant expiration de la récupération des données des disques SSD locaux (localSsdRecoveryTimeout) : ce paramètre ne s'applique qu'aux instances auxquelles des disques SSD locaux sont associés. Il détermine la durée pendant laquelle Compute Engine attend pour récupérer les données de vos disques SSD locaux après des erreurs d'hôte. Par défaut, cette propriété n'est pas définie. Vous pouvez définir cette propriété sur l'une des valeurs suivantes :

    • Non défini : Compute Engine utilise le délai d'attente par défaut :

      • Pour les VM Z3 : 6 heures

      • Pour tous les autres types d'instances : 1 heure

    • Nombre entier compris entre 0 et 168 : nombre d'heures à attendre. Si vous définissez cette propriété sur 0, Compute Engine ne récupère pas les données des disques SSD locaux et redémarre immédiatement l'instance.

  • Délai avant expiration en cas d'erreur d'hôte (hostErrorTimeoutSeconds) : cette propriété détermine la durée pendant laquelle Compute Engine attend de redémarrer une instance qui ne répond pas. Vous devez configurer ce paramètre avant que l'instance ne cesse de répondre. Utilisez un délai d'inactivité suffisamment long pour qu'une instance puisse se rétablir après une période d'inactivité. Vous pouvez définir cette propriété sur l'une des valeurs suivantes :

    • Non défini : Compute Engine attend jusqu'à 330 secondes (5 minutes et 30 secondes). Il s'agit du paramètre par défaut pour tous les types d'instances.

    • Nombre entier compris entre 90 et 330 : délai d'attente en secondes, par incréments de 30 secondes.

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

Par défaut, les instances de calcul utilisent les paramètres par défaut pour leur règle de maintenance de l'hôte. Pour personnaliser ces paramètres, utilisez l'une des méthodes suivantes :

Définir la règle pour une instance existante

Avant de modifier la stratégie de maintenance de l'hôte d'une instance existante, assurez-vous des points suivants :

  • Vous ne pouvez pas modifier le comportement de maintenance (onHostMaintenance) des types d'instances suivants :

  • Vous ne pouvez pas configurer les VM Spot ni les VM préemptives pour qu'elles redémarrent automatiquement après des erreurs d'hôte ou des arrêts programmés.

Pour modifier le délai avant expiration de la récupération des données des disques SSD locaux dans une instance à laquelle des disques SSD locaux sont associés, utilisez la gcloud CLI ou l'API REST. Sinon, sélectionnez l'une des options suivantes :

Console

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

    Accéder à la page Instances de VM

  2. Dans la colonne Nom, cliquez sur le nom de l'instance que vous souhaitez mettre à jour. Une page contenant les détails de l'instance s'affiche.

  3. Cliquez sur Modifier. Une page permettant de modifier les propriétés de l'instance s'affiche.

  4. Dans la section Gestion, vous pouvez effectuer une ou plusieurs des opérations suivantes :

    • Pour modifier le comportement pendant les événements de maintenance, sélectionnez une autre option dans la liste Pendant la maintenance de l'hôte.

    • Pour modifier le délai avant le redémarrage d'une instance qui ne répond pas, sélectionnez une autre option dans la liste Délai avant erreur d'hôte.

    • Pour modifier le redémarrage ou non de l'instance après des erreurs d'hôte ou des arrêts programmés, sélectionnez une autre option dans la liste Redémarrage automatique.

  5. Cliquez sur Enregistrer.

gcloud

Pour modifier la stratégie de maintenance de l'hôte dans une instance existante, utilisez la commande gcloud compute instances set-scheduling avec une ou plusieurs des options suivantes :

  • Pour modifier le comportement de la maintenance de l'hôte, incluez l'option --maintenance-policy.

  • Pour modifier le comportement du redémarrage automatique, effectuez l'une des opérations suivantes :

    • Pour redémarrer automatiquement l'instance, incluez l'indicateur --restart-on-failure.

    • Pour empêcher le redémarrage automatique de l'instance, incluez l'indicateur --no-restart-on-failure.

  • Pour modifier le délai avant expiration de la récupération des données SSD locales si votre instance est associée à des disques SSD locaux, incluez l'indicateur --local-ssd-recovery-timeout.

  • Pour modifier le délai avant expiration des erreurs d'hôte, incluez l'option --host-error-timeout-seconds.

Par exemple, pour modifier le comportement de maintenance de l'hôte, redémarrer automatiquement l'instance après des erreurs d'hôte ou des arrêts programmés, modifier le délai avant récupération des données SSD locales et modifier le délai avant erreur d'hôte, exécutez la commande suivante :

gcloud compute instances set-scheduling INSTANCE_NAME \
    --host-error-timeout-seconds=ERROR_DETECTION_TIMEOUT \
    --local-ssd-recovery-timeout=LOCAL_SSD_RECOVERY_TIMEOUT \
    --maintenance-policy=MAINTENANCE_POLICY \
    --restart-on-failure \
    --zone=ZONE

Remplacez les éléments suivants :

  • INSTANCE_NAME : nom de votre instance.

  • ERROR_DETECTION_TIMEOUT : délai en secondes avant que Compute Engine ne redémarre une instance qui ne répond pas. La valeur doit être comprise entre 90 (90 secondes) et 330 (330 secondes, soit 5 minutes et 30 secondes). Seules les incréments de 30 secondes sont autorisés.

  • MAINTENANCE_POLICY : comportement de maintenance de l'instance. La valeur peut être TERMINATE ou MIGRATE.

  • LOCAL_SSD_RECOVERY_TIMEOUT : nombre d'heures à consacrer à la récupération des données des disques SSD locaux associés. La valeur doit être comprise entre 0 (0 heure) et 168 (168 heures, soit 7 jours). Si vous définissez ce champ sur 0, Compute Engine ne récupère pas les données des disques SSD locaux.

  • ZONE : zone où se trouve votre instance.

REST

Pour modifier la stratégie de maintenance de l'hôte dans une instance existante, envoyez une requête POST à la méthode instances.setScheduling. Dans le corps de la requête, incluez un ou plusieurs des champs suivants :

  • Pour modifier le comportement de la maintenance de l'hôte, incluez le champ onHostMaintenance.

  • Pour modifier le comportement du redémarrage automatique, effectuez l'une des opérations suivantes :

    • Pour redémarrer automatiquement l'instance, incluez le champ automaticRestart.

    • Pour empêcher le redémarrage automatique de l'instance, incluez le champ automaticRestart.

  • Pour modifier le délai avant expiration de la récupération des données de disque SSD local si votre instance est associée à des disques SSD locaux, incluez le champ localSsdRecoveryTimeout.

  • Pour modifier le délai avant expiration des erreurs d'hôte, incluez le champ hostErrorTimeoutSeconds.

Par exemple, pour modifier le comportement de maintenance de l'hôte, redémarrer automatiquement l'instance après des erreurs d'hôte ou des arrêts programmés, modifier le délai avant expiration de récupération des données SSD locales et modifier le délai avant expiration des erreurs d'hôte, effectuez une requête comme suit :

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

{
  "automaticRestart": AUTOMATIC_RESTART,
  "hostErrorTimeoutSeconds": ERROR_DETECTION_TIMEOUT,
  "localSsdRecoveryTimeout": LOCAL_SSD_RECOVERY_TIMEOUT,
  "onHostMaintenance": "MAINTENANCE_POLICY"
}

Remplacez les éléments suivants :

  • PROJECT_ID : ID du projet dans lequel votre instance existe.

  • ZONE : zone où se trouve votre instance.

  • INSTANCE_NAME : nom de votre instance.

  • AUTOMATIC_RESTART : comportement de redémarrage automatique de l'instance en cas de plantage ou d'arrêt programmé par Compute Engine. Spécifiez une des valeurs suivantes :

    • Pour permettre à Compute Engine de redémarrer automatiquement votre instance : true

    • Pour empêcher les redémarrages automatiques : false

  • ERROR_DETECTION_TIMEOUT : nombre de secondes avant le redémarrage d'une instance qui ne répond pas. La valeur doit être comprise entre 90 (90 secondes) et 330 (330 secondes, soit 5 minutes et 30 secondes). Seules les incréments de 30 secondes sont autorisés.

  • LOCAL_SSD_RECOVERY_TIMEOUT : nombre d'heures à consacrer à la récupération des données des disques SSD locaux associés. La valeur doit être comprise entre 0 (0 heure) et 168 (168 heures, soit 7 jours). Si vous définissez ce champ sur 0, Compute Engine ne récupère pas les données des disques SSD locaux.

  • MAINTENANCE_POLICY : comportement de maintenance de l'instance. La valeur peut être TERMINATE ou MIGRATE.

Définir la règle lors de la création d'une instance

Vous pouvez définir la stratégie de maintenance de l'hôte d'une instance de calcul lors de sa création.

Pour définir le délai avant expiration de la récupération des données des disques SSD locaux lors de la création d'une instance à laquelle des disques SSD locaux sont associés, utilisez la gcloud CLI ou l'API REST. Sinon, sélectionnez l'une des options suivantes :

Console

  1. Dans la console Google Cloud , accédez à la page Créer une instance.

    Accéder à la page Créer une instance

  2. Dans le champ Nom, saisissez un nom pour l'instance.

  3. Dans les champs Région et Zone, spécifiez la région et la zone dans lesquelles créer l'instance.

  4. Indiquez le type de machine pour l'instance.

  5. Dans le menu de navigation, cliquez sur Avancé.

  6. Dans la section Modèle de provisionnement, développez Paramètres avancés du modèle de provisionnement de VM, puis effectuez une ou plusieurs des actions suivantes :

    • Pour définir le comportement pendant les événements de maintenance, dans la liste Pendant la maintenance de l'hôte, sélectionnez l'une des options suivantes :

      • Pour migrer l'instance lors des événements de maintenance de l'hôte, sélectionnez Migrer l'instance de VM (recommandé).

      • Pour arrêter l'instance lors des événements de maintenance de l'hôte, sélectionnez Arrêter l'instance de VM.

    • Pour définir le délai avant le redémarrage d'une instance qui ne répond pas, sélectionnez l'une des options suivantes dans la liste Délai d'expiration des erreurs d'hôte :

      • Pour ne pas spécifier de délai avant expiration pour les erreurs d'hôte, sélectionnez Non spécifié (par défaut).

      • Pour spécifier un délai avant expiration pour une erreur d'hôte, sélectionnez l'une des options disponibles, jusqu'à 5 minutes et 30 secondes.

    • Pour définir si l'instance doit redémarrer en cas de plantage ou d'arrêt, sélectionnez l'une des options suivantes dans la liste Redémarrage automatique :

      • Pour redémarrer automatiquement l'instance après des erreurs d'hôte ou des arrêts programmés, sélectionnez Activé (recommandé).

      • Pour empêcher l'instance de redémarrer automatiquement après des erreurs d'hôte ou des arrêts programmés, sélectionnez Désactivé.

  7. Cliquez sur Créer.

gcloud

Pour définir la stratégie de maintenance de l'hôte d'une instance lors de sa création, exécutez la commande gcloud compute instances create avec une ou plusieurs des options suivantes :

  • Pour définir le comportement de maintenance de l'hôte, incluez l'option --maintenance-policy.

  • Pour définir le comportement de redémarrage automatique, procédez comme suit :

    • Pour redémarrer automatiquement l'instance, incluez l'indicateur --restart-on-failure.

    • Pour empêcher le redémarrage automatique de l'instance, incluez l'indicateur --no-restart-on-failure.

  • Pour définir un délai avant expiration de la récupération des données d'un disque SSD local si votre instance est associée à des disques SSD locaux, incluez l'indicateur --local-ssd-recovery-timeout.

  • Pour définir un délai avant expiration des erreurs d'hôte, incluez l'indicateur --host-error-timeout-seconds.

Par exemple, pour définir le comportement de maintenance de l'hôte, redémarrer automatiquement l'instance après des erreurs d'hôte ou des arrêts programmés, définir un délai avant expiration de récupération des données SSD local et définir un délai avant expiration des erreurs d'hôte, exécutez la commande suivante :

gcloud compute instances create INSTANCE_NAME \
    --host-error-timeout-seconds=ERROR_DETECTION_TIMEOUT \
    --local-ssd-recovery-timeout=LOCAL_SSD_RECOVERY_TIMEOUT \
    --machine-type=MACHINE_TYPE \
    --maintenance-policy=MAINTENANCE_POLICY \
    --restart-on-failure \
    --zone=ZONE

Remplacez les éléments suivants :

  • INSTANCE_NAME : nom de l'instance.

  • ERROR_DETECTION_TIMEOUT : nombre de secondes avant le redémarrage d'une instance qui ne répond pas. La valeur doit être comprise entre 90 (90 secondes) et 330 (330 secondes, soit 5 minutes et 30 secondes). Seules les incréments de 30 secondes sont autorisés.

  • LOCAL_SSD_RECOVERY_TIMEOUT : nombre d'heures à consacrer à la récupération des données des disques SSD locaux associés. La valeur doit être comprise entre 0 (0 heure) et 168 (168 heures, soit 7 jours). Si vous définissez ce champ sur 0, Compute Engine ne récupère pas les données des disques SSD locaux.

  • MACHINE_TYPE : type de machine à utiliser.

  • MAINTENANCE_POLICY : comportement de maintenance de l'instance. La valeur peut être TERMINATE ou MIGRATE. Si vous créez une VM Spot, une VM préemptive ou une instance non compatible avec la migration à chaud, vous ne pouvez utiliser que TERMINATE.

  • ZONE : zone dans laquelle créer l'instance.

REST

Pour définir la stratégie de maintenance de l'hôte d'une instance lors de sa création, envoyez une requête POST à la méthode instances.insert. Dans le corps de la requête, incluez un ou plusieurs des champs suivants dans le champ scheduling :

  • Pour définir le comportement de maintenance de l'hôte, incluez le champ onHostMaintenance.

  • Pour définir le comportement de redémarrage automatique, procédez comme suit :

    • Pour redémarrer automatiquement l'instance, incluez le champ automaticRestart.

    • Pour empêcher le redémarrage automatique de l'instance, incluez le champ automaticRestart.

  • Pour définir un délai avant expiration de la récupération des données d'un disque SSD local si votre instance est associée à des disques SSD locaux, incluez le champ localSsdRecoveryTimeout.

  • Pour définir un délai avant expiration des erreurs d'hôte, incluez le champ hostErrorTimeoutSeconds.

Par exemple, pour définir le comportement de maintenance de l'hôte, redémarrer automatiquement l'instance après des erreurs d'hôte ou des arrêts programmés, définir un délai avant expiration de récupération des données SSD local et définir un délai avant expiration des erreurs d'hôte, envoyez une requête comme suit :

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

{
  "name": "INSTANCE_NAME",
  "machineType": "zones/ZONE/machineTypes/MACHINE_TYPE",
  "disks": [
    {
      "boot": true,
      "initializeParams": {
        "sourceImage": "projects/IMAGE_PROJECT/global/images/IMAGE"
      }
    }
  ],
  "networkInterfaces": [
    {
      "network": "global/networks/default"
    }
  ],
  "scheduling": {
    "automaticRestart": AUTOMATIC_RESTART,
    "hostErrorTimeoutSeconds": ERROR_DETECTION_TIMEOUT,
    "localSsdRecoveryTimeout": LOCAL_SSD_RECOVERY_TIMEOUT,
    "onHostMaintenance": "MAINTENANCE_POLICY"
  }
}

Remplacez les éléments suivants :

  • PROJECT_ID : ID du projet dans lequel créer l'instance.

  • ZONE : zone dans laquelle créer l'instance.

  • INSTANCE_NAME : nom de l'instance.

  • MACHINE_TYPE : type de machine à utiliser.

  • IMAGE_PROJECT : projet contenant l'image, par exemple, debian-cloud. Pour en savoir plus sur les projets d'image compatibles, consultez la page Images publiques.

  • IMAGE : spécifiez l'une des options suivantes :

    • Version spécifique de l'image de l'OS. Exemple : debian-12-bookworm-v20240617

    • Une famille d'images, qui doit être au format family/IMAGE_FAMILY. Cela permet de spécifier l'image d'OS non obsolète la plus récente. Par exemple, si vous spécifiez family/debian-12, la dernière version de la famille d'images Debian 12 est utilisée. Pour en savoir plus sur l'utilisation des familles d'images, consultez la page Bonnes pratiques concernant les familles d'images.

  • AUTOMATIC_RESTART : comportement de redémarrage automatique de l'instance en cas de plantage ou d'arrêt programmé par Compute Engine. Spécifiez une des valeurs suivantes :

    • Pour permettre à Compute Engine de redémarrer automatiquement votre instance : true

    • Pour empêcher les redémarrages automatiques : false

  • ERROR_DETECTION_TIMEOUT : nombre de secondes avant le redémarrage d'une instance qui ne répond pas. La valeur doit être comprise entre 90 (90 secondes) et 330 (330 secondes, soit 5 minutes et 30 secondes). Seules les incréments de 30 secondes sont autorisés.

  • LOCAL_SSD_RECOVERY_TIMEOUT : nombre d'heures à consacrer à la récupération des données des disques SSD locaux associés. La valeur doit être comprise entre 0 (0 heure) et 168 (168 heures, soit 7 jours). Si vous définissez ce champ sur 0, Compute Engine ne récupère pas les données des disques SSD locaux.

  • MAINTENANCE_POLICY : comportement de maintenance de l'instance. La valeur peut être TERMINATE ou MIGRATE. Si vous créez une VM spot ou une instance non compatible avec la migration à chaud, vous ne pouvez utiliser que TERMINATE.

Pour en savoir plus sur la création d'une instance, consultez Créer et démarrer une instance Compute Engine.

Définir la règle lors de la création groupée d'instances

Pour définir la stratégie de maintenance de l'hôte lorsque vous créez des instances de manière groupée, sélectionnez l'une des options suivantes :

gcloud

Pour définir la stratégie de maintenance de l'hôte lors de la création d'instances de manière groupée, utilisez la commande gcloud compute instances bulk create avec une ou plusieurs des options suivantes :

  • Pour définir le comportement de maintenance de l'hôte, incluez l'option --maintenance-policy.

  • Pour définir le comportement de redémarrage automatique, procédez comme suit :

    • Pour redémarrer automatiquement l'instance, incluez l'indicateur --restart-on-failure.

    • Pour empêcher le redémarrage automatique de l'instance, incluez l'indicateur --no-restart-on-failure.

  • Pour définir un délai avant expiration de la récupération des données d'un disque SSD local si votre instance est associée à des disques SSD locaux, incluez l'indicateur --local-ssd-recovery-timeout.

  • Pour définir un délai avant expiration des erreurs d'hôte, incluez l'indicateur --host-error-timeout-seconds.

Par exemple, pour définir le comportement de maintenance de l'hôte, redémarrer automatiquement l'instance après des erreurs d'hôte ou des arrêts programmés, définir un délai avant expiration de récupération des données SSD local et définir un délai avant expiration d'erreur d'hôte, exécutez la commande suivante. L'exemple suivant crée également des instances dans une seule zone et spécifie un format de nom pour les instances :

gcloud compute instances bulk create \
    --count=COUNT \
    --host-error-timeout-seconds=ERROR_DETECTION_TIMEOUT \
    --local-ssd-recovery-timeout=LOCAL_SSD_RECOVERY_TIMEOUT \
    --machine-type=MACHINE_TYPE \
    --maintenance-policy=MAINTENANCE_POLICY \
    --name-pattern=NAME_PATTERN \
    --restart-on-failure \
    --zone=ZONE

Remplacez les éléments suivants :

  • COUNT : nombre d'instances à créer.

  • ERROR_DETECTION_TIMEOUT : nombre de secondes avant le redémarrage d'une instance qui ne répond pas. La valeur doit être comprise entre 90 (90 secondes) et 330 (330 secondes, soit 5 minutes et 30 secondes). Seules les incréments de 30 secondes sont autorisés.

  • LOCAL_SSD_RECOVERY_TIMEOUT : nombre d'heures à consacrer à la récupération des données des disques SSD locaux associés. La valeur doit être comprise entre 0 (0 heure) et 168 (168 heures, soit 7 jours). Si vous définissez ce champ sur 0, Compute Engine ne récupère pas les données des disques SSD locaux.

  • MACHINE_TYPE : type de machine à utiliser.

  • MAINTENANCE_POLICY : comportement de maintenance des instances. La valeur peut être TERMINATE ou MIGRATE. Si vous créez des VM Spot, des VM préemptives ou des instances qui ne sont pas compatibles avec la migration à chaud, vous ne pouvez utiliser que TERMINATE.

  • NAME_PATTERN : modèle de nom des instances. Pour remplacer une séquence de nombres dans un nom d'instance, utilisez une séquence de caractères de hachage (#). Par exemple, le modèle de nom instance-# génère des instances portant les noms instance-1, instance-2, etc., jusqu'à ce qu'il atteigne le nombre d'instances spécifié par COUNT.

  • ZONE : zone dans laquelle créer les instances.

REST

Pour définir la stratégie de maintenance de l'hôte lors de la création d'instances de manière groupée, envoyez une requête POST à la méthode instances.bulkInsert. Dans le corps de la requête, incluez un ou plusieurs des champs suivants dans le champ scheduling :

  • Pour définir le comportement de maintenance de l'hôte, incluez le champ onHostMaintenance.

  • Pour définir le comportement de redémarrage automatique, procédez comme suit :

    • Pour redémarrer automatiquement l'instance, incluez le champ automaticRestart.

    • Pour empêcher le redémarrage automatique de l'instance, incluez le champ automaticRestart.

  • Pour définir un délai avant expiration de la récupération des données d'un disque SSD local si votre instance est associée à des disques SSD locaux, incluez le champ localSsdRecoveryTimeout.

  • Pour définir un délai avant expiration des erreurs d'hôte, incluez le champ hostErrorTimeoutSeconds.

Par exemple, pour définir le comportement de maintenance de l'hôte, redémarrer automatiquement l'instance après des erreurs d'hôte ou des arrêts programmés, définir un délai avant expiration de récupération des données SSD local et définir un délai avant expiration des erreurs d'hôte, envoyez une requête comme suit. L'exemple suivant crée également des instances dans une seule zone et spécifie un format de nom pour les instances :

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

{
  "count": COUNT,
  "namePattern": "NAME_PATTERN",
  "instanceProperties": {
    "machineType": "MACHINE_TYPE",
    "disks": [
      {
        "boot": true,
        "initializeParams": {
          "sourceImage": "projects/IMAGE_PROJECT/global/images/IMAGE"
        }
      }
    ],
    "networkInterfaces": [
      {
        "network": "global/networks/default"
      }
    ],
    "scheduling": {
      "automaticRestart": AUTOMATIC_RESTART,
      "hostErrorTimeoutSeconds": ERROR_DETECTION_TIMEOUT,
      "localSsdRecoveryTimeout": LOCAL_SSD_RECOVERY_TIMEOUT,
      "onHostMaintenance": "MAINTENANCE_POLICY"
    }
  }
}

Remplacez les éléments suivants :

  • PROJECT_ID : ID du projet dans lequel créer les instances.

  • ZONE : zone dans laquelle créer les instances.

  • COUNT : nombre d'instances à créer.

  • NAME_PATTERN : modèle de nom des instances. Pour remplacer une séquence de nombres dans un nom d'instance, utilisez une séquence de caractères de hachage (#). Par exemple, le modèle de nom instance-# génère des instances portant les noms instance-1, instance-2, etc., jusqu'à ce qu'il atteigne le nombre d'instances spécifié par COUNT.

  • MACHINE_TYPE : type de machine à utiliser.

  • IMAGE_PROJECT : projet contenant l'image, par exemple, debian-cloud. Pour en savoir plus sur les projets d'image compatibles, consultez la page Images publiques.

  • IMAGE : spécifiez l'une des options suivantes :

    • Version spécifique de l'image de l'OS. Exemple : debian-12-bookworm-v20240617

    • Une famille d'images, qui doit être au format family/IMAGE_FAMILY. Cela permet de spécifier l'image d'OS non obsolète la plus récente. Par exemple, si vous spécifiez family/debian-12, la dernière version de la famille d'images Debian 12 est utilisée. Pour en savoir plus sur l'utilisation des familles d'images, consultez la page Bonnes pratiques concernant les familles d'images.

  • AUTOMATIC_RESTART : comportement de redémarrage automatique de l'instance en cas de plantage ou d'arrêt programmé par Compute Engine. Spécifiez une des valeurs suivantes :

    • Pour permettre à Compute Engine de redémarrer automatiquement votre instance : true

    • Pour empêcher les redémarrages automatiques : false

  • ERROR_DETECTION_TIMEOUT : nombre de secondes avant le redémarrage d'une instance qui ne répond pas. La valeur doit être comprise entre 90 (90 secondes) et 330 (330 secondes, soit 5 minutes et 30 secondes). Seules les incréments de 30 secondes sont autorisés.

  • LOCAL_SSD_RECOVERY_TIMEOUT : nombre d'heures à consacrer à la récupération des données des disques SSD locaux associés. La valeur doit être comprise entre 0 (0 heure) et 168 (168 heures, soit 7 jours). Si vous définissez ce champ sur 0, Compute Engine ne récupère pas les données des disques SSD locaux.

  • MAINTENANCE_POLICY : comportement de maintenance des instances. La valeur peut être TERMINATE ou MIGRATE. Si vous créez des VM Spot, des VM préemptives ou des instances qui ne sont pas compatibles avec la migration à chaud, vous ne pouvez utiliser que TERMINATE.

Pour en savoir plus sur la création d'instances de manière groupée, consultez Créer des VM de manière groupée.

Définir la règle lors de la création d'un modèle d'instance

Vous pouvez définir la stratégie de maintenance de l'hôte lorsque vous créez un modèle d'instance. Toutes les instances de calcul que vous créez à l'aide du modèle héritent de la stratégie de maintenance de l'hôte spécifiée dans le modèle.

Pour définir le délai avant expiration de la récupération des données des disques SSD locaux lors de la création d'un modèle d'instance qui spécifie des disques SSD locaux, utilisez la gcloud CLI ou l'API REST. Sinon, sélectionnez l'une des options suivantes :

Console

  1. Dans la console Google Cloud , accédez à la page Modèles d'instances.

    Accéder à la page "Modèles d'instances"

  2. Cliquez sur Créer un modèle d'instance. La page Créer un modèle d'instance s'affiche.

  3. Dans le champ Nom, saisissez un nom pour le modèle d'instance.

  4. Dans la section Emplacement, sélectionnez l'une des options suivantes :

    • Pour créer un modèle d'instance régional, sélectionnez Régional (recommandé), puis sélectionnez la région dans laquelle créer le modèle.

    • Pour créer un modèle d'instance global, sélectionnez Global.

  5. Dans la section Configuration de la machine, spécifiez le type de machine pour le modèle d'instance.

  6. Dans la section Modèle de provisionnement, développez Paramètres avancés du modèle de provisionnement de VM, puis effectuez une ou plusieurs des actions suivantes :

    • Pour modifier le comportement pendant les événements de maintenance, dans la liste Pendant la maintenance de l'hôte, sélectionnez l'une des options suivantes :

      • Pour migrer l'instance lors des événements de maintenance de l'hôte, sélectionnez Migrer l'instance de VM (recommandé).

      • Pour arrêter l'instance lors des événements de maintenance de l'hôte, sélectionnez Arrêter l'instance de VM.

    • Pour modifier le délai d'inactivité avant le redémarrage d'une instance qui ne répond pas, sélectionnez l'une des options suivantes dans la liste Délai d'inactivité en cas d'erreur de l'hôte :

      • Pour ne pas spécifier de délai avant expiration pour les erreurs d'hôte, sélectionnez Non spécifié (par défaut).

      • Pour spécifier un délai avant expiration pour une erreur d'hôte, sélectionnez l'une des options disponibles, jusqu'à 5 minutes et 30 secondes.

    • Pour modifier le comportement de l'instance en cas de plantage ou d'arrêt, sélectionnez l'une des options suivantes dans la liste Redémarrage automatique :

      • Pour redémarrer automatiquement l'instance après des erreurs d'hôte ou des arrêts programmés, sélectionnez Activé (recommandé).

      • Pour empêcher l'instance de redémarrer automatiquement après des erreurs d'hôte ou des arrêts programmés, sélectionnez Désactivé.

  7. Cliquez sur Créer.

gcloud

Pour définir la stratégie de maintenance de l'hôte lors de la création d'un modèle d'instance, exécutez la commande gcloud compute instance-templates create avec une ou plusieurs des options suivantes :

  • Pour définir le comportement de maintenance de l'hôte, incluez le champ onHostMaintenance.

  • Pour définir le comportement de redémarrage automatique, procédez comme suit :

    • Pour redémarrer automatiquement l'instance, incluez le champ automaticRestart.

    • Pour empêcher le redémarrage automatique de l'instance, incluez le champ automaticRestart.

  • Pour définir un délai avant expiration de la récupération des données d'un disque SSD local si votre instance est associée à des disques SSD locaux, incluez le champ localSsdRecoveryTimeout.

  • Pour définir un délai avant expiration des erreurs d'hôte, incluez le champ hostErrorTimeoutSeconds.

Par exemple, pour définir le comportement de maintenance de l'hôte, redémarrer automatiquement l'instance après des erreurs d'hôte ou des arrêts programmés, définir un délai avant expiration de récupération des données SSD local et définir un délai avant expiration d'erreur d'hôte, exécutez la commande suivante. L'exemple suivant crée également un modèle d'instance régional. Pour créer un modèle d'instance global, utilisez la même commande sans l'option --instance-template-region.

gcloud compute instance-templates create INSTANCE_TEMPLATE_NAME \
    --host-error-timeout-seconds=ERROR_DETECTION_TIMEOUT \
    --instance-template-region=REGION \
    --local-ssd-recovery-timeout=LOCAL_SSD_RECOVERY_TIMEOUT \
    --machine-type=MACHINE_TYPE \
    --maintenance-policy=MAINTENANCE_POLICY \
    --restart-on-failure

Remplacez les éléments suivants :

  • INSTANCE_TEMPLATE_NAME : nom du modèle d'instance.

  • ERROR_DETECTION_TIMEOUT : nombre de secondes avant le redémarrage d'une instance qui ne répond pas. La valeur doit être comprise entre 90 (90 secondes) et 330 (330 secondes, soit 5 minutes et 30 secondes). Seules les incréments de 30 secondes sont autorisés.

  • REGION : région dans laquelle créer le modèle d'instance.

  • LOCAL_SSD_RECOVERY_TIMEOUT : nombre d'heures à consacrer à la récupération des données des disques SSD locaux associés. La valeur doit être comprise entre 0 (0 heure) et 168 (168 heures, soit 7 jours). Si vous définissez ce champ sur 0, Compute Engine ne récupère pas les données des disques SSD locaux.

  • MACHINE_TYPE : type de machine à utiliser.

  • MAINTENANCE_POLICY : comportement de maintenance des instances. La valeur peut être TERMINATE ou MIGRATE. Si vous spécifiez une VM Spot, une VM préemptive ou un type d'instance non compatible avec la migration à chaud dans le modèle d'instance, vous ne pouvez utiliser que TERMINATE.

REST

Pour définir la stratégie de maintenance de l'hôte lors de la création d'un modèle d'instance, envoyez une requête POST à l'une des méthodes suivantes :

Dans le corps de la requête, incluez un ou plusieurs des champs suivants dans le champ scheduling :

  • Pour définir le comportement de maintenance de l'hôte, incluez le champ onHostMaintenance.

  • Pour définir le comportement de redémarrage automatique, procédez comme suit :

    • Pour redémarrer automatiquement l'instance, incluez le champ automaticRestart.

    • Pour empêcher le redémarrage automatique de l'instance, incluez le champ automaticRestart.

  • Pour définir un délai avant expiration de la récupération des données d'un disque SSD local si votre instance est associée à des disques SSD locaux, incluez le champ localSsdRecoveryTimeout.

  • Pour définir un délai avant expiration des erreurs d'hôte, incluez le champ hostErrorTimeoutSeconds.

Par exemple, pour définir le comportement de maintenance de l'hôte, redémarrer automatiquement l'instance après des erreurs d'hôte ou des arrêts programmés, définir un délai avant expiration de récupération des données SSD local et définir un délai avant expiration des erreurs d'hôte, envoyez une requête comme suit. L'exemple suivant crée également un modèle d'instance régional.

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/instanceTemplates

{
  "name": "INSTANCE_TEMPLATE_NAME",
  "properties": {
    "disks": [
      {
        "boot": true,
        "initializeParams": {
          "sourceImage": "projects/IMAGE_PROJECT/global/images/IMAGE"
        }
      }
    ],
    "machineType": "MACHINE_TYPE",
    "networkInterfaces": [
      {
        "network": "global/networks/default"
      }
    ],
    "scheduling": {
      "automaticRestart": AUTOMATIC_RESTART,
      "hostErrorTimeoutSeconds": ERROR_DETECTION_TIMEOUT,
      "localSsdRecoveryTimeout": LOCAL_SSD_RECOVERY_TIMEOUT,
      "onHostMaintenance": "MAINTENANCE_POLICY"
    }
  }
}

Remplacez les éléments suivants :

  • PROJECT_ID : ID du projet dans lequel créer le modèle d'instance.

  • REGION : région dans laquelle créer le modèle d'instance.

  • INSTANCE_TEMPLATE_NAME : nom du modèle d'instance.

  • IMAGE_PROJECT : projet contenant l'image, par exemple, debian-cloud. Pour en savoir plus sur les projets d'image compatibles, consultez la page Images publiques.

  • IMAGE : spécifiez l'une des options suivantes :

    • Version spécifique de l'image de l'OS. Exemple : debian-12-bookworm-v20240617

    • Une famille d'images, qui doit être au format family/IMAGE_FAMILY. Cela permet de spécifier l'image d'OS non obsolète la plus récente. Par exemple, si vous spécifiez family/debian-12, la dernière version de la famille d'images Debian 12 est utilisée. Pour en savoir plus sur l'utilisation des familles d'images, consultez la page Bonnes pratiques concernant les familles d'images.

  • MACHINE_TYPE : type de machine à utiliser.

  • AUTOMATIC_RESTART : comportement de redémarrage automatique de l'instance en cas de plantage ou d'arrêt programmé par Compute Engine. Spécifiez une des valeurs suivantes :

    • Pour permettre à Compute Engine de redémarrer automatiquement votre instance : true

    • Pour empêcher les redémarrages automatiques : false

  • ERROR_DETECTION_TIMEOUT : nombre de secondes avant le redémarrage d'une instance qui ne répond pas. La valeur doit être comprise entre 90 (90 secondes) et 330 (330 secondes, soit 5 minutes et 30 secondes). Seules les incréments de 30 secondes sont autorisés.

  • LOCAL_SSD_RECOVERY_TIMEOUT : nombre d'heures à consacrer à la récupération des données des disques SSD locaux associés. La valeur doit être comprise entre 0 (0 heure) et 168 (168 heures, soit 7 jours). Si vous définissez ce champ sur 0, Compute Engine ne récupère pas les données des disques SSD locaux.

  • MAINTENANCE_POLICY : comportement de maintenance des instances. La valeur peut être TERMINATE ou MIGRATE. Si vous spécifiez une VM Spot, une VM préemptive ou un type d'instance non compatible avec la migration à chaud dans le modèle d'instance, vous ne pouvez utiliser que TERMINATE.

Pour en savoir plus sur la création d'un modèle d'instance, consultez la section Créer des modèles d'instances.

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

Vous pouvez afficher la stratégie de maintenance de l'hôte d'une instance en affichant les détails de l'instance.

Lorsque vous affichez les détails de l'instance à l'aide de la gcloud CLI ou de l'API REST, vous ne pouvez afficher les champs localSsdRecoveryTimeout et hostErrorTimeoutSeconds que si vous les avez spécifiés lors de la création ou de la mise à jour de l'instance.

Pour afficher le délai avant expiration de la récupération des données de disque SSD local dans une instance à laquelle des disques SSD locaux sont associés, utilisez la gcloud CLI ou l'API REST. Sinon, sélectionnez l'une des options suivantes :

Console

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

    Accéder à la page Instances de VM

  2. Dans la colonne Nom, cliquez sur l'instance que vous souhaitez afficher. Une page contenant les détails de l'instance s'affiche.

  3. Dans l'onglet Détails, dans la section Gestion, dans la section Règles de disponibilité, vous pouvez afficher les informations suivantes :

    • Dans le champ En cas de maintenance de l'hôte, vous pouvez voir les événements de comportement de maintenance de l'hôte de l'instance.

    • Dans le champ Délai avant expiration des erreurs d'hôte, vous pouvez voir le temps d'attente de l'instance avant de la redémarrer ou de l'arrêter après avoir détecté qu'elle ne répondait pas. Si la valeur n'est pas définie (), le temps d'attente par défaut est de 5 minutes et 30 secondes.

    • Dans le champ de redémarrage Redémarrage automatique, vous pouvez voir si l'instance redémarre automatiquement après un plantage ou si Compute Engine l'arrête pour un arrêt programmé.

gcloud

Pour afficher la stratégie de maintenance de l'hôte d'une instance, utilisez la commande gcloud compute instances describe avec l'option --flatten définie sur scheduling :

 gcloud compute instances describe INSTANCE_NAME \
    --flatten=scheduling \
    --zone=ZONE

Remplacez les éléments suivants :

  • INSTANCE_NAME : nom de l'instance.

  • ZONE : zone où se trouve l'instance

Le résultat ressemble à ce qui suit :

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

REST

Pour afficher la stratégie de maintenance de l'hôte d'une instance, envoyez une requête GET à la méthode instances.get. Dans l'URL de la requête, incluez le paramètre de requête fields et définissez-le sur scheduling :

  GET https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/INSTANCE_NAME?fields=scheduling

Remplacez les éléments suivants :

  • PROJECT_ID : projet dans lequel l'instance existe.

  • ZONE : zone où se trouve l'instance.

  • INSTANCE_NAME : nom de l'instance.

Le résultat ressemble à ce qui suit :

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

Étapes suivantes