Déplacer une instance entre des zones

Cette page explique comment déplacer une instance de VM entre des zones à l'aide de l'API projects.moveInstance ou bien manuellement via une série d'étapes. Si une zone est indisponible ou obsolète, cette méthode vous permet de déplacer vos instances vers une autre zone.

Pour déplacer une instance, procédez comme suit :

  1. Créez des instantanés des disques persistants associés à l'instance d'origine.
  2. Créez des copies des disques persistants dans la zone de destination.
  3. Si vous déplacez une instance au sein de la même région, convertissez temporairement l'adresse IP externe éphémère attribuée à l'instance en adresse IP externe statique.
  4. Créez et démarrez une instance dans la zone de destination. Si vous effectuez un déplacement vers une autre région, vous devez également choisir un nouveau sous-réseau pour la nouvelle instance.
  5. Associez les disques persistants nouvellement créés à votre nouvelle instance.
  6. Attribuez une adresse IP externe à la nouvelle instance. Si besoin est, convertissez l'adresse IP en adresse IP externe éphémère.
  7. Supprimez les instantanés, les disques d'origine ainsi que l'instance d'origine.

Lorsque c'est possible, il est conseillé de déplacer une instance automatiquement à l'aide de l'API projects.moveInstance. Si votre instance ne répond pas aux exigences relatives à l'utilisation de l'API moveInstance, vous pouvez toujours la déplacer manuellement.

Avant de commencer

Exigences

Avant de déplacer votre instance, vous devez répondre aux exigences suivantes :

  • Votre projet doit disposer d'un quota suffisant pour pouvoir créer des instantanés et convertir des adresses IP externes éphémères.
  • Dans votre région de destination, le quota doit être suffisant pour accueillir la nouvelle instance et les nouveaux disques. Par exemple, si l'instance que vous souhaitez déplacer est associée à trois disques, vous devez disposer d'un quota suffisant pour pouvoir créer trois instantanés de disque persistant temporaires et trois disques. Une fois les disques créés, vous pouvez supprimer vos instantanés temporaires.
  • Les disques persistants associés à l'instance que vous souhaitez déplacer ne doivent pas être associés à plusieurs instances.
  • Si votre instance comprend des GPU, vérifiez que ceux que vous souhaitez utiliser sont disponibles dans votre zone cible. Pour obtenir la liste des GPU et des zones dans lesquelles ils sont disponibles, consultez la section GPU sur Compute Engine.

Après avoir déplacé votre instance, mettez à jour les références existantes à la ressource d'origine, telles que les instances ou pools cibles qui pointent vers l'ancienne instance.

Propriétés de la ressource

Pendant le déplacement, certaines propriétés générées par le serveur associées à votre instance et à vos disques seront modifiées.

Propriétés modifiées pour les instances

Nom de propriété Modifications
Adresse IP interne Une nouvelle adresse IP interne est généralement attribuée, mais il est possible que l'instance conserve son adresse IP interne d'origine.
Adresse IP externe Si vous déplacez l'instance entre plusieurs zones au sein de la même région, l'adresse IP externe reste la même. Dans le cas contraire, vous devrez choisir une adresse IP différente pour l'instance de VM.
Plate-forme du processeur Selon la plate-forme de processeur disponible dans votre zone de destination, votre instance peut disposer d'une plate-forme différente après son déplacement. Pour obtenir la liste complète des plates-formes de processeur disponibles dans chaque zone, consultez la section Régions et zones disponibles.
Réseau/Sous-réseau Si votre instance appartient à un sous-réseau et que vous la déplacez vers une autre région, vous devez choisir un nouveau sous-réseau pour votre instance. Si vous déplacez une instance vers une zone de la même région, celle-ci conserve son sous-réseau.

Propriétés modifiées pour les disques

Nom de propriété Modifications
Instantané source L'instantané source du nouveau disque est remplacé par l'instantané temporaire créé lors du déplacement.
ID de l'instantané source L'ID de l'instantané source est remplacé par l'ID de l'instantané temporaire.
Image source Le champ d'image source est vide.
ID de l'image L'ID de l'image est vide.
Dernier horodatage de dissociation Le dernier horodatage de dissociation est vide.
Dernier horodatage d'association Le dernier horodatage d'association est défini sur l'horodatage relatif à l'association du nouveau disque à la nouvelle instance.

Propriétés modifiées pour les instances et les disques

Nom de propriété Modifications
ID Un nouvel ID de ressource est généré.
Horodatage de création Un nouvel horodatage de création est généré.
URL des ressources de la zone Toutes les URL des ressources de la zone sont modifiées pour correspondre à la zone de destination. Voici la liste des URL de ressources modifiées :
  • L'URL du disque source d'une instance
  • L'URL du type de machine d'une instance
  • Les URL des liens auto
  • Les URL de zone
  • Les URL de type de disque
  • Toutes les URL des instances répertoriées dans la liste users[] d'un disque

Opter pour un déplacement manuel ou automatique

Pour effectuer un déplacement manuel, vous devez effectuer les étapes décrites ci-dessus (au lieu d'utiliser l'API projects.moveInstances). Dans la mesure du possible, il est conseillé d'exploiter l'API moveInstances pour vous faciliter la tâche. Certains scénarios ne permettent toutefois pas d'utiliser l'API moveInstances, à  savoir :

  • Si vous voulez déplacer votre instance entre plusieurs régions (us-west1-a et asia-south1-b, par exemple) et que votre VM appartient à un sous-réseau, vous devez effectuer le déplacement manuellement et choisir un nouveau sous-réseau pour votre instance.
  • Vous devez également effectuer le déplacement manuellement si l'instance est associée à des GPU ou à des disques SSD locaux.

Quelle que soit la méthode choisie, vous devez répondre aux exigences pour pouvoir déplacer l'instance.

Avant de déplacer une instance, veillez à consulter les exigences.

gcloud


Assurez-vous que votre instance est en cours d'exécution. Déplacez-la ensuite à l'aide de la sous-commande compute instances move dans gcloud :

Par exemple, pour déplacer une instance example-instance-1 s'exécutant dans us-central1-b (et les disques persistants qui lui sont associés) vers us-central1-f, utilisez la commande suivante :

gcloud compute instances move example-instance \
    --zone us-central1-a --destination-zone us-central1-f

Cette opération peut prendre plusieurs minutes.

API

Dans l'API, envoyez une requête POST à l'API moveInstance en spécifiant targetInstance et destinationZone dans le corps de la requête. Exemple :

{
   "targetInstance": "zones/us-central1-a/instances/example-instance",
   "destinationZone": "zones/us-central1-b"
}

Déplacer une instance manuellement

Lorsque c'est possible, il est conseillé de déplacer une instance automatiquement, car l'API moveInstance gère toutes les tâches à votre place. Toutefois, certaines limitations peuvent vous empêcher d'utiliser cette API. Dans ce cas, vous pouvez effectuer le déplacement manuellement. Déplacez votre instance manuellement si l'une des conditions suivantes est remplie :

  • Votre VM ne possède pas l'état RUNNING.
  • Vous déplacez votre VM vers une autre région, et la VM appartient à un sous-réseau.
  • Votre instance est associée à des GPU ou à des disques SSD locaux.

L'exemple suivant vous montre comment déplacer une instance myinstance comportant deux disques persistants, myrootdisk et mydatadisk, de la région europe-west1-a à la région us-west1-b. L'exemple d'instance ressemble à ceci :

gcloud compute instances list
NAME       ZONE           MACHINE_TYPE  INTERNAL_IP    EXTERNAL_IP     STATUS
myinstance europe-west1-a n1-standard-4 10.240.116.177 146.148.112.106 RUNNING

Pour déplacer l'instance dans une autre zone :

  1. Identifiez les disques associés à l'instance que vous souhaitez déplacer.

    Accéder à la page "Disques"

    Dans cet exemple, les deux disques suivants sont associés à l'instance myinstance :

    • Un disque de démarrage appelé myrootdisk
    • Un disque de données appelé mydatadisk
  2. Définissez l'état de suppression automatique de myrootdisk et de mydatadisk sur false pour vous assurer de conserver les disques lors de la suppression de l'instance.

    gcloud compute instances set-disk-auto-delete myinstance --zone europe-west1-a \
        --disk myrootdisk --no-auto-delete
    

    Si l'état de suppression automatique a bien été mis à jour, gcloud compute renvoie la réponse Updated [...]. S'il était déjà défini sur "false", gcloud compute renvoie une réponse vide.

  3. (Facultatif) Enregistrez vos métadonnées d'instance.

    Lorsque vous supprimez votre instance, les métadonnées d'instance sont également effacées. Vous pouvez enregistrer ces informations dans un fichier distinct, puis réutiliser les métadonnées dans la nouvelle instance.

    Décrivez les métadonnées de votre instance en exécutant la commande suivante :

    gcloud compute instances describe myinstance --zone europe-west1-a
    

    Enregistrez le contenu dans un fichier séparé.

  4. Créez des sauvegardes de vos données.

    Par mesure de précaution, créez des sauvegardes de vos données en prenant des instantanés de disque persistant. Comme les disques persistants sont toujours associés à l'instance, effacez vos tampons de disque avant de créer un instantané pour vous assurer qu'il reste cohérent avec l'état du disque persistant.

    Une fois vos tampons de disque effacés, créez les instantanés à l'aide de la commande suivante :

    gcloud compute disks snapshot myrootdisk mydatadisk \
        --snapshot-names backup-myrootsnapshot,backup-mydatasnapshot \
        --zone europe-west1-a
    

    Pour vérifier que l'instantané a bien été créé, exécutez la commande gcloud compute snapshots list.

  5. Supprimez votre instance.

    La suppression de votre instance entraîne son arrêt complet et la dissociation de tous les disques persistants.

    gcloud compute instances delete myinstance --zone europe-west1-a
    

    gcloud vous invite à confirmer la suppression :

     The following instances will be deleted. Attached disks configured to
     be auto-deleted will be deleted unless they are attached to any other
     instances. Deleting a disk is irreversible and any data on the disk
     will be lost.
      — [myinstance] in [europe-west1-a]
     

    Do you want to continue (Y/n)?

    Comme vous avez précédemment désactivé l'état de suppression automatique des disques, appuyez sur Y pour continuer et ignorer l'avertissement.

  6. Créez ensuite un autre instantané du disque racine et du disque de données.

    gcloud compute disks snapshot myrootdisk mydatadisk \
        --snapshot-names myrootsnapshot,mydatasnapshot \
        --zone europe-west1-a
    
    Created [.../mydatasnapshot].
    Created [.../myrootsnapshot].
  7. (Facultatif) Supprimez vos disques persistants.

    Si vous prévoyez de réutiliser les noms des disques persistants pour les nouveaux disques, vous devez supprimer les disques existants afin de libérer les noms. Cette suppression permet également de réduire les coûts de stockage sur disque persistant.

    Si vous n'avez pas l'intention de réutiliser les noms, vous pouvez supprimer les disques persistants plus tard.

    gcloud compute disks delete myrootdisk mydatadisk --zone europe-west1-a
    
  8. Créez des disques persistants dans la région us-west1-b à partir des instantanés que vous venez de prendre. Commencez par créer le disque racine.

    gcloud compute disks create myrootdiskb --source-snapshot myrootsnapshot \
        --zone us-west1-b
    
    Created [.../myrootdiskb].
    NAME        ZONE           SIZE_GB TYPE        STATUS
    myrootdiskb us-west1-b     100     pd-standard READY

    Créez ensuite le disque de données.

    gcloud compute disks create mydatadiskb --source-snapshot mydatasnapshot \
        --zone us-west1-b
    
    Created [.../mydatadiskb].
    NAME        ZONE           SIZE_GB TYPE        STATUS
    mydatadiskb us-west1-b 4000    pd-standard READY
  9. Recréez votre instance dans us-west1-b.

    • Si vous avez choisi d'enregistrer vos métadonnées d'instance dans un fichier (par exemple, myinstance.describe), vous pouvez l'exploiter pour définir les mêmes métadonnées sur votre instance.

    • Si votre instance possédait une adresse IP externe réservée, vous pouvez la réattribuer à votre nouvelle instance en spécifiant l'option --address ADDRESS.

    • Si votre instance disposait de GPU, vous pouvez en ajouter à la nouvelle instance grâce à l'option --accelerator.

    • Si l'instance utilise un sous-réseau spécifique, faites précéder l'indicateur --zone [ZONE_NAME] de l'indicateur --subnet [SUBNET_NAME].

    Pour obtenir une liste complète des indicateurs supplémentaires, consultez la page relative à gcloud compute instances create.

    gcloud compute instances create myinstanceb --machine-type n1-standard-4 \
        --zone us-west1-b \
        --disk name=myrootdiskb,boot=yes,mode=rw \
        --disk name=mydatadiskb,mode=rw
    
    Created [.../myinstanceb].
    NAME        ZONE           MACHINE_TYPE  INTERNAL_IP    EXTERNAL_IP     STATUS
    myinstanceb us-west1-b     n1-standard-4 10.240.173.229 146.148.112.106 RUNNING
  10. (Facultatif) Supprimez vos instantanés de disque persistant.

    Après avoir confirmé le déplacement de vos machines virtuelles, supprimez les instantanés temporaires que vous avez créés afin de réduire les coûts de stockage.

    gcloud compute snapshots delete myrootsnapshot mydatasnapshot
    

    Si vous n'avez plus besoin de vos instantanés de sauvegarde, supprimez-les également :

    gcloud compute snapshots delete backup-myrootsnapshot backup-mydatasnapshot
    

Étapes suivantes

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

Envoyer des commentaires concernant…

Documentation Compute Engine