Migrazione di una VM tra reti


Questa pagina descrive come eseguire la migrazione di un'istanza VM da una rete a un'altra. Nel caso di una VM connessa a più di una rete tramite più interfacce di rete, questo processo aggiorna una delle interfacce e lascia invariate le altre.

Sono supportate le seguenti migrazioni:

  • Da una rete legacy a una rete VPC nello stesso progetto
  • Da una rete VPC a un'altra rete VPC nello stesso progetto
  • Da una subnet di una rete VPC a un'altra subnet della stessa rete
  • Da una rete di un progetto di servizio a una rete condivisa di un progetto host VPC condiviso

In tutti i casi, la VM rimane nella regione e nella zona in cui si trovava in precedenza. Solo la rete collegata cambia.

Prima di iniziare

  • Leggi la documentazione di Virtual Private Cloud.
  • Se non l'hai ancora fatto, configura l'autenticazione. L'autenticazione è il processo mediante il quale la tua identità viene verificata per l'accesso a servizi e API di Google Cloud . Per eseguire codice o esempi da un ambiente di sviluppo locale, puoi autenticarti su Compute Engine selezionando una delle seguenti opzioni:

    Select the tab for how you plan to use the samples on this page:

    Console

    When you use the Google Cloud console to access Google Cloud services and APIs, you don't need to set up authentication.

    gcloud

      1. After installing the Google Cloud CLI, initialize it by running the following command:

        gcloud init

        If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.

      2. Set a default region and zone.
      3. REST

        Per utilizzare gli esempi di API REST in questa pagina in un ambiente di sviluppo locale, utilizzi le credenziali che fornisci a gcloud CLI.

          After installing the Google Cloud CLI, initialize it by running the following command:

          gcloud init

          If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.

        Per saperne di più, consulta la sezione Autenticarsi per l'utilizzo di REST nella documentazione sull'autenticazione di Google Cloud .

Requisiti

Prima di eseguirne la migrazione, devi assicurarti che la VM soddisfi i seguenti requisiti:

  • La VM deve essere arrestata. Per assicurarti che il sistema operativo guest nella VM possa arrestarsi correttamente prima del completamento della rispettiva operazione, puoi abilitare l'arresto normale nella VM.
  • La VM non deve far parte di un gruppo di istanze o di endpoint di rete (NEG). Si applicano le seguenti condizioni:
    • Se la VM fa parte di un gruppo di istanze non gestite o di un gruppo NEG, devi rimuoverla dal gruppo prima di eseguirne la migrazione.
    • Se la VM fa parte di un gruppo di istanze gestite (MIG), non puoi eseguirne la migrazione. Crea invece un nuovo gruppo di istanze gestite utilizzando un template di istanza con proprietà VM diverse.
    • Puoi spostare le istanze nei pool target senza doverle prima rimuovere. Il pool target si espande per coprire entrambe le reti.

Limitazioni

  • Non puoi eseguire la migrazione di un'interfaccia VM verso una rete legacy.
  • L'indirizzo MAC allocato all'interfaccia di rete cambia durante la migrazione. Ciò potrebbe influire sui servizi interconnessi ad alto accoppiamento con gli indirizzi MAC, come i contratti di licenza di terze parti.
  • Se esegui la migrazione della VM a una rete o una subnet con un intervallo IP diverso, l'indirizzo IP interno dell'istanza deve cambiare. Se esegui la migrazione a una subnet con lo stesso intervallo IP, puoi mantenere il vecchio indirizzo IP, a condizione che non sia già in uso nella destinazione, specificandolo durante la migrazione.
  • Se la subnet target non ha lo stesso intervallo IP della sorgente, l'indirizzo IP dell'interfaccia cambia in modo da corrispondere al nuovo intervallo di subnet.
  • Puoi mantenere l'indirizzo IP esterno esistente della VM nella nuova posizione. Per farlo, devi disporre dell'autorizzazione compute.subnetworks.useExternalIp sulla rete di destinazione, la quale non può avere indirizzi IP esterni disattivati dal vincolo constraints/compute.vmExternalIpAccess.

Migrazione di una VM

Prima di eseguire la migrazione di una VM, esamina i requisiti e le limitazioni.

Prima di eseguire la migrazione delle VM, Google consiglia di creare nella nuova rete regole firewall, route, bilanciatori del carico e altre risorse di infrastruttura di rete necessari. In questo modo, puoi ridurre il tempo in cui le VM sono offline.

Per eseguire la migrazione di una VM, seleziona una delle seguenti opzioni:

Console

  1. Nella Google Cloud console, vai alla pagina Istanze VM.

    Vai a Istanze VM

  2. Fai clic sul nome dell'istanza VM per aprire la pagina dei dettagli.

  3. Se la VM è in esecuzione, fai clic su Arresta per arrestarla. Se non è presente l'opzione Arresta, fai clic su Altre azioni > Arresta.

  4. Dopo l'arresto della VM, fai clic su Modifica .

  5. In Interfacce di rete, fai clic sull'interfaccia che vuoi spostare.

  6. Nel campo Rete dell'interfaccia, seleziona la nuova rete per l'interfaccia.

  7. Nel campo Subnet dell'interfaccia, seleziona la nuova subnet per l'interfaccia.

  8. Nel campo Indirizzo IP interno, specifica Automatico se vuoi che il sistema distribuisca un indirizzo IP dall'intervallo della subnet o Personalizzato se vuoi specificarne uno non utilizzato.

  9. Fai clic su Fine per chiudere il riquadro di modifica dell'interfaccia di rete.

  10. Fai clic su Salva.

  11. Al termine del salvataggio della VM, fai clic su Avvia .

  12. Se viene visualizzata una finestra di dialogo di conferma, fai clic su Avvia.

gcloud

  1. Arresta la VM

    gcloud compute instances stop INSTANCE_NAME \
        --zone=ZONE_NAME

    dove

    • INSTANCE_NAME è il nome dell'istanza VM.
    • ZONE_NAME è il nome della zona contenente l'istanza.
  2. Esegui la migrazione della VM

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

    dove

    • INSTANCE_NAME è il nome dell'istanza VM.
    • ZONE_NAME è il nome della zona contenente l'istanza.
    • NIC è il nome dell'interfaccia che stai aggiornando. In una VM con un'unica interfaccia, NIC corrisponde a nic0.
    • NETWORK_NAME è il nome della rete target. Se stai eseguendo la migrazione della VM da una rete di un progetto di servizio a una rete di un progetto host, devi utilizzare un nome completo per la rete di destinazione: projects/HOST_PROJECT_ID/global/networks/NETWORK_NAME
    • SUBNET_NAME è il nome della subnet target. Questa subnet deve trovarsi nella stessa regione della VM. Se esegui la migrazione della VM da una rete di un progetto di servizio alla rete di un progetto host, devi utilizzare un nome completo per la subnet: projects/HOST_PROJECT_ID/regions/REGION/subnetworks/SUBNET_NAME
  3. Avvia la VM

    La migrazione potrebbe richiedere alcuni minuti, quindi attendi prima di provare ad avviare la VM nella nuova posizione.

    gcloud compute instances start INSTANCE_NAME \
        --zone=ZONE_NAME

    dove

    • INSTANCE_NAME è il nome dell'istanza VM.
    • ZONE_NAME è il nome della zona contenente l'istanza.

REST

  1. Arresta la VM

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

    dove

    • PROJECT_ID è l'ID progetto.
    • INSTANCE_NAME è il nome dell'istanza VM.
    • ZONE_NAME è il nome della zona contenente l'istanza.
  2. Visualizza i dettagli dell'istanza.

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

    dove

    • PROJECT_ID è l'ID progetto.
    • ZONE_NAME è il nome della zona contenente l'istanza.
    • INSTANCE_NAME è il nome dell'istanza VM.
  3. Trova l'impronta dell'interfaccia.

    Per aggiornare l'interfaccia di rete, devi disporre di questa impronta.

    Esamina l'output del comando e trova i contenuti del campo networkInterfaces. Individua l'elemento con il nome dell'interfaccia da aggiornare (in una VM con un'unica interfaccia, il nome è nic0). Copia la stringa nel campo fingerprint di questo elemento per utilizzarla nel passaggio successivo.

  4. Esegui la migrazione della VM

    PATCH https://compute.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 è l'ID progetto.
    • ZONE_NAME è il nome della zona contenente l'istanza.
    • INSTANCE_NAME è il nome dell'istanza VM.
    • NIC è il nome dell'interfaccia che stai aggiornando. In una VM con un'unica interfaccia, NIC corrisponde a nic0.
    • NETWORK_NAME è il nome della rete target. Se stai eseguendo la migrazione della VM da una rete di un progetto di servizio a una rete di un progetto host, devi utilizzare un nome completo per la rete di destinazione: projects/HOST_PROJECT_ID/global/networks/NETWORK_NAME
    • SUBNET_NAME è il nome della subnet target. Questa subnet deve trovarsi nella stessa regione della VM. Se esegui la migrazione della VM da una rete di un progetto di servizio alla rete di un progetto host, devi utilizzare un nome completo per la subnet: projects/HOST_PROJECT_ID/regions/REGION/subnetworks/SUBNET_NAME
    • IP_ADDRESS è l'indirizzo IP interno che vuoi che l'istanza abbia nella nuova posizione. Se ometti questo campo, questo viene assegnato automaticamente all'interfaccia.
    • FINGERPRINT è l'impronta che hai ottenuto nel passaggio precedente.
  5. Avvia la VM

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

    dove

    • PROJECT_ID è l'ID progetto.
    • INSTANCE_NAME è il nome dell'istanza VM.
    • ZONE_NAME è il nome della zona contenente l'istanza.

Passaggi successivi