Migrar una carga de trabajo a un grupo de instancias gestionado con reconocimiento del estado


Si tienes una aplicación con reconocimiento del estado en instancias de máquina virtual (VM) de Compute Engine independientes (sin gestionar), puedes migrarla a un grupo de instancias gestionado (MIG) con reconocimiento del estado.

Si configuras un MIG con reconocimiento del estado y usas instancias gestionadas, podrás disfrutar de las siguientes ventajas:

  • Estado conservado: se conservan los nombres, los discos y los metadatos de las instancias aunque se vuelvan a crear.
  • Reparación automática: recreación automática de las VMs con cargas de trabajo fallidas en la misma zona.
  • Actualizaciones automatizadas: despliegues controlados de nuevas configuraciones de instancias o versiones de software en máquinas virtuales de un MIG.

Limitaciones

  • Debes detener las VMs para migrar sus discos o, como alternativa, hacer capturas coherentes para usarlas en las nuevas instancias gestionadas.
  • Debes eliminar las máquinas virtuales que ya tengas si quieres volver a usar sus nombres.
  • Tu aplicación debe poder ejecutarse en VMs con el mismo tipo de máquina. Si tu aplicación requiere varias instancias de diferentes tipos de máquinas, crea varias plantillas de instancia y grupos de instancias gestionados, uno por cada tipo de máquina.
  • Tu aplicación debe iniciarse cuando se inicie la VM. Puedes usar una imagen personalizada o una secuencia de comandos de inicio. A continuación se explica cada opción.
  • No puedes actualizar el sistema operativo ni el software implementando actualizaciones de imágenes de arranque en un MIG si decides crear discos de arranque con estado.
  • Solo puedes conseguir una alta disponibilidad multizona creando réplicas redundantes en varias zonas y configurando la replicación de datos a nivel de aplicación. Los MIGs con estado solo reparan automáticamente las instancias de la misma zona y no organizan la conmutación por error entre zonas.
  • No puedes usar el autoescalado con un MIG con estado.
  • Consulta las limitaciones de los grupos de instancias gestionados con reconocimiento del estado.

Costes

En este tutorial se usan componentes facturables de Google Cloud , entre los que se incluyen los siguientes:

  • Compute Engine

Usa la calculadora de precios para generar una estimación de costes basada en el uso previsto.

Antes de empezar

En esta guía se usa la CLI de gcloud. Puedes acceder a esta herramienta mediante Cloud Shell. Si prefieres ejecutar la CLI de gcloud en tu ordenador local, descarga e instala la versión más reciente de la CLI de gcloud.

Información general sobre la migración

  1. Conocer los componentes que forman un MIG con reconocimiento del estado.
  2. Revisa tu configuración para determinar las especificaciones comunes de las VMs.
  3. También puedes crear una imagen personalizada que sirva como imagen de disco de arranque común.
  4. Crea una plantilla de instancia para especificar la configuración común de las VMs del grupo de instancias gestionado.
  5. Crea un MIG vacío.
  6. Convierte tus VMs en instancias gestionadas del MIG, incluidas las configuraciones por instancia.
  7. Configura la reparación automática del MIG para mejorar la resiliencia de tu aplicación.
  8. Si quieres reducir la sobrecarga de configuración, puedes sustituir las configuraciones por instancia por una política con estado.

Componentes

Puedes configurar las instancias gestionadas de tu MIG con reconocimiento del estado a través de varios componentes:

  • Una plantilla de instancia contiene la configuración común de las VMs del MIG, como el tipo de máquina, la imagen del disco de arranque, las especificaciones opcionales de discos adicionales y una secuencia de comandos de inicio opcional.
  • Una imagen personalizada opcional contiene tu aplicación y sirve como imagen de disco de arranque común.
  • Una configuración por instancia contiene elementos con reconocimiento del estado específicos de la instancia. Por ejemplo, puedes adjuntar un disco a una instancia específica del grupo. Es posible que este disco se haya separado de una instancia independiente, se haya recuperado a partir de una captura o sea un disco regional. No es necesario definir el nombre del dispositivo del disco en la plantilla de instancia.
  • Una política con estado opcional contiene elementos con estado comunes. Por ejemplo, define todos los discos con un nombre de dispositivo específico (tal como se define en la plantilla de instancia) como con estado para todas las instancias del grupo.

¿Qué componentes necesitas usar?

Los componentes que debes usar dependen de tu configuración. En la siguiente tabla se ofrece un resumen general de algunas configuraciones posibles para una aplicación que se ejecuta en una o varias instancias. Más adelante en este tutorial, revisará su configuración para determinar cuál de estas configuraciones debe usar.

¿Tienes datos o configuraciones con reconocimiento del estado en tus discos de arranque que debas mantener? ¿Cómo se inicia tu aplicación?
La aplicación está configurada en un disco de arranque La aplicación está configurada con una secuencia de comandos de inicio
No, los discos de arranque no tienen estado.
  1. Usar una plantilla de instancia con una imagen personalizada
  2. Añadir configuraciones por instancia (o una política con reconocimiento del estado) para discos de datos con reconocimiento del estado
  1. Usar una plantilla de instancia con una secuencia de comandos de inicio
  2. Añadir configuraciones por instancia (o una política con reconocimiento del estado) para discos de datos con reconocimiento del estado
Sí: al menos un disco de arranque tiene estado
  1. Usar una plantilla de instancia con una imagen personalizada
  2. Añadir configuraciones por instancia (o una política con reconocimiento del estado) para los discos de arranque y de datos con reconocimiento del estado
  1. Usar una plantilla de instancia con una secuencia de comandos de inicio
  2. Añadir configuraciones por instancia (o una política con reconocimiento del estado) para los discos de arranque y de datos con reconocimiento del estado

Revisar la configuración

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

Usa el comando instances describe en cada una de tus instancias.

gcloud compute instances describe INSTANCE_NAME

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

Preguntas Implicaciones
Propiedades de la máquina virtual
¿Qué tipo de máquina quieres usar para tu grupo? Especifica este tipo de máquina en la plantilla de instancia de tu MIG.
¿Cómo se inicia tu aplicación? ¿Está preconfigurada en un disco de arranque o se instala, configura e inicia 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 instancia de tu MIG.

Si tu aplicación se inicia mediante una secuencia de comandos de inicio, especifica esa secuencia de comandos en la plantilla de instancia 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 instancia.
¿Quieres conservar los nombres de las instancias? Debes eliminar las instancias independientes que ya tengas para liberar los nombres de las instancias.

Si tus discos de arranque no tienen reconocimiento del estado y quieres usar actualizaciones continuas automatizadas en tu MIG, consulta la documentación sobre cómo conservar los nombres de las instancias.
Elementos con estado
¿Hay metadatos específicos de cada instancia que debas conservar? Especifica metadatos específicos de la instancia mediante configuraciones por instancia.
¿Tus discos de arranque tienen estado? En otras palabras, ¿hay algún dato en algún disco de arranque cuyo estado debas conservar? Si necesitas conservar el estado de tus discos de arranque, no puedes actualizar el sistema operativo ni el software implementando actualizaciones de la imagen del disco de arranque.
¿Todas las instancias tienen el mismo tipo de disco? Por ejemplo, ¿tienen todos 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 dispositivo comunes en tu plantilla de instancia (por ejemplo, `data-disk`). De esta forma, puedes usar una política con estado para declarar esos discos como con estado en tu MIG, con menos sobrecarga que las configuraciones por instancia.
Si aumentaras el tamaño del grupo, ¿sería suficiente el tamaño de los discos actuales? Especifica los tamaños de disco que necesites en tu plantilla de instancia. Las nuevas instancias tendrán los discos que especifiques, siempre que no se redefinan en una política con reconocimiento del estado o en configuraciones por instancia.

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

Configuración de ejemplo

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

  • Todas las VMs tienen el mismo tipo de máquina.
  • Cada VM se encuentra en el mismo proyecto y zona.
  • El disco de arranque de cada VM tiene la misma aplicación, que está configurada en el disco de arranque para que se inicie cuando se inicie la VM.
  • El disco de arranque de cada VM no contiene ningún otro dato ni configuración que debas conservar.
  • Cada VM tiene un disco persistente secundario con datos con reconocimiento del estado, es decir, datos cuyo estado actual debes mantener.

Edita los valores que aparecen a continuación para usarlos en este tutorial.

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

Crear una imagen personalizada

Si tu aplicación o alguno de sus requisitos ya están configurados en un disco de arranque, crea una imagen personalizada que puedas reutilizar. Si tu aplicación se instala, configura e inicia únicamente mediante una secuencia de comandos de inicio, sáltate este paso y ve a Crear una plantilla de instancia.

En el ejemplo que hemos visto antes, el disco de arranque de cada máquina virtual independiente contiene la aplicación configurada. De esta forma, puede seguir los pasos para crear una imagen personalizada basada en cualquiera de esas VMs.

  1. Detén una de las instancias.

    gcloud compute instances stop my-instance-1
  2. Determina el origen del disco describiendo la instancia.

    gcloud compute instances describe my-instance-1

    El resultado debería ser 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
      ...
    

    Busca 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 debería ser similar al siguiente:

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

Crear una plantilla de instancia

Una plantilla de instancia es un recurso inmutable de Compute Engine que almacena la configuración de una VM. Una vez que hayas creado una plantilla, no podrás actualizarla. Si necesitas cambiarlo más adelante, crea una plantilla nueva y, después, implementa la nueva plantilla en el grupo.

Sigue los pasos que se indican en Crear una plantilla de instancia y usa los siguientes ajustes.

  • Tipo de máquina: especifica un tipo de máquina que funcione en todas tus instancias.

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

  • Disco de arranque:

    • Imagen: especifica una imagen de disco de arranque común para todas las VMs del MIG. Por ejemplo, si has creado una imagen personalizada basada en el disco de arranque de una VM, especifícalo. Si necesitas usar un disco de arranque para una VM específica, puedes especificarlo explícitamente con una configuración por instancia al convertir esa VM en una instancia gestionada, tal 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. De esta forma, puedes configurar una sola política con reconocimiento del estado para conservar todos los discos del MIG con ese nombre de dispositivo.
    • Tamaño: especifica un tamaño de disco de arranque que sea suficiente para las instancias actuales y futuras, por si quieres añadir alguna.
  • Discos adicionales: de forma predeterminada, cuando añades instancias al MIG, este crea discos basados en la plantilla. Ten en cuenta que las plantillas de instancia no admiten la configuración de discos regionales, pero puedes configurar discos regionales más adelante mediante configuraciones 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 las instancias futuras, por si añades alguna.

A efectos de esta migración, la especificación más importante de cada disco adicional es el nombre del dispositivo, que utilizará como clave para especificar qué discos tienen estado. Si los discos similares tienen un nombre de dispositivo común, puedes usar una política con estado común para conservar todos esos discos en la MIG. La especificación del tamaño o la imagen de los discos adicionales de la plantilla de instancia solo se usará para crear discos en las instancias nuevas que crees además de las que estés migrando. Al migrar instancias, conservará los discos de datos que ya tenga. Para ello, deberá separarlos de las instancias originales y, a continuación, volver a asociarlos a las nuevas instancias gestionadas, tal como se explica más adelante en este documento.

El siguiente comando instance-templates create crea una plantilla para el escenario de ejemplo. El comando incluye una marca --image que apunta a la imagen de arranque personalizada que se ha creado anteriormente, 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 debería ser 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

Anote la URL de la plantilla, que se encuentra en la primera línea de la salida.

Crear un grupo de instancias gestionado

El siguiente paso es crear un grupo de instancias gestionado (MIG). Para crear un MIG de una sola zona, sigue las instrucciones para crear un MIG en una sola zona. Si quieres protegerte frente a fallos zonales usando un MIG regional, sigue las instrucciones para crear un MIG con VMs en varias zonas de una región.

Cuando cree su MIG, incluya las siguientes especificaciones:

  • Define el tamaño del grupo en 0. Añadirás instancias más adelante.
  • Si vas a crear un MIG regional, define el tipo de redistribución de instancias como NONE para que el MIG no redistribuya automáticamente las instancias entre las zonas.

El siguiente instance-groups managed create comando crea un MIG zonal para la configuración de ejemplo descrita anteriormente. Para crear un MIG regional, sustituye --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 debería ser 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 para interactuar con el MIG. Por ejemplo, puedes definir políticas en el grupo y añadir o quitar instancias del grupo.

Convertir máquinas virtuales en instancias gestionadas

Para cada una de tus máquinas virtuales no gestionadas, sigue este procedimiento para convertirla en una instancia gestionada de tu MIG. Con este procedimiento se migran los discos a las nuevas instancias gestionadas. También puede crear capturas de los discos que ya tenga y, a continuación, crear discos basados en esas capturas para que los usen las instancias gestionadas.

  1. Describe la VM.

    gcloud compute instances describe my-instance-1
    

    Anota los elementos que quieras conservar de la VM actual, como los siguientes:

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

    gcloud compute instances stop my-instance-1
    
  3. Desconecta todos los discos con estado, incluido el de arranque, si tienes previsto volver a usarlo.

    gcloud compute instances detach-disk my-instance-1 --disk=my-data-disk-1
    
  4. Elimina la VM para poder crear otra con el mismo nombre. Si no quieres conservar los nombres de las instancias, puedes eliminar la VM que ya tengas para dejar de pagar por ella.

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

    • Puedes reutilizar el nombre de la instancia original si la has eliminado. O bien, proporciona un nombre nuevo.
    • Especifica los discos o metadatos con reconocimiento del estado que necesite esta instancia gestionada. El MIG almacena estos elementos específicos de la instancia en una configuración por instancia:

      • Especifica uno o varios discos, como los que se han desvinculado de la instancia de VM original.

      • Especifica los metadatos de la instancia de VM original.

    Por ejemplo, el siguiente comando crea una instancia gestionada con el mismo nombre que la VM original y reutiliza el disco de datos original. El disco de arranque de la VM se crea a partir de la imagen especificada en la plantilla de instancia 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 reutilizar un disco de arranque de una VM antigua, 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 instancia. 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 con cada una de tus máquinas virtuales no gestionadas.

Si quieres ver las configuraciones 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 conservado 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

Para obtener más información, consulta Aplicar, ver y quitar la configuración con reconocimiento del estado en MIGs.

Configurar la reparación automática

Los grupos de instancias gestionados reparan automáticamente las instancias gestionadas que dejan de ejecutarse. Para mejorar aún más la disponibilidad de tu aplicación y verificar que responde, configura una comprobación del estado basada en aplicaciones y la reparación automática. Consulta la configuración de ejemplo de comprobación del estado para ver comandos de ejemplo.

Usar una política con reconocimiento del estado en lugar de configuraciones 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. Es más fácil gestionar una sola política con reconocimiento del estado que varias configuraciones por instancia. Por ejemplo, con una política con reconocimiento del estado, puedes designar todos los discos con el nombre de dispositivo data-disk para que tengan reconocimiento del estado en todas las instancias del MIG.

Si tu MIG cumple las siguientes condiciones, puedes sustituir las configuraciones por instancia por una política con reconocimiento del estado:

  • Todas las VMs tienen el mismo nombre de dispositivo (por ejemplo, data-disk) para discos con estado similares. Este nombre de dispositivo se define en la plantilla de instancia del MIG.
  • Ninguna VM tiene metadatos con reconocimiento del estado únicos especificados en una configuración por instancia. Si has definido metadatos con reconocimiento del estado en una configuración por instancia, puedes quitar el disco de esa configuración, pero debes mantenerla para conservar los metadatos con reconocimiento del estado específicos de esa instancia.

Sigue estos pasos para sustituir varias configuraciones por instancia por una sola política con estado.

  1. Configura discos con reconocimiento del estado en una política con reconocimiento del estado. Sigue las instrucciones que se indican en el artículo Definir y actualizar la configuración con reconocimiento del estado de los discos de un MIG.

    En el ejemplo, usa el siguiente comando. Declara que se conservarán todos los discos de la 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 conservar metadatos específicos de una instancia, actualiza la configuración por instancia. De lo contrario, elimina la configuración por instancia. Aplica el cambio de configuración inmediatamente con la marca --update-instance. Por ejemplo, para eliminar 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 reconocimiento del estado ahora se almacenan en el estado conservado de la política (preservedStateFromPolicy) de cada instancia gestionada. Para obtener más información, consulta Ver los estados conservados de las instancias gestionadas.

Añadir más VMs

Si necesitas añadir VMs para ampliar tu aplicación, puedes hacerlo aumentando el tamaño de tu MIG o creando manualmente más instancias. El MIG crea todas sus VMs, incluidos sus discos persistentes, a partir de la plantilla de instancia del grupo. Si el grupo tiene una política con reconocimiento del estado, los elementos que incluyas en ella se conservarán en todas las instancias nuevas y existentes del grupo durante las operaciones de reinicio, recreación, reparación automática y actualización. Si solo necesitas configurar discos o metadatos con reconocimiento del estado para máquinas virtuales específicas de tu grupo, usa configuraciones por instancia.

Siguientes pasos