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.

Siempre que sea posible, debes mover una instancia de forma automática mediante la API de projects.moveInstance. En caso de que no sea posible usar la API, puedes mover la instancia de forma manual. Para ello, sigue estos pasos:

  1. Crea instantáneas de los discos persistentes conectados a la instancia original.
  2. Crea copias de los discos persistentes en la zona de destino.
  3. Para direcciones IP internas y externas, haz lo siguiente:
    • Si transfieres una instancia entre zonas dentro de la misma región y deseas conservar su dirección IP efímera, debes promover de forma temporal cualquier dirección IP efímera que se asigne a la instancia a una dirección IP estática y, luego, asignarla a la instancia nueva de VM que creaste en la zona de destino.
    • Si transfieres una instancia entre regiones, debes elegir una dirección IP diferente para la instancia de VM.
  4. Crea y, luego, inicia 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. Borra las instantáneas, los discos originales y la instancia original.

Antes de comenzar

Requisitos

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

  • Debe haber suficiente cuota en tu proyecto para las instantáneas nuevas y con el fin de ascender 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 la instancia que deseas trasladar tiene tres discos adjuntos, 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 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.

Ten en cuenta que, mientras la VM se transfiere, se cerrará y, después del traslado, se reiniciará. Luego 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 moveInstances no es una opción. En particular, estas son las situaciones en las que se requiere un traslado manual:

  • La VM se encuentra en estado TERMINATED.
  • Si quieres trasladar una 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 terminaciones de instancias manuales, lo que deberás hacer como parte del traslado de la 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 nueva zona que ofrezca las mismas GPU o elige GPU nuevas en la zona de destino.
  • La VM es una VM protegida que usa el firmware UEFI.

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 mantenga 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 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 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 automáticamente una instancia

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

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 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, mybootdisk 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

Esto es lo que debes hacer para trasladar la instancia a otra zona:

  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 a la instancia myinstance:

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

    gcloud compute instances set-disk-auto-delete myinstance --zone europe-west1-a \
        --disk mybootdisk --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.

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

    gcloud compute disks snapshot mybootdisk mydatadisk \
        --snapshot-names backup-mybootsnapshot,backup-mydatasnapshot \
        --zone europe-west1-a
    

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

  5. Si trasladas una instancia entre zonas dentro de la misma región y deseas conservar su dirección IP interna o externa efímera, debes promover la IP interna o externa a una dirección IP estática, que puedes volver a usar más tarde (opcional).

  6. Borra la instancia.

    Si borras la instancia, la cerrarás de manera correcta y desvincularás 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.

  7. A continuación, crea otra instantánea del disco de arranque y del disco de datos.

    gcloud compute disks snapshot mybootdisk mydatadisk \
        --snapshot-names mybootsnapshot,mydatasnapshot \
        --zone europe-west1-a
    
    Created [.../mydatasnapshot].
    Created [.../mybootsnapshot].
  8. 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 liberarlos. Si borras los discos, también ahorrarás en costos de almacenamiento en disco persistente.

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

    gcloud compute disks delete mybootdisk mydatadisk --zone europe-west1-a
    
  9. Crea discos persistentes nuevos en us-west1-b a partir de las instantáneas que creaste. Primero, crea el disco de arranque.

    gcloud compute disks create mybootdiskb --source-snapshot mybootsnapshot \
        --zone us-west1-b
    
    Created [.../mybootdiskb].
    NAME        ZONE           SIZE_GB TYPE        STATUS
    mybootdiskb 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
  10. 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 usarla para establecer los mismos metadatos en la instancia.

    • Si la instancia tenía una dirección IP externa estática, especifica la opción --address [ADDRESS] para reasignar esa dirección a la instancia nueva. Si trasladas una instancia entre regiones, debes elegir una dirección IP externa diferente para la instancia de VM nueva.

    • Si la instancia tenía una dirección IP interna estática, especifica la opción --private-network-ip ADDRESS para reasignar esa dirección a la instancia nueva. Si trasladas una instancia entre regiones, debes elegir una dirección IP interna diferente para la instancia de VM nueva.

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

    • Si la instancia usa una subred específica, agrega la marca --subnet [SUBNET_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=mybootdiskb,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
  11. 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 mybootsnapshot mydatasnapshot
    

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

    gcloud compute snapshots delete backup-mybootsnapshot backup-mydatasnapshot
    

Pasos siguientes