Arrêter et démarrer une instance

Cette page explique comment arrêter et démarrer une instance de machine virtuelle (VM). Pour suspendre et réactiver une instance, consultez la page Suspendre et réactiver une instance. Pour en savoir plus sur l'arrêt et la suspension d'une instance, consultez la section Cycle de vie des instances.

Vous pouvez arrêter temporairement une instance si vous n'en avez plus besoin, puis la redémarrer ultérieurement. Une instance arrêtée conserve ses disques persistants, ses adresses IP internes et ses adresses MAC. Cependant, elle arrête le système d'exploitation invité et perd l'état de l'application. En fait, une instance arrêtée revient à son état de mise sous tension et aucune donnée n'est enregistrée. Arrêtez une instance si vous souhaitez modifier le type de machine, ajouter ou supprimer des disques associés, modifier la configuration minimale de la plate-forme du processeur, ajouter ou supprimer des GPU, ou appliquer des recommandations de dimensionnement.

Si vous arrêtez une instance, Compute Engine envoie le signal d'arrêt ACPI à l'instance. Les systèmes d'exploitation invités modernes sont configurés de manière à effectuer un arrêt normal avant de s'éteindre en réponse au signal de mise hors tension. Compute Engine attend donc un court instant jusqu'à l'arrêt complet de l'invité, puis transitionne l'instance à l'état TERMINATED.

Une instance arrêtée n'entraîne pas de frais, mais toutes les ressources associées à l'instance continueront d'être facturées. Par exemple, vous serez toujours facturé pour les disques persistants et les adresses IP externes, conformément à la grille tarifaire, même si une instance est arrêtée. Pour ne plus être facturé pour les ressources associées, vous pouvez reconfigurer une instance arrêtée pour qu'elle ne les utilise plus, puis les supprimer.

Si vous devez conserver le système d'exploitation invité et l'état de l'application, suspendez plutôt l'instance.

Avant de commencer

Restrictions

Vous ne pouvez pas arrêter une instance à laquelle un disque SSD local est associé. Compute Engine ne vous empêchera pas d'arrêter une instance depuis le système d'exploitation invité, même si cette instance est associée à un disque SSD local. Redoublez donc de vigilance.

Disques SSD locaux

Vous ne pouvez pas arrêter une instance associée à un disque SSD local. Vous devez migrer vos données critiques du disque SSD local vers un disque persistant ou vers une autre instance avant de supprimer complètement l'instance. Compute Engine ne vous empêche pas d'arrêter le système d'exploitation invité sur une instance associée à un disque SSD local. Redoublez donc de vigilance.

Facturation

Les instances à l'état TERMINATED ne sont pas facturées pour une utilisation à la seconde et ne sont pas comptabilisées dans votre quota régional de processeurs. Vous pouvez donc choisir d'arrêter les instances que vous n'utilisez pas, et éviter ainsi d'être facturé pour des instances inactives. Vous pouvez ensuite redémarrer les mêmes instances avec les mêmes propriétés, métadonnées et ressources d'instance.

Vos instances ne sont pas facturées pour une utilisation à la seconde lorsqu'elles sont à l'état TERMINATED, mais toutes les ressources associées à la machine virtuelle, telles que les adresses IP statiques et les disques persistants, sont facturées jusqu'à leur suppression.

Arrêter une instance

Pour arrêter une instance, utilisez Google Cloud Console, l'outil gcloud ou l'API Compute Engine.

Console

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

    Accéder à la page Instances de VM

  2. Sélectionnez une ou plusieurs instances que vous souhaitez arrêter.

  3. Cliquez sur Arrêter.

gcloud

Utilisez la commande instances stop et spécifiez une ou plusieurs instances que vous souhaitez arrêter.

gcloud compute instances stop example-instance-1 example-instance-2

API

Dans l'API, créez une requête POST pour arrêter une instance.

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

Une instance à l'état TERMINATED existe toujours avec ses paramètres de configuration et ses métadonnées d'instance, mais elle perd ses données en mémoire et son état de machine virtuelle. Toutes les ressources associées à l'instance arrêtée le resteront jusqu'à ce que vous dissociiez manuellement ces ressources ou que vous supprimiez l'instance.

Une fois que l'instance est à l'état TERMINATED, vous pouvez redémarrer l'instance ou la supprimer. Vous pouvez également laisser une instance à l'état TERMINATED indéfiniment. Toutefois, si vous ne prévoyez pas de redémarrer l'instance, envisagez plutôt de la supprimer.

Arrêter une instance via le système d'exploitation

Vous pouvez éventuellement arrêter une instance via le système d'exploitation invité à l'aide de la commande sudo shutdown -h now ou sudo poweroff. Pour cela, exécutez l'une des commandes suivantes lorsque vous êtes connecté à la machine virtuelle :

me@example-instance:~$ sudo shutdown -h now
me@example-instance:~$ sudo poweroff

Redémarrer une instance arrêtée qui n'est pas associée à un disque chiffré

Pour démarrer une instance arrêtée, utilisez la méthode instances().start. Elle permet de démarrer une instance de machine virtuelle arrêtée dont l'état actuel est TERMINATED.

La méthode start redémarre une instance dont l'état est TERMINATED, alors que les méthodes telles que reset() et sudo reboot ne fonctionnent que sur les instances en cours d'exécution. Presque toutes les instances peuvent redémarrer, tant que leur état est défini sur TERMINATED.

Console

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

    Accéder à la page "Instances de VM"

  2. Cochez les cases correspondant à la ou aux instances à démarrer.

  3. Cliquez sur Démarrer.

gcloud

Pour réinitialiser votre instance à l'aide de gcloud compute :

gcloud compute instances start example-instance

API

Dans l'API, effectuez une requête POST sur l'URI suivant, en remplaçant le nom du projet, de la zone et de l'instance par les valeurs correspondantes :

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

Pour redémarrer votre instance à l'aide des bibliothèques clientes, créez une requête dans la méthodeinstances().start :

def restartInstance(auth_http, gce_service):
  request = gce_service.instances().start(project="myproject", zone="us-central1-a", instance="example-instance")
  response = request.execute(auth_http)

  print response

Pour plus d'informations sur cette méthode, consultez la documentation de référence de instances().start.

Redémarrer une instance associée à des disques chiffrés

Si l'instance que vous souhaitez redémarrer utilise des clés de chiffrement fournies par le client, vous devez les indiquer lorsque vous essayez de redémarrer cette instance.

Console

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

    Accéder à la page Instances de VM

  2. Cliquez sur le nom de l'instance que vous souhaitez démarrer. La page "Détails de l'instance" s'ouvre.

  3. Cliquez sur le bouton Démarrer. Une fenêtre s'ouvre dans laquelle vous pouvez spécifier des clés de chiffrement pour les périphériques associés à cette instance.

  4. Spécifiez la clé de chiffrement de chaque disque chiffré associé à cette instance.

  5. Cliquez sur Démarrer pour démarrer l'instance.

gcloud

Lorsque vous démarrez l'instance, indiquez la clé à l'aide de l'option --csek-key-file et du nom du disque. Si vous utilisez une clé encapsulée en RSA, utilisez le composant gcloud beta :

 gcloud compute instances start INSTANCE_NAME \
     --csek-key-file ENCRYPTION_KEY

Remplacez les éléments suivants :

  • INSTANCE_NAME : nom de l'instance.
  • ENCRYPTION_KEY : clé de chiffrement que vous utilisez pour chiffrer les disques persistants associés à l'instance.

API

Dans l'API, créez une requête POST pour démarrer l'instance qui utilise une clé de chiffrement. Si vous utilisez une clé encapsulée en RSA, envoyez la requête à la version bêta de l'API, et non à l'API v1.

POST https://www.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/INSTANCE_NAME/startWithEncryptionKey
{
  "instanceEncryptionKey": {
    "rsaEncryptedKey": "ENCRYPTION_KEY
  },
  "disk": [
    {
       "source": "DISK_NAME",
       "diskEncryptionKey": {
         "rsaEncryptedKey": "ENCRYPTION_KEY"
       }
    }
  ]
}

Remplacez les éléments suivants :

  • PROJECT_ID est l'ID de votre projet.
  • ZONE est la zone associée à cette instance.
  • INSTANCE_NAME est le nom de l'instance.
  • ENCRYPTION_KEY est la clé de chiffrement que vous utilisez pour chiffrer les disques persistants associés à l'instance.
  • DISK_NAME est le disque associé qui est chiffré avec une clé de chiffrement fournie par le client.

Réinitialiser une instance

La réinitialisation de votre instance revient à effectuer une réinitialisation matérielle sur votre ordinateur, en appuyant sur un bouton de réinitialisation ou en maintenant enfoncé le bouton Marche/Arrêt. La réinitialisation forcée d'une instance efface le contenu de la mémoire de la machine et rétablit l'état initial de la machine virtuelle. L'instance ne procède pas à un arrêt normal du système d'exploitation invité. Tout au long de ce processus, l'instance reste à l'état RUNNING.

Pour effectuer une réinitialisation sur une instance en cours d'exécution, sélectionnez le bouton Réinitialiser dans Cloud Console, exécutez la commande instances reset dans gcloud, ou effectuez une requête POST dans l'API.

Console

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

    Accéder à la page "Instances de VM"

  2. Sélectionnez la ou les instances à réinitialiser.

  3. Cliquez sur Réinitialiser.

gcloud

Pour réinitialiser votre instance à l'aide de gcloud compute :

gcloud compute instances reset example-instance

API

Dans l'API, effectuez une requête POST sur l'URI suivant, en remplaçant le nom du projet, de la zone et de l'instance par les valeurs correspondantes :

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

Pour réinitialiser votre instance à l'aide des bibliothèques clientes, créez une requête utilisant la méthode instances().reset :

def resetInstance(auth_http, gce_service):
  request = gce_service.instances().reset(project="myproject", zone="us-central1-a", instance="example-instance")

  print response

Pour plus d'informations sur cette méthode, consultez la documentation de référence de instances().reset.

Après l'exécution de la commande reset, l'opération de zone suivante renvoie l'état DONE une fois que l'instance a été complètement arrêtée.

Utiliser d'autres méthodes de redémarrage

Vous pouvez également choisir de réinitialiser votre instance à l'aide des méthodes suivantes :

  • sudo reboot (seulement sous Linux) : appelez cette méthode à partir de l'instance. Elle efface la mémoire et réinitialise l'instance avec les métadonnées, l'image et les disques persistants d'origine. Cette commande ne récupère pas les versions mises à jour de l'image, et l'instance conserve la même adresse IP éphémère. Cette méthode revient à redémarrer votre ordinateur.
  • Redémarrer une instance Windows : vous pouvez redémarrer une instance Windows d'une manière semblable à la méthode sudo reboot ci-dessus, à l'aide du menu Démarrer. Dans le menu Démarrer, cliquez sur la flèche située à côté du bouton Déconnexion, puis sur Redémarrer.
  • gcloud compute instances delete suivie de gcloud compute instances create : il s'agit d'un redémarrage totalement destructif qui initialise l'instance avec toutes les informations transmises dans gcloud compute instances create. Vous pouvez ensuite sélectionner de nouvelles images ou d'autres ressources que vous souhaitez utiliser. Il se peut que l'instance redémarrée ait une adresse IP différente. Cette méthode peut échanger la machine physique hébergeant l'instance.

Étapes suivantes