Traslada una instancia entre zonas

En esta página, se describe cómo trasladar una instancia de VM entre zonas, ya sea con la API de projects.moveInstance o de forma manual mediante una serie de pasos. Si una zona no está disponible o está obsoleta, puedes usar este método para trasladar tus instancias a otra zona.

Para trasladar una instancia, debes completar los pasos siguientes:

  1. Crear instantáneas de discos persistentes adjuntos a la instancia original
  2. Crear copias de los discos persistentes en la zona de destino
  3. Para las instancias que se mueven dentro de la misma región, debes promover de forma temporal cualquier dirección IP externa efímera que se asigne a la instancia a una dirección IP estática.
  4. Crear y, luego, iniciar una instancia nueva en la zona de destino. Si trasladas entre regiones, también debes elegir una subred nueva para la nueva instancia.
  5. Adjuntar los discos persistentes nuevos a la instancia nueva
  6. Asignar una dirección IP externa a la instancia nueva. Si es necesario, descender de nivel la dirección a una dirección IP externa efímera.
  7. Borrar las instantáneas, los discos originales y la instancia original

Siempre que sea posible, debes trasladar una instancia de forma automática mediante la API de projects.moveInstance. Si no puedes usar la API, puedes trasladar la instancia de forma manual.

Antes de comenzar

Requisitos

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

  • Debe haber suficiente cuota en tu proyecto para las instantáneas nuevas y el ascenso de cualquier dirección IP externa efímera.
  • En la región de destino, debe haber cuota suficiente para la instancia y los discos nuevos. Por ejemplo, si tienes tres discos adjuntos a la instancia que deseas trasladar, necesitas cuota suficiente para crear tres instantáneas de disco persistentes temporales y tres discos nuevos. Después de crear los discos nuevos, puedes borrar las instantáneas temporales.
  • Los discos persistentes adjuntos a la instancia que deseas trasladar no deben estar adjuntos a más de una instancia.
  • Si tu instancia incluye GPU, debes verificar que las GPU que desees usar estén disponibles en la zona de destino. Para ver una lista de las GPU y las zonas en las que están disponibles, consulta GPU en Compute Engine.

Después de trasladar la instancia, actualiza las referencias existentes al recurso original, como las instancias o los grupos de destino que apuntan a la instancia anterior.

Limitaciones

Cuando sea posible, usa la API de moveInstances para ahorrar algo de trabajo, pero hay algunos casos en los que usar la API de no es una opción. En particular, en las situaciones siguientes se requiere un traslado manual:

  • Cuando la VM está TERMINATED.
  • Cuando quieras trasladar tu instancia entre regiones, como entre us-west1-a y asia-south1-b, y la VM pertenece a una subred. Debes realizar el traslado de forma manual y seleccionar una subred nueva para la instancia.
  • Cuando la instancia tiene SSD locales adjuntos o GPU que no están disponibles en la zona de destino.
    • Los SSD locales se usan para el almacenamiento temporal, y los datos en ellos no se conservan a través de terminaciones de instancias manuales, lo que deberás hacer como parte del traslado de tu instancia. Si necesitas conservar datos SSD locales, debes replicarlos con una opción de almacenamiento duradero, como los discos persistentes.
    • Si las GPU que deseas no están disponibles en la zona de destino, elige una zona nueva que ofrezca las mismas GPU o elige GPU nuevas en la zona de destino.

Sin importar si realizas un traslado manual o automático, debes cumplir los requisitos para poder trasladar la instancia de manera correcta.

Propiedades del recurso

Durante el traslado, algunas propiedades generadas por el servidor de la instancia y discos cambiarán.

Propiedades que cambian para las instancias

Nombre de la propiedad Cambios
Dirección IP interna Por lo general, se asigna una nueva dirección IP interna, pero es posible que la instancia conserve la dirección IP interna original.
Dirección IP externa Si se traslada la instancia entre zonas en la misma región, la dirección IP externa permanece igual. De lo contrario, elige una dirección IP externa diferente para la instancia de VM.
Plataforma de CPU Según la plataforma de CPU disponible en la zona de destino, la instancia puede tener una plataforma de CPU diferente después de que se traslade. Para obtener una lista completa de las plataformas de CPU en cada zona, consulta esta página sobre regiones y zonas disponibles.
Red o subred Si la instancia pertenece a una subred y trasladas una instancia a través de regiones, debes elegir una subred nueva para la instancia. Las instancias que se trasladan a través de zonas en la misma región conservan la misma subred.

Propiedades que cambian para los discos

Nombre de la propiedad Cambios
Instantánea de origen La instantánea de origen del disco nuevo se establece en la instantánea temporal creada durante el traslado.
ID de instantánea de origen El ID de la instantánea de origen se establece en el ID de la instantánea temporal.
Imagen de origen El campo de la imagen de origen está vacío.
ID de imagen El ID de la imagen está vacío.
Última marca de tiempo desvinculada La última marca de tiempo desvinculada está vacía.
Última marca de tiempo adjunta La última marca de tiempo adjunta cambia a la marca de tiempo cuando el disco nuevo se adjunta a la instancia nueva.

Propiedades que cambian para las instancias y los discos

Nombre de la propiedad Cambios
ID Se genera un ID de recurso nuevo.
Marca de tiempo de creación Se genera una marca de tiempo de creación nueva.
URL de recursos de zona Todas las URL de recursos de zona cambian para indicar la zona de destino. En la siguiente lista, se muestran las URL de recursos que cambian:
  • La URL del disco de origen de una instancia
  • La URL del tipo de máquina de una instancia
  • La URL del vínculo propio
  • La URL de zona
  • La URL del tipo de disco
  • Cualquier URL de las instancias enumeradas en la lista users[] de un disco

Traslada una instancia de manera automática

Antes de trasladar una instancia, asegúrate de revisar los requisitos y las limitaciones.

gcloud

Asegúrate de que la instancia esté en ejecución. Luego, usa la herramienta de gcloud para ejecutar el subcomando compute instances move y trasladar la instancia.

Por ejemplo, para trasladar una instancia llamada example-instance-1 con todos sus discos persistentes adjuntos de us-central1-b, donde se encuentra en ejecución, a us-central1-f, su nueva región, ejecuta el siguiente comando:

gcloud compute instances move example-instance-1 \
    --zone us-central1-b --destination-zone us-central1-f

Esta operación puede tardar varios minutos en completarse.

API

En la API, realiza una solicitud POST a la API de moveInstance con un cuerpo de solicitud que contenga targetInstance y destinationZone. Por ejemplo:

{
   "targetInstance": "zones/us-central1-b/instances/example-instance-1",
   "destinationZone": "zones/us-central1-f"
}

Traslada una instancia de forma manual

Siempre que sea posible, traslada una instancia de manera automática con la API de moveInstance, que controla todos los pasos para trasladarla. Sin embargo, si no puedes usar la API, realiza el traslado de forma manual.

En el siguiente ejemplo, se describe cómo trasladar una instancia myinstance con dos discos persistentes, myrootdisk y mydatadisk, de europe-west1-a a us-west1-b. La instancia de ejemplo se ve de la manera siguiente:

gcloud compute instances list
NAME       ZONE           MACHINE_TYPE  INTERNAL_IP    EXTERNAL_IP     STATUS
myinstance europe-west1-a n1-standard-4 10.240.116.177 146.148.112.106 RUNNING

Para trasladar la instancia a otra zona, sigue estos pasos:

  1. Identifica los discos asociados a la instancia que deseas trasladar.

    Ir a la página Discos

    En este ejemplo, encontrarás los siguientes 2 discos asociados para la instancia myinstance:

    • Un disco de arranque llamado myrootdisk
    • Un disco de datos llamado mydatadisk
  2. Configura el estado de eliminación automática de myrootdisk y mydatadisk como false para asegurarte de que los discos no se borren de forma automática cuando se borre la instancia.

    gcloud compute instances set-disk-auto-delete myinstance --zone europe-west1-a \
        --disk myrootdisk --no-auto-delete
    

    Si se actualizó el estado, gcloud compute muestra la respuesta Updated [...]. Si el estado de eliminación automática ya se configuró como falso, gcloud compute muestra lo siguiente:

    No change requested; skipping update for [myinstance].
  3. Guardar los metadatos de la instancia (opcional).

    Cuando borras la instancia, los metadatos de la instancia también se quitan. Puedes guardar esa información en un archivo distinto y, luego, aplicar los metadatos de la instancia a la instancia nueva.

    Describe los metadatos de la instancia de la manera siguiente:

    gcloud compute instances describe myinstance --zone europe-west1-a
    

    Guarda el contenido en un archivo separado.

  4. Crea copias de seguridad de los datos.

    Como medida preventiva, crea copias de seguridad de los datos mientras los discos persistentes todavía están adjuntos a la instancia mediante el uso de instantáneas de disco persistentes. Antes de tomar una instantánea, borra los búferes de disco para asegurarte de que la instantánea sea coherente con el estado del disco persistente.

    Una vez que borraste los búferes del disco, crea las instantáneas de la manera siguiente:

    gcloud compute disks snapshot myrootdisk mydatadisk \
        --snapshot-names backup-myrootsnapshot,backup-mydatasnapshot \
        --zone europe-west1-a
    

    Para verificar que se creó la instantánea, ejecuta gcloud compute snapshots list.

  5. Borra tu instancia.

    Si borras la instancia, se cerrará de manera correcta y se desvincularán los discos persistentes.

    gcloud compute instances delete myinstance --zone europe-west1-a
    

    gcloud solicita que confirmes la eliminación:

     The following instances will be deleted. Any attached disks configured to
     be auto-deleted will be deleted unless they are attached to any other
     instances or the --keep-disks flag is given and specifies them for keeping.
     Deleting a disk is irreversible and any data on the disk will be lost.
      — [myinstance] in [europe-west1-a]
     

    Do you want to continue (Y/n)?

    Debido a que desactivaste el estado de eliminación automática de los discos antes en este proceso, ingresa Y para continuar y no prestes atención a la advertencia.

  6. A continuación, crea otra instantánea del disco raíz y del disco de datos.

    gcloud compute disks snapshot myrootdisk mydatadisk \
        --snapshot-names myrootsnapshot,mydatasnapshot \
        --zone europe-west1-a
    
    Created [.../mydatasnapshot].
    Created [.../myrootsnapshot].
  7. Como alternativa, puedes borrar los discos persistentes.

    Si planeas volver a usar los nombres de los discos persistentes para los discos nuevos, debes borrar los discos existentes a fin de liberarlos. Si borras los discos, también ahorrarás en costos de almacenamiento en disco persistente.

    Si no planeas volver a usar los mismos nombres de disco, puedes borrarlos.

    gcloud compute disks delete myrootdisk mydatadisk --zone europe-west1-a
    
  8. Crea nuevos discos persistentes en us-west1-b a partir de las instantáneas que acabas de crear. Primero, crea el disco raíz.

    gcloud compute disks create myrootdiskb --source-snapshot myrootsnapshot \
        --zone us-west1-b
    
    Created [.../myrootdiskb].
    NAME        ZONE           SIZE_GB TYPE        STATUS
    myrootdiskb us-west1-b     100     pd-standard READY

    Luego, crea el disco de datos.

    gcloud compute disks create mydatadiskb --source-snapshot mydatasnapshot \
        --zone us-west1-b
    
    Created [.../mydatadiskb].
    NAME        ZONE           SIZE_GB TYPE        STATUS
    mydatadiskb us-west1-b 4000    pd-standard READY
  9. Vuelve a crear tu instancia en us-west1-b.

    • Si optaste por guardar los metadatos de la instancia en un archivo, por ejemplo myinstance.describe, puedes usarlo para establecer los mismos metadatos en la instancia.

    • Si la instancia tenía una dirección IP externa reservada, especifica la opción --address ADDRESS para reasignar esa dirección a la instancia nueva.

    • Si la instancia incluía GPU, agrégalas a la instancia con la opción --accelerator.

    • Si la instancia usa una subred específica, agrega la marca --subnet [SUBNET_NAME] antes de la marca --zone [ZONE_NAME].

    Para obtener una lista completa de las marcas adicionales, consulta la página sobre gcloud compute instances create.

    gcloud compute instances create myinstanceb --machine-type n1-standard-4 \
        --zone us-west1-b \
        --disk name=myrootdiskb,boot=yes,mode=rw \
        --disk name=mydatadiskb,mode=rw
    
    Created [.../myinstanceb].
    NAME        ZONE           MACHINE_TYPE  INTERNAL_IP    EXTERNAL_IP     STATUS
    myinstanceb us-west1-b     n1-standard-4 10.240.173.229 146.148.112.106 RUNNING
  10. Como alternativa, puedes borrar las instantáneas de discos persistentes.

    Después de confirmar que las máquinas virtuales se trasladaron, borra las instantáneas temporales que creaste para ahorrar en costos de almacenamiento.

    gcloud compute snapshots delete myrootsnapshot mydatasnapshot
    

    Si ya no necesitas las instantáneas de copia de seguridad, bórralas también:

    gcloud compute snapshots delete backup-myrootsnapshot backup-mydatasnapshot
    

Qué sigue

¿Te ha resultado útil esta página? Enviar comentarios:

Enviar comentarios sobre...

Documentación de Compute Engine