Migra una carga de trabajo existente a un grupo de instancias administrado con estado


Si ya tienes una aplicación con estado existente en instancias de máquina virtual (VM) de Compute Engine independiente (no administrada), puedes migrar esa aplicación a un Grupo de instancias administrado (MIG) con estado.

Si configuras un MIG con estado y usas instancias administradas, puedes obtener los siguientes beneficios:

  • Estado preservado: Preservación de los nombres de las instancias, los discos y los metadatos, incluso si una instancia se vuelve a crear
  • Reparación automática: Recreación automática de VM con cargas de trabajo con errores dentro de la misma zona
  • Actualizaciones automatizadas: Implementaciones ordenadas de nuevas configuraciones de instancias o versiones de software para VM en un MIG.

Limitaciones

  • Debes detener las VM existentes a fin de migrar los discos existentes o, como alternativa, tomar instantáneas coherentes para que las usen las instancias administradas nuevas.
  • Debes borrar las VM existentes si quieres volver a usar sus nombres.
  • La aplicación debe poder ejecutarse en VM con el mismo tipo de máquina. Si tu aplicación existente requiere varias instancias de diferentes tipos de máquinas, crea varias plantillas de instancias y MIG, una por tipo de máquina.
  • La aplicación se debe iniciar cuando se inicie la VM. Puedes usar una imagen personalizada o una secuencia de comandos de inicio. Cada opción se analiza a continuación.
  • No puedes actualizar el sistema operativo ni el software mediante el lanzamiento de actualizaciones de imágenes de arranque en un MIG si eliges crear discos de arranque con estado.
  • Para lograr una alta disponibilidad de varias zonas, solo debes crear réplicas redundantes en varias zonas y configurar la replicación de datos a nivel de la aplicación. El MIG con estado repara automáticamente las instancias solo dentro de la misma zona y no organiza la conmutación por error entre zonas.
  • No puedes usar el ajuste de escala automático con un MIG con estado.
  • Revisa las limitaciones de MIG con estado.

Costos

En este instructivo, se usan componentes facturables de Google Cloud, incluidos los siguientes:

  • Compute Engine

Usa la calculadora de precios para generar una estimación de los costos según el uso previsto.

Antes de comenzar

En esta guía, se usa la CLI de gcloud. Puedes acceder a ella mediante Cloud Shell. O bien, si deseas ejecutar la CLI de gcloud en tu computadora local, descarga e instala la versión más reciente de la CLI de gcloud.

Descripción general de la migración

  1. Comprende los componentes que conforman un MIG con estado.
  2. Revisa la configuración existente para determinar las especificaciones comunes de las VM.
  3. De forma opcional, crea una imagen personalizada que funcione como una imagen de disco de arranque común.
  4. Crea una plantilla de instancias a fin de especificar la configuración de VM común para el MIG.
  5. Crea un MIG vacío.
  6. Convertir tus VM existentes en instancias administradas en el MIG, incluidas las configuraciones por instancia.
  7. Configura la reparación automática para el MIG a fin de mejorar la resiliencia de la aplicación.
  8. De manera opcional, para reducir la sobrecarga de configuración, reemplaza las configuraciones por instancia por una política con estado.

Componentes

Configura las instancias administradas de tu MIG con estado a través de varios componentes:

  • Una plantilla de instancias contiene una configuración común para las VM en el MIG, como el tipo de máquina, la imagen de disco de arranque, las especificaciones opcionales para los discos adicionales y una secuencia de comandos de inicio.
  • Una imagen personalizada opcional contiene tu aplicación y sirve como una imagen de disco de arranque común.
  • Una configuración por instancia contiene elementos con estado específicos de la instancia. Por ejemplo, puedes conectar un disco existente a una instancia específica del grupo. Este disco se puede desconectar de una instancia independiente existente, recuperada a partir de una instantánea o de un disco regional. No es necesario definir el nombre del dispositivo del disco en la plantilla de instancias.
  • Una política con estado opcional contiene elementos con estado comunes. Por ejemplo, define todos los discos con un nombre de dispositivo específico (como se define en la plantilla de instancias) como con estado para todas las instancias en el grupo.

¿Qué componentes necesitas usar?

Los componentes que debes usar dependen de la configuración existente. En la siguiente tabla, se proporciona un resumen de alto nivel de algunas opciones de configuración posibles para una aplicación que se ejecuta en una o varias instancias. Más adelante en este instructivo, deberás revisar la configuración existente para determinar cuál de estas opciones debes usar.

¿Tienes algún dato con estado o configuración en tus discos de arranque que debas mantener? ¿Cómo se inicia la aplicación?
La aplicación se configura en un disco de arranque existente. La aplicación se configura con una secuencia de comandos de inicio.
No: los discos de arranque son sin estado
  1. Usa una plantilla de instancias con una imagen personalizada.
  2. Agrega opciones de configuración por instancia (o una política con estado) para los discos de datos con estado.
  1. Usa una plantilla de instancias con una secuencia de comandos de inicio.
  2. Agrega opciones de configuración por instancia (o una política con estado) para los discos de datos con estado.
Sí: al menos un disco de arranque tiene estado
  1. Usa una plantilla de instancias con una imagen personalizada.
  2. Agregar la configuración por instancia (o una política con estado) para el inicio con estado y los discos de datos
  1. Usa una plantilla de instancias con una secuencia de comandos de inicio.
  2. Agregar la configuración por instancia (o una política con estado) para el inicio con estado y los discos de datos

Revisa tu configuración actual

Revisa tus instancias independientes existentes para inspeccionar el tipo de máquina de cada instancia, los discos y los metadatos.

Usa el comando instances describe para cada una de las instancias.

gcloud compute instances describe INSTANCE_NAME

Responde las siguientes preguntas a fin de prepararte para los pasos posteriores de esta guía.

Preguntas Implicaciones
Propiedades de VM
¿Cuál es el tipo de máquina que deseas usar para tu grupo? Especifica este tipo de máquina en la plantilla de instancias de tu MIG.
¿Cómo se inicia la aplicación? ¿Está preconfigurada en un disco de arranque o se instala, configura y lanza mediante una secuencia de comandos de inicio? Si tu aplicación está preconfigurada en un disco de arranque, crea una imagen personalizada y especifica esa imagen en la plantilla de instancias de tu MIG.

Si tu aplicación se inicia mediante una secuencia de comandos de inicio, especifica esa secuencia de comandos de inicio en la plantilla de instancias de tu MIG.

Si tu aplicación requiere una imagen de disco de arranque personalizada y una secuencia de comandos de inicio, especifica ambas en la plantilla de instancias.
¿Quieres conservar los nombres de instancias existentes? Debes borrar las instancias independientes existentes para liberar los nombres de las instancias.

Si los discos de arranque permanecen sin estado y si alguna vez deseas usar actualizaciones progresivas automatizadas en el MIG, revisa la documentación para Preservar nombres de instancias.
Elementos con estado
Para cada instancia, ¿necesitas conservar algún metadato específico de la instancia? Especifica los metadatos específicos de la instancia mediante configuraciones por instancia.
¿Tus discos de arranque tienen estado? En otras palabras, ¿existe algún dato activo en cualquier disco de arranque del que debas conservar el estado? Si necesitas preservar el estado de los discos de arranque, no puedes actualizar el sistema operativo ni el software mediante el lanzamiento de actualizaciones de la imagen del disco de arranque.
¿Todas las instancias tienen los mismos tipos de discos? Por ejemplo, ¿todas tienen un disco de datos? ¿O tienen y requieren configuraciones de disco únicas? Si todas las instancias tienen una configuración de disco común, define esos nombres de dispositivos comunes en la plantilla de instancias, por ejemplo, “data-disk”. Esto te permite usar una política con estado para declarar esos discos como con estado en todo tu MIG, con menos sobrecarga que las configuraciones por instancia.
Si pudieras expandir el grupo, ¿el tamaño de los discos actuales es suficiente? Especifica los tamaños de disco que necesitas en la plantilla de instancias. Las instancias nuevas obtendrán los discos que especifiques, siempre que estos no se vuelvan a definir en una política con estado o en configuraciones por instancia.

En esta guía, se comienza por crear configuraciones por instancia para discos con estado existentes. Pero puedes convertir esas configuraciones en una política con estado más adelante, siempre que los discos tengan nombres de dispositivos comunes que declares en la plantilla de instancias del grupo.

Configuración de ejemplo

En esta guía, se usa el siguiente ejemplo básico para ilustrar los pasos de la migración. Supongamos que tienes una aplicación con estado que se ejecuta en tres VM independientes de Compute Engine. Supongamos que las VM tienen las siguientes especificaciones:

  • Cada VM tiene el mismo tipo de máquina.
  • Cada VM existe en el mismo proyecto y zona.
  • Cada disco de arranque de VM tiene la misma aplicación, que se configura en el disco de arranque para iniciarse cuando se inicia la VM.
  • El disco de arranque de cada VM no contiene ningún otro dato o configuración que debas conservar.
  • Cada VM tiene un disco persistente secundario con datos con estado, es decir, datos para los que debes mantener el estado actual.

Edita los siguientes valores para usarlos en este instructivo.

- Machine type: n2-standard-2
- Project: my-project
- Zone: europe-west1-c
- Name of one of the VMs to migrate: my-instance-1

Crea una imagen personalizada

Si tu aplicación o algún otro requisito ya está configurado en un disco de arranque existente, crea una imagen personalizada que puedas volver a usar. De forma alternativa, si tu aplicación se instala, configura y lanza solo mediante el uso de una secuencia de comandos de inicio, omite este paso y continúa con Crea una plantilla de instancias.

En la situación de ejemplo que se mencionó antes, el disco de arranque de cada VM independiente existente contiene la aplicación configurada. Por lo tanto, puedes seguir los pasos para crear una imagen personalizada basada en cualquiera de esas VM.

  1. Detén una de las instancias.

    gcloud compute instances stop my-instance-1
  2. Determina la fuente para el disco mediante la descripción de la instancia.

    gcloud compute instances describe my-instance-1

    El resultado es similar al siguiente:

    ...
    disks:
    – autoDelete: true
      boot: true
      ...
      source: https://www.googleapis.com/compute/v1/projects/my-project/zones/europe-west1-c/disks/my-instance-1
      ...
    

    Ubica el campo source en el resultado y anota la URL completa del disco de arranque en ese campo.

  3. Usa el comando images create para preparar una imagen personalizada que use la misma fuente.

    gcloud compute images create my-boot-image \
        --source-disk=https://www.googleapis.com/compute/v1/projects/my-project/zones/europe-west1-c/disks/my-instance-1
    

    El resultado es similar al siguiente:

    Created [https://www.googleapis.com/compute/v1/projects/my-project/global/images/my-boot-image].
    

Crea una plantilla de instancias

Una plantilla de instancias es un recurso inmutable de Compute Engine que almacena la configuración de la VM. Una vez que creas una plantilla, no puedes actualizarla. Si necesitas cambiarla más adelante, crea una plantilla nueva y, luego, lanza la plantilla nueva en el grupo.

Sigue los pasos en Crea una plantilla de instancias nueva con la siguiente configuración.

  • Tipo de máquina: Especifica un tipo de máquina que funcione para todas las instancias existentes.

  • Secuencia de comandos de inicio: Si inicias tu aplicación con una secuencia de comandos de inicio, especifica esa secuencia de comandos.

  • Disco de arranque:

    • Imagen: Especifica una imagen de disco de arranque común para todas las VM del MIG. Por ejemplo, si creaste una imagen personalizada basada en el disco de arranque de una VM existente, especifícala. Si necesitas usar un disco de arranque existente destinado a una VM en particular, puedes especificar explícitamente el disco de arranque para esa VM con una configuración por instancia, cuando conviertes esa VM en una instancia administrada, como se explica más adelante en este documento.
    • Nombre del dispositivo: Especifica un nombre de dispositivo que refleje el propósito del disco, por ejemplo, boot-disk. Esto te permite configurar una sola política con estado para preservar todos los discos en el MIG con ese nombre de dispositivo.
    • Tamaño: Especifica un tamaño de disco de arranque que sea suficiente para las instancias existentes y futuras, en caso de que desees agregar alguna.
  • Discos adicionales: De forma predeterminada, cuando agregas instancias al MIG, este crea discos según la plantilla. Ten en cuenta que una plantilla de instancias no admite la configuración de discos regionales, pero puedes configurarlos con opciones de configuración por instancia.

    • Nombre del dispositivo: Para cada disco, especifica un nombre de dispositivo que refleje el propósito del disco, por ejemplo, data-disk.
    • Tamaño: Especifica un tamaño de disco que sea suficiente para instancias futuras, en caso de que agregues uno.

Con respecto a esta migración, la especificación más importante para cada disco adicional es el nombre del dispositivo, que usarás como clave a fin de especificar qué discos tienen estado. Tener un nombre de dispositivo común para discos similares te permite usar una política con estado común con el propósito de conservar todos esos discos en el MIG. La especificación de tamaño o imagen para los discos adicionales en la plantilla de instancias solo se usará a fin de crear discos nuevos en instancias nuevas que podrías crear más allá de las que estés migrando. Cuando migras instancias existentes, conservas los discos de datos existentes desconectándolos de las instancias originales y, luego, vuelves a conectar esos mismos discos a las instancias administradas nuevas, como se explica más adelante en este documento.

Con el siguiente comando de instance-templates create, se crea una plantilla para la situación de ejemplo. El comando incluye una marca --image que apunta a la imagen de arranque personalizada que se creó antes, así como un disco de datos adicional.

gcloud compute instance-templates create my-instance-template \
 --machine-type=n2-standard-2 \
 --image=https://www.googleapis.com/compute/v1/projects/my-project/global/images/my-boot-image \
 --boot-disk-device-name=boot-disk \
 --create-disk=mode=rw,size=100,type=pd-standard,device-name=data-disk

El resultado es similar al siguiente:

Created [https://www.googleapis.com/compute/v1/projects/my-project/global/instanceTemplates/my-instance-template].
NAME                     MACHINE_TYPE   PREEMPTIBLE  CREATION_TIMESTAMP
my-instance-template  n2-standard-2               2021-04-27T11:02:07.552-07:00

Observa la URL de la plantilla, que puedes encontrar en la primera línea del resultado.

Crea un grupo de instancias administrado

El siguiente paso es crear un grupo de instancias administrado (MIG). A fin de crear un MIG de zona única, sigue las instrucciones para crear un MIG en una sola zona. O bien, si deseas protegerte contra fallas zonales mediante un MIG regional, sigue las instrucciones para crear un MIG con VM en varias zonas de una región.

Cuando crees tu MIG, incluye las siguientes especificaciones:

  • Establece el tamaño del grupo en 0. Agregarás instancias más tarde.
  • Si creas un MIG regional, establece el tipo de redistribución de instancias en NONE para que el MIG no redistribuya de forma automática las instancias entre las zonas.

Con el siguiente comando de instance-groups managed create, se crea un MIG zonal para la configuración de ejemplo descrita antes. Para crear un MIG regional, reemplaza --zone=ZONE por --region=REGION.

gcloud compute instance-groups managed create my-mig \
    --size=0 \
    --template=https://www.googleapis.com/compute/v1/projects/my-project/global/instanceTemplates/my-instance-template \
    --zone=europe-west1-c

El resultado es similar al siguiente:

Created [https://www.googleapis.com/compute/v1/projects/my-project/zones/europe-west1-c/instanceGroupManagers/my-mig].
NAME    LOCATION        SCOPE  BASE_INSTANCE_NAME  SIZE  TARGET_SIZE  INSTANCE_TEMPLATE         AUTOSCALED
my-mig  europe-west1-c  zone   my-mig              0     0            my-instance-template      no

Después de crear ese recurso, puedes usarlo a fin de interactuar con el MIG, por ejemplo, para establecer políticas en el grupo y agregar o quitar instancias del grupo.

Convierte las VM existentes en instancias administradas

Para cada una de tus VM no administradas existentes, usa el siguiente procedimiento a fin de convertirlo en una instancia administrada en tu MIG. En este procedimiento, se migran los discos existentes a las instancias administradas nuevas. Como alternativa, puedes crear instantáneas de los discos existentes y, luego, crear discos basados en esas instantáneas para que las usen las instancias administradas.

  1. Describe la VM existente.

    gcloud compute instances describe my-instance-1
    

    Toma nota de los elementos que deseas conservar de la VM existente, que pueden incluir los siguientes:

    • Nombre de la instancia
    • Disco de arranque
    • Discos secundarios
    • Metadatos de la instancia
  2. Detén la VM existente.

    gcloud compute instances stop my-instance-1
    
  3. Desconecta todos los discos con estado, incluido el disco de arranque si planeas reutilizarlo.

    gcloud compute instances detach-disk my-instance-1 --disk=my-data-disk-1
    
  4. Borra la VM existente para que puedas crear otra con el mismo nombre. Si no deseas conservar los nombres de las instancias, puedes borrar la VM existente más tarde para dejar de pagarla.

    gcloud compute instances delete my-instance-1
    
  5. Sigue los pasos para crear una instancia administrada.

    • Puedes volver a usar el nombre de la instancia original si la borraste o ingresar un nombre nuevo.
    • Especifica los metadatos o discos con estado que requiere esta instancia administrada. El MIG almacena estos elementos específicos de la instancia en una configuración por instancia:

      • Especifica uno o más discos, como los discos que se desconectaron de la instancia de VM original.

      • Especifica los metadatos de la instancia de VM original.

    Por ejemplo, el siguiente comando crea una instancia administrada con el mismo nombre que la VM original y vuelve a usar el disco de datos original. El disco de arranque para la VM se crea a partir de la imagen que se especifica en la plantilla de instancias del grupo.

    gcloud compute instance-groups managed create-instance my-mig \
        --instance=my-instance-1    \
        --stateful-metadata=role=primary      \
        --stateful-disk=device-name=data-disk,source=https://www.googleapis.com/compute/v1/projects/my-project/zones/europe-west1-c/disks/my-data-disk-1 \
        --zone=europe-west1-c
    

    Si necesitas volver a usar un disco de arranque de una VM anterior, usa el mismo comando con una marca --stateful-disk adicional. Usa el mismo nombre de dispositivo para el disco de arranque que especificaste en la plantilla de instancias, por ejemplo:

    gcloud compute instance-groups managed create-instance my-mig \
        --instance=my-instance-1 \
        --stateful-metadata=role=secondary    \
        --stateful-disk=device-name=data-disk,source=https://www.googleapis.com/compute/v1/projects/my-project/zones/europe-west1-c/disks/my-data-disk-1 \
        --stateful-disk=device-name=boot-disk,source=https://www.googleapis.com/compute/v1/projects/my-project/zones/europe-west1-c/disks/my-instance-1-boot-disk \
        --zone=europe-west1-c
    
  6. Repite los pasos para cada una de tus VM no administradas existentes.

Si deseas ver las opciones de configuración por instancia resultantes, ejecuta el comando instance-configs list.

gcloud compute instance-groups managed instance-configs list my-mig \
    --zone=europe-west1-c

Para ver el estado preservado de una instancia, ejecuta el comando describe-instance.

gcloud compute instance-groups managed describe-instance my-mig \
  --instance=my-instance-1 \
  --zone=europe-west1-c

Si deseas obtener más información, consulta Aplica, visualiza y quita la configuración con estado en los MIG.

Configura la reparación automática

Los MIG reparan de forma automática las instancias administradas que dejan de ejecutarse. Para mejorar aún más la disponibilidad de tu aplicación y verificar que responda, configura una verificación de estado basada en la aplicación. Consulta la configuración de verificación de estado de ejemplo para ver comandos de muestra.

Usa una política con estado en lugar de una configuración por instancia

Una política con estado te permite declarar discos que tienen un nombre de dispositivo común como con estado en todo el MIG. Una sola política con estado es menos difícil de administrar que varias configuraciones por instancia. Por ejemplo, con una política con estado, puedes designar todos los discos con nombre de dispositivo data-disk para que tengan estado en todas las instancias del MIG.

Si el MIG cumple con las siguientes condiciones, puedes reemplazar las configuraciones por instancia por una política con estado:

  • Todas las VM tienen el mismo nombre de dispositivo (p. ej., data-disk) para discos con estado similares. Este nombre de dispositivo se define en la plantilla de instancias del MIG.
  • Ninguna VM tiene metadatos únicos con estado especificados en una configuración por instancia. Si tienes metadatos con estado definidos en una configuración por instancia, puedes quitar el disco de la configuración por instancia, pero debes mantener la configuración por instancia para mantener esos metadatos con estado específicos de la instancia.

Usa los siguientes pasos para reemplazar varias opciones de configuración por instancia con una sola política con estado.

  1. Configura discos con estado en una política con estado. Sigue las instrucciones en Configura y actualiza la configuración con estado de los discos en un MIG existente.

    Para la situación de ejemplo, usa el siguiente comando. Declara que se conservarán todos los discos en el MIG que tengan un nombre de dispositivo específico.

    gcloud compute instance-groups managed update my-mig \
      --stateful-disk=device-name=data-disk,auto-delete=never
    
  2. Si necesitas preservar los metadatos específicos de la instancia, actualiza la configuración por instancia. De lo contrario, borra la configuración por instancia. Aplica el cambio de configuración de inmediato con la marca --update-instance. Por ejemplo, para borrar la configuración por instancia, usa el siguiente comando:

    gcloud compute instance-groups managed instance-configs delete my-mig \
      --instances=my-instance-1 \
      --update-instance
    
  3. (Opcional) Verifica que los elementos con estado se almacenen ahora en el estado preservado de la política (preservedStateFromPolicy) para cada instancia administrada. Para obtener más información, consulta Visualiza los estados preservados de las instancias administradas.

Agrega más VM

Si necesitas agregar VM para hacer crecer tu aplicación, puedes agregar VM adicionales mediante el aumento del tamaño del MIG o la creación manual de más instancias. El MIG crea todas sus VM, incluidos sus discos persistentes, en función de la plantilla de instancias del grupo. Si el grupo tiene una política con estado, cualquier elemento que enumeres en la política con estado se conserva en las operaciones de reinicio, recreación, reparación automática y actualización de todas las instancias nuevas y existentes en el grupo. Si necesitas configurar metadatos o discos con estado solo para VM específicas de tu grupo, usa la configuración por instancia.

¿Qué sigue?