Traslada una instancia entre zonas

En esta página, se describe cómo trasladar una instancia de VM entre zonas, 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 las 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. Crea copias de los discos persistentes en la zona de destino.
  3. Para las instancias que se trasladan 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. Crea y, luego, inicia una instancia nueva en la zona de destino. Si trasladas entre regiones, también debes elegir una subred para la instancia nueva.
  5. Conecta los discos persistentes nuevos a la instancia nueva.
  6. Asigna una dirección IP externa a la instancia nueva. Si es necesario, desciende de nivel la dirección a una IP externa efímera.
  7. Borra 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, traslada la instancia de forma manual.

Antes de comenzar

Requisitos

Para trasladar la instancia, debes cumplir con los siguientes requisitos:

  • Debe haber suficiente cuota en el proyecto para las instantáneas nuevas y para promover las direcciones IP externas efímeras.
  • En la región de destino, debe haber suficiente cuota para la instancia y los discos nuevos. Por ejemplo, si tienes tres discos conectados a la instancia que deseas trasladar, necesitas cuota suficiente para crear tres instantáneas de discos persistentes temporales y tres discos nuevos. Después de crear los discos nuevos, puedes borrar las instantáneas temporales.
  • Los discos persistentes conectados a la instancia que deseas trasladar no deben estar conectados a más de una instancia.
  • Si la 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 se orientan a la instancia anterior.

Limitaciones

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

  • Cuando la VM se encuentra en estado TERMINATED.
  • Cuando deseas trasladar la 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 conectados 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 finalizaciones de instancias manuales, lo que deberás hacer como parte del traslado de la instancia. Si necesitas conservar datos de 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.

Ya sea que realices un traslado manual o automático, debes cumplir los requisitos para poder trasladar la instancia de manera correcta.

Propiedades del recurso

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

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 las Regiones y zonas disponibles.
Red o subred Si la instancia pertenece a una subred y la trasladas entre regiones, debes elegir una subred nueva para la instancia. Las instancias que se trasladan entre zonas de 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 la 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 separada La última marca de tiempo separada está vacía.
Última marca de tiempo adjunta La última marca de tiempo adjunta cambia a la marca de tiempo de cuando el disco nuevo se conectó 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
  • Las URL de las instancias enumeradas en la lista users[] de un disco

Traslada una instancia de forma 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 conectados 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 tomar varios minutos en completarse.

API

En la API, realiza una solicitud POST a la API de moveInstance y, en el cuerpo, incluye targetInstance y destinationZone. Por ejemplo:

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

Traslada manualmente una instancia

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 siguiente manera:

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 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. Guarda los metadatos de la instancia (opcional).

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

    Describe los metadatos de la instancia de la siguiente manera:

    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 aún están conectados a la instancia mediante instantáneas de discos persistentes. Antes de tomar una instantánea, borra los búferes del disco para asegurarte de que la instantánea sea coherente con el estado del disco persistente.

    Después de borrar los búferes del disco, crea las instantáneas con el siguiente comando:

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

    Ejecuta gcloud compute snapshots list para verificar que se creó la instantánea.

  5. Borra la instancia.

    Si borras la instancia, se cerrará de manera correcta y se desconectará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 ignorar la advertencia y continuar.

  6. Luego, 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. Borra los discos persistentes (opcional).

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

    Si no planeas reutilizar los mismos nombres de disco, no es necesario que los borres.

    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 creaste. 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 la 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. Borra las instantáneas de discos persistentes (opcional).

    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 con el siguiente comando:

    gcloud compute snapshots delete backup-myrootsnapshot backup-mydatasnapshot
        

Próximos pasos