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
- Si vous souhaitez utiliser les exemples de ligne de commande de ce guide, procédez comme suit :
- Installez la dernière version de l'outil de ligne de commande gcloud ou appliquez la mise à jour correspondante.
- Définissez une région et une zone par défaut.
- Si vous voulez utiliser les exemples d'API de ce guide, configurez l'accès aux API.
- Consultez la documentation sur le cloud privé virtuel.
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
Dans Cloud Console, accédez à la page Instances de VM.
Cliquez sur le nom de l'instance de VM pour ouvrir la page des détails.
Cliquez sur Arrêter
.Si une boîte de dialogue de confirmation s'affiche, cliquez sur Arrêter.
Une fois la VM arrêtée, cliquez sur Modifier
.Sous Interface réseau, cliquez sur l'interface que vous souhaitez déplacer.
Dans le champ Réseau de l'interface, sélectionnez le nouveau réseau associé à celle-ci.
Dans le champ Sous-réseau de l'interface, sélectionnez le nouveau sous-réseau associé à celle-ci.
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.
Cliquez sur OK pour fermer le panneau de configuration de l'interface réseau.
Cliquez sur Enregistrer.
Une fois les modifications de la VM enregistrées, cliquez sur Démarrer
.Si une boîte de dialogue de confirmation s'affiche, cliquez sur Démarrer.
gcloud
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.
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
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
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.
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.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.
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
- Découvrez comment déplacer une instance vers une autre zone.
- Apprenez-en davantage sur la migration à chaud.
- Vérifiez l'état d'une VM.