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
-
Install the Google Cloud CLI, then initialize it by running the following command:
gcloud init
- 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
parTERMINATE
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
Accédez à la page Créer une instance dans Google Cloud Console.
Spécifiez un nom pour la VM.
Sélectionnez une région et une zone pour la VM.
Dans la section Configuration de la machine, procédez comme suit :
- Spécifiez les détails du type de machine pour la VM.
- Développez le menu Paramètres avancés du modèle de provisionnement de la VM.
- Dans le menu Pendant la maintenance de l'hôte, sélectionnez l'une des étapes suivantes :
- Pour migrer des VM lors d'événements de maintenance, sélectionnez Migrer l'instance de VM.
- Pour arrêter les VM lors des événements de maintenance, sélectionnez Arrêter l'instance de VM.
Pour créer la VM, cliquez sur Créer.
gcloud
In the Google Cloud console, 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
ouMIGRATE
.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
ouMIGRATE
.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
ouMIGRATE
.RESTART_POLICY
: règle de redémarrage de cette VM,true
oufalse
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
ouMIGRATE
.RESTART_POLICY
: règle de redémarrage de cette VM,true
oufalse
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
Dans la console Google Cloud, accédez à la page Instances de VM.
Cliquez sur la VM dont vous souhaitez modifier les paramètres. La page des détails de la VM s'affiche.
Sur la page des détails de la VM, procédez comme suit :
- Cliquez sur le bouton Modifier en haut de la page.
- 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.
- Cliquez sur Enregistrer.
gcloud
In the Google Cloud console, 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
ouMIGRATE
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
ouMIGRATE
.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
ouMIGRATE
.RESTART_POLICY
: règle de redémarrage de cette VM,true
oufalse
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
Accédez à la page Instances de VM.
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.
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 VMZONE
: 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
- En savoir plus sur la maintenance de l'hôte.
- En savoir plus sur la migration à chaud.
- Apprenez à détecter un événement de migration à chaud.