Migra una VM entre redes


En esta página, se describe cómo migrar una instancia de VM de una red a otra. En el caso de una VM que esté conectada a más de una red mediante varias interfaces de red, este proceso actualiza una de las interfaces y deja el resto en su lugar.

Se admiten las siguientes migraciones:

  • De una red heredada a una red de VPC en el mismo proyecto
  • De una red de VPC a otra red de VPC en el mismo proyecto
  • De una subred de una red de VPC a otra subred de la misma red
  • De una red de proyectos de servicio a la red compartida de un proyecto host de VPC compartida

En todos los casos, la VM permanece en la región y la zona donde antes estaba. Solo cambia la red conectada.

Antes de comenzar

  • Lee la documentación sobre la nube privada virtual.
  • Si aún no lo hiciste, configura la autenticación. La autenticación es el proceso mediante el cual se verifica tu identidad para acceder a los servicios y las API de Google Cloud. Para ejecutar código o muestras desde un entorno de desarrollo local, puedes autenticarte en Compute Engine de la siguiente manera.

    Selecciona la pestaña para saber cómo planeas usar las muestras en esta página:

    Consola

    Cuando usas la consola de Google Cloud para acceder a los servicios y las APIs de Google Cloud, no necesitas configurar la autenticación.

    gcloud

    1. Instala Google Cloud CLI y, luego, inicializa la ejecución del siguiente comando:

      gcloud init
    2. Configura una región y una zona predeterminadas.

    REST

    Para usar las muestras de la API de REST en esta página en un entorno de desarrollo local, debes usar las credenciales que proporcionas a la CLI de gcloud.

      Instala Google Cloud CLI y, luego, inicializa la ejecución del siguiente comando:

      gcloud init

Requisitos

Antes de trasladar la VM, debes cumplir con los siguientes requisitos:

  • La migración es una migración “en frío”. La VM debe detenerse antes de migrarse.
  • La VM no debe estar en un grupo de instancias ni en un grupo de extremos de red (NEG).
    • Si la VM está en un grupo de instancias no administrado o en un NEG, debes quitarla del grupo antes de migrarla.
    • No se pueden migrar VM de grupos de instancias administrados. En su lugar, debes copiar tu plantilla de instancias a la nueva red y usarla para volver a compilar el grupo de instancias administrado.
    • Puedes mover instancias en grupos de destino sin quitarlas primero. El grupo de destino se expande para abarcar ambas redes.

Limitaciones

  • No puedes migrar una interfaz de VM a una red heredada.
  • La dirección MAC asignada a la interfaz de red cambiará durante la migración. Esto puede afectar los servicios que se asocian estrechamente con direcciones MAC, como el contrato de licencia de terceros.
  • Si vas a migrar la VM a una red o subred con un rango de IP diferente, debes cambiar la dirección IP interna de tu instancia. Si migras a una subred con el mismo rango de IP, puedes conservar la dirección IP anterior si la especificas durante la migración, siempre y cuando no esté en uso en el destino.
  • Si la subred de destino no tiene el mismo rango de IP que la fuente, la dirección IP de la interfaz cambia para que coincida con el nuevo rango de subred.
  • Puedes conservar la dirección IP externa existente de la VM en la ubicación nueva. Para ello, debes tener el permiso compute.subnetworks.useExternalIp en la red de destino y esta última no puede tener direcciones IP externas inhabilitadas mediante la restricción constraints/compute.vmExternalIpAccess..

Migrar una VM

Antes de migrar una VM, revisa los requisitos y las limitaciones.

Google recomienda que crees las reglas de firewall, las rutas, los balanceadores de cargas y otros recursos de infraestructura de red necesarios en la red nueva antes de migrar tus VM. Esto puede acortar el tiempo en que las VM están sin conexión.

Console

  1. En la consola de Google Cloud, ve a la página Instancias de VM.

    Ir a Instancias de VM

  2. Haz clic en el nombre de la instancia de VM para abrir la página de detalles.

  3. Haz clic en Detener .

  4. Si aparece un diálogo de confirmación, haz clic en Detener.

  5. Después de que la VM se detenga, haz clic en Editar .

  6. En Interfaces de red, haz clic en la interfaz que deseas mover.

  7. En el campo Red de la interfaz, elige la red nueva para la interfaz.

  8. En el campo Subred de la interfaz, elige la subred nueva para la interfaz.

  9. En el campo Dirección IP interna, especifica Automática, si quieres que el sistema asigne una dirección IP del rango de subred, o Personalizada, si quieres especificar una que no esté en uso.

  10. Haz clic en Listo para cerrar el panel de edición de la interfaz de red.

  11. Haga clic en Guardar.

  12. Cuando la VM termine de guardarse, haz clic en Iniciar .

  13. Si aparece un diálogo de confirmación, haz clic en Iniciar.

gcloud

  1. Detén la VM

    gcloud compute instances stop INSTANCE_NAME \
        --zone=ZONE_NAME

    donde

    • INSTANCE_NAME es el nombre de la instancia de VM.
    • ZONE_NAME es el nombre de la zona que contiene la instancia.
  2. Migra la VM

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

    donde

    • INSTANCE_NAME es el nombre de la instancia de VM.
    • ZONE_NAME es el nombre de la zona que contiene la instancia.
    • NIC es el nombre de la interfaz que estás actualizando. En una VM de una sola interfaz, el NIC es nic0.
    • NETWORK_NAME es el nombre de la red de destino. Si migras la VM de una red de proyecto de servicio a la red de un proyecto host, debes usar un nombre calificado completo para la red de destino: projects/HOST_PROJECT_ID/global/networks/NETWORK_NAME
    • SUBNET_NAME es el nombre de la subred de destino. Esta subred debe estar en la misma región que la VM. Si migras la VM de una red de proyecto de servicio a la red del proyecto host, debes usar un nombre calificado completo para la subred: projects/HOST_PROJECT_ID/regions/REGION/subnetworks/SUBNET_NAME
  3. Inicia la VM

    La migración puede tardar unos minutos, así que espera antes de iniciar la VM en la nueva ubicación.

    gcloud compute instances start INSTANCE_NAME \
        --zone=ZONE_NAME

    donde

    • INSTANCE_NAME es el nombre de la instancia de VM.
    • ZONE_NAME es el nombre de la zona que contiene la instancia.

REST

  1. Detén la VM

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

    donde

    • PROJECT_ID es el ID del proyecto.
    • INSTANCE_NAME es el nombre de la instancia de VM.
    • ZONE_NAME es el nombre de la zona que contiene la instancia.
  2. Visualiza los detalles de la instancia.

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

    donde

    • PROJECT_ID es el ID del proyecto.
    • ZONE_NAME es el nombre de la zona que contiene la instancia.
    • INSTANCE_NAME es el nombre de la instancia de VM.
  3. Busca la huella digital para la interfaz.

    Necesitas la huella digital para actualizar la interfaz de red.

    Examina el resultado del comando y busca el contenido del campo networkInterfaces. Busca el elemento con el nombre de la interfaz que deseas actualizar (en una VM de una sola interfaz, el nombre es nic0). Copia la string en el campo fingerprint de este elemento para usarlo en el siguiente paso.

  4. Migra 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 es el ID del proyecto.
    • ZONE_NAME es el nombre de la zona que contiene la instancia.
    • INSTANCE_NAME es el nombre de la instancia de VM.
    • NIC es el nombre de la interfaz que estás actualizando. En una VM de una sola interfaz, el NIC es nic0.
    • NETWORK_NAME es el nombre de la red de destino. Si migras la VM de una red de proyecto de servicio a la red de un proyecto host, debes usar un nombre calificado completo para la red de destino: projects/HOST_PROJECT_ID/global/networks/NETWORK_NAME
    • SUBNET_NAME es el nombre de la subred de destino. Esta subred debe estar en la misma región que la VM. Si migras la VM de una red de proyecto de servicio a la red del proyecto host, debes usar un nombre calificado completo para la subred: projects/HOST_PROJECT_ID/regions/REGION/subnetworks/SUBNET_NAME
    • IP_ADDRESS es la dirección IP interna que debe tener la instancia en la nueva ubicación. Si omites este campo, se asignará una opción a la interfaz de forma automática.
    • FINGERPRINT es la huella digital que obtuviste en el paso anterior.
  5. Inicia la VM

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

    donde

    • PROJECT_ID es el ID del proyecto.
    • INSTANCE_NAME es el nombre de la instancia de VM.
    • ZONE_NAME es el nombre de la zona que contiene la instancia.

¿Qué sigue?