Migrer une VM entre des réseaux

Cette page explique comment migrer une instance de VM d'un réseau à un autre. Dans le cas d'une VM connectée à plusieurs réseaux à l'aide de plusieurs interfaces réseau, ce processus met à jour l'une des interfaces et laisse les autres en place.

Les migrations suivantes sont acceptées :

  • D'un ancien réseau à un réseau VPC dans le même projet
  • D'un réseau VPC à un autre réseau VPC dans le même projet
  • D'un sous-réseau dans un réseau VPC à un autre sous-réseau du même réseau
  • D'un réseau de projet de service vers le réseau partagé d'un projet hôte de VPC partagé

Dans tous les cas, la VM reste dans la région et la zone où elle se trouvait avant. Seul le réseau associé change.

Avant de commencer

Conditions requises

Avant de déplacer votre VM, elle doit répondre aux exigences suivantes :

  • La migration correspond à une migration à "froid". La VM doit être arrêtée pour pouvoir être migrée.
  • La VM ne doit pas appartenir à un groupe d'instances ou à un groupe de points de terminaison du réseau (NEG).
    • Si la VM se trouve dans un groupe d'instances non géré ou dans un NEG, vous devez la retirer du groupe avant de la migrer.
    • Les VM des groupes d'instances gérés ne peuvent pas être migrées. À la place, vous devez copier votre modèle d'instance sur le nouveau réseau et l'utiliser pour recréer le groupe d'instances géré.
    • Vous pouvez déplacer des instances dans des pools cibles sans les supprimer au préalable. Le pool cible s'étend pour couvrir les deux réseaux.

Limites

  • Vous ne pouvez pas migrer une interface de VM vers un ancien réseau.
  • L'adresse MAC allouée à l'interface réseau sera modifiée lors de la migration. Cela peut avoir un impact sur les services étroitement liés à des adresses MAC telles que le contrat de licence tiers.
  • Si vous migrez la VM vers un réseau ou un sous-réseau avec une plage d'adresses IP différente, l'adresse IP interne de votre instance doit changer. Si vous migrez vers un sous-réseau avec la même plage d'adresses IP, vous pouvez conserver l'ancienne adresse IP, tant qu'elle n'est pas déjà utilisée à la destination, en la spécifiant lors de la migration.
  • Si le sous-réseau cible n'a pas la même plage d'adresses IP que la source, l'adresse IP de l'interface change pour correspondre à la nouvelle plage de sous-réseaux.
  • Vous pouvez conserver l'adresse IP externe existante de la VM dans le nouvel emplacement. Pour ce faire, vous devez disposer de l'autorisation compute.subnetworks.useExternalIp sur le réseau cible, et le réseau cible ne peut pas désactiver les adresses IP externes par la contrainte constraints/compute.vmExternalIpAccess.

Migrer une VM

Avant de migrer une VM, consultez les exigences et limites.

Google vous recommande de créer les règles de pare-feu, routes, équilibreurs de charge et autres ressources d'infrastructure réseau nécessaires dans le nouveau réseau avant de migrer vos VM. Cela peut réduire le temps hors connexion de vos VM.

Console

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

    Accéder à la page "Instances de VM"

  2. Cliquez sur le nom de l'instance de VM pour ouvrir la page des détails.

  3. Cliquez sur Arrêter .

  4. Si une boîte de dialogue de confirmation s'affiche, cliquez sur Arrêter.

  5. Une fois la VM arrêtée, cliquez sur Modifier .

  6. Sous Interface réseau, cliquez sur l'interface que vous souhaitez déplacer.

  7. Dans le champ Réseau de l'interface, sélectionnez le nouveau réseau associé à celle-ci.

  8. Dans le champ Sous-réseau de l'interface, sélectionnez le nouveau sous-réseau associé à celle-ci.

  9. Dans le champ Adresse IP interne, spécifiezAutomatique si vous souhaitez que le système alloue une adresse IP de la plage de sous-réseau, ou choisissez Personnalisée si vous souhaitez définir vous-même une adresse inutilisée.

  10. Cliquez sur OK pour fermer le panneau de configuration de l'interface réseau.

  11. Cliquez sur Enregistrer.

  12. Une fois les modifications de la VM enregistrées, cliquez sur Démarrer .

  13. Si une boîte de dialogue de confirmation s'affiche, cliquez sur Démarrer.

gcloud

  1. Arrêter la VM

    gcloud compute instances stop INSTANCE_NAME \
        --zone=ZONE_NAME

    Où :

    • INSTANCE_NAME est le nom de l'instance de VM.
    • ZONE_NAME est le nom de la zone contenant l'instance.
  2. Migrer la VM

    gcloud compute instances network-interfaces update INSTANCE_NAME \
        --zone=ZONE_NAME \
        --network-interface=NIC \
        --network=NETWORK_NAME \
        --subnetwork=SUBNET_NAME

    Où :

    • INSTANCE_NAME est le nom de l'instance de VM.
    • ZONE_NAME est le nom de la zone contenant l'instance.
    • NIC est le nom de l'interface que vous mettez à jour. Dans une VM à interface unique, NIC est nic0.
    • NETWORK_NAME est le nom du réseau cible. Si vous migrez la VM depuis un réseau du projet de service vers le réseau du projet hôte, vous devez utiliser un nom complet pour le réseau cible : projects/HOST_PROJECT_ID/global/networks/NETWORK_NAME
    • SUBNET_NAME est le nom du sous-réseau cible. Ce sous-réseau doit se trouver dans la même région que la VM. Si vous migrez la VM depuis un réseau du projet de service vers le réseau du projet hôte, vous devez utiliser un nom complet pour le sous-réseau : projects/HOST_PROJECT_ID/regions/REGION/subnetworks/SUBNET_NAME
  3. Démarrer la VM

    La migration peut prendre quelques minutes. Nous vous recommandons donc d'attendre avant de démarrer la VM dans le nouvel emplacement.

    gcloud compute instances start INSTANCE_NAME \
        --zone=ZONE_NAME

    Où :

    • INSTANCE_NAME est le nom de l'instance de VM.
    • ZONE_NAME est le nom de la zone contenant l'instance.

API

  1. Arrêter la VM

    POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE_NAME/instances/INSTANCE_NAME/stop
    

    Où :

    • PROJECT_ID est l'ID de votre projet.
    • INSTANCE_NAME est le nom de l'instance de VM.
    • ZONE_NAME est le nom de la zone contenant l'instance.
  2. Obtenez l'empreinte de l'interface.

    Vous avez besoin de l'empreinte pour mettre à jour l'interface réseau.

    GET https://www.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE_NAME/instances/INSTANCE_NAME/updateNetworkInterface?networkInterface=NIC
    

    Où :

    • PROJECT_ID est l'ID de votre projet.
    • INSTANCE_NAME est le nom de l'instance de VM.
    • ZONE_NAME est le nom de la zone contenant l'instance.
    • NIC est le nom de l'interface que vous mettez à jour. Dans une VM à interface unique, NIC est nic0.

    Copiez la chaîne du champ fingerprint pour l'utiliser à l'étape suivante.

  3. Migrer la VM

    PATCH https://www.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE_NAME/instances/INSTANCE_NAME/updateNetworkInterface?networkInterface=NIC
    {
      "network": NETWORK_NAME,
      "subnetwork": SUBNET_NAME,
      "networkIP": IP_ADDRESS,
      "name": NIC,
      "fingerprint": FINGERPRINT
    }
    • PROJECT_ID est l'ID de votre projet.
    • ZONE_NAME est le nom de la zone contenant l'instance.
    • INSTANCE_NAME est le nom de l'instance de VM.
    • NIC est le nom de l'interface que vous mettez à jour. Dans une VM à interface unique, NIC est nic0.
    • NETWORK_NAME est le nom du réseau cible. Si vous migrez la VM depuis un réseau du projet de service vers le réseau du projet hôte, vous devez utiliser un nom complet pour le réseau cible : projects/HOST_PROJECT_ID/global/networks/NETWORK_NAME
    • SUBNET_NAME est le nom du sous-réseau cible. Ce sous-réseau doit se trouver dans la même région que la VM. Si vous migrez la VM depuis un réseau du projet de service vers le réseau du projet hôte, vous devez utiliser un nom complet pour le sous-réseau : projects/HOST_PROJECT_ID/regions/REGION/subnetworks/SUBNET_NAME
    • IP_ADDRESS est l'adresse IP interne que vous souhaitez pour l'instance au nouvel emplacement. Si vous omettez ce champ, l'interface en affecte automatiquement une.
    • FINGERPRINT correspond à l'empreinte copiée à partir de la commande GET.
  4. Démarrer la VM

    POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE_NAME/instances/INSTANCE_NAME/start
    

    Où :

    • PROJECT_ID est l'ID de votre projet.
    • INSTANCE_NAME est le nom de l'instance de VM.
    • ZONE_NAME est le nom de la zone contenant l'instance.

Étape suivante