Migrar una máquina virtual entre redes


En esta página se describe cómo migrar una instancia de máquina virtual de una red a otra. En el caso de una VM 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 antigua 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 un proyecto de servicio a la red compartida de un proyecto host de una VPC compartida

En todos los casos, la VM permanece en la región y la zona en las que estaba antes. Solo se modificará la red adjunta.

Antes de empezar

  • Lee la documentación de nube privada virtual.
  • Si aún no lo has hecho, configura la autenticación. La autenticación verifica tu identidad para acceder a Google Cloud servicios y APIs. Para ejecutar código o ejemplos desde un entorno de desarrollo local, puedes autenticarte en Compute Engine seleccionando una de las siguientes opciones:

    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. Instala Google Cloud CLI. Después de la instalación, inicializa la CLI de Google Cloud ejecutando el siguiente comando:

      gcloud init

      Si utilizas un proveedor de identidades (IdP) externo, primero debes iniciar sesión en la CLI de gcloud con tu identidad federada.

    2. Set a default region and zone.

    REST

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

      Instala Google Cloud CLI. Después de la instalación, inicializa la CLI de Google Cloud ejecutando el siguiente comando:

      gcloud init

      Si utilizas un proveedor de identidades (IdP) externo, primero debes iniciar sesión en la CLI de gcloud con tu identidad federada.

    Para obtener más información, consulta el artículo Autenticarse para usar REST de la documentación sobre autenticación de Google Cloud .

Requisitos

Antes de migrar una máquina virtual, debe cumplir los siguientes requisitos:

  • La VM solo usa direcciones IPv4.
  • La VM debe estar detenida. Para asegurarte de que el SO invitado de la VM se pueda apagar correctamente antes de que se complete la operación de detención, puedes habilitar el apagado correcto en la VM.
  • La VM no debe formar parte de un grupo de instancias ni de un grupo de puntos finales de red (NEG). Se aplican las siguientes condiciones:
    • Si la VM forma parte de un grupo de instancias no gestionado o de un NEG, debes eliminarla del grupo antes de migrarla.
    • Si la VM forma parte de un grupo de instancias gestionado (MIG), no se puede migrar. En su lugar, crea un MIG con una plantilla de instancia que tenga propiedades de VM diferentes.
    • Puedes mover instancias en grupos de destino sin eliminarlas primero. El grupo de destino se amplía para cubrir ambas redes.

Limitaciones

  • No puedes migrar una interfaz de VM a una red antigua.
  • La dirección MAC asignada a la interfaz de red cambiará durante la migración. Esto podría afectar a los servicios estrechamente vinculados a las direcciones MAC, como los contratos de licencia de terceros.
  • Si vas a migrar la VM a una red o subred con un intervalo de IP diferente, la dirección IP interna de tu instancia debe cambiar. Si vas a migrar a una subred con el mismo intervalo de IPs, puedes conservar la dirección IP antigua, siempre que no esté en uso en el destino, especificándola durante la migración.
  • Si la subred de destino no tiene el mismo intervalo de IP que la de origen, la dirección IP de la interfaz cambia para coincidir con el nuevo intervalo de subred.
  • Puedes mantener la dirección IP externa de la VM en la nueva ubicación. Para ello, debes tener el permiso compute.subnetworks.useExternalIp en la red de destino, y esta no puede tener direcciones IP externas inhabilitadas por la restricción constraints/compute.vmExternalIpAccess.

Migrar una máquina virtual

Antes de migrar una máquina virtual, consulta los requisitos y las limitaciones.

Google recomienda que crees las reglas de cortafuegos, las rutas, los balanceadores de carga y otros recursos de infraestructura de red necesarios en la nueva red antes de migrar tus VMs. De esta forma, se puede reducir el tiempo que tus VMs están sin conexión.

Para migrar una VM, selecciona una de las siguientes opciones:

Consola

  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. Si la VM está en ejecución, haz clic en Detener para detenerla. Si no aparece la opción Detener, haz clic en Más acciones > Detener.

  4. Cuando la VM se detenga, haz clic en Editar .

  5. En Interfaces de red, haz clic en la interfaz que quieras mover.

  6. En el campo Red de la interfaz, selecciona la nueva red de la interfaz.

  7. En el campo Subred de la interfaz, selecciona la nueva subred de la interfaz.

  8. En el campo Dirección IP interna, especifica Automática si quieres que el sistema asigne una dirección IP del intervalo de la subred o Personalizada si quieres especificar una que no se haya usado.

  9. Haz clic en Hecho para cerrar el panel de edición de la interfaz de red.

  10. Haz clic en Guardar.

  11. Cuando la máquina virtual termine de guardarse, haz clic en Iniciar .

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

gcloud

  1. Detener 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. Migrar 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 vas a actualizar. En una máquina virtual de una sola interfaz, la NIC es nic0.
    • NETWORK_NAME es el nombre de la red de destino. Si vas a migrar la VM de una red de un proyecto de servicio a la red del proyecto host, debes usar un nombre 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 vas a migrar la VM de una red de un proyecto de servicio a una red de un proyecto host, debes usar un nombre completo para la subred: projects/HOST_PROJECT_ID/regions/REGION/subnetworks/SUBNET_NAME
  3. Iniciar la VM

    La migración puede tardar unos minutos, así que espera antes de intentar 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. Detener 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. Consulta los detalles de la instancia.

    GET https://compute.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 de 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 quieras actualizar (en una máquina virtual de una sola interfaz, el nombre es nic0). Copia la cadena del campo fingerprint de este elemento para usarla en el siguiente paso.

  4. Migrar la 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 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 vas a actualizar. En una máquina virtual de una sola interfaz, la NIC es nic0.
    • NETWORK_NAME es el nombre de la red de destino. Si vas a migrar la VM de una red de un proyecto de servicio a la red del proyecto host, debes usar un nombre 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 vas a migrar la VM de una red de un proyecto de servicio a una red de un proyecto host, debes usar un nombre completo para la subred: projects/HOST_PROJECT_ID/regions/REGION/subnetworks/SUBNET_NAME
    • IP_ADDRESS es la dirección IP interna que quieres que tenga la instancia en la nueva ubicación. Si omite este campo, se asignará una interfaz automáticamente.
    • FINGERPRINT es la huella digital que has obtenido en el paso anterior.
  5. Iniciar 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.

Siguientes pasos