Si tienes una aplicación con estado existente en instancias de máquina virtual (VM) de Compute Engine independientes (no administradas), puedes migrar esa aplicación a un grupo de instancias administrado (MIG) con estado .
Al configurar un MIG con estado y utilizar instancias administradas, puede obtener los siguientes beneficios:
- Estado preservado: preservación de nombres de instancias, discos y metadatos incluso si se vuelve a crear una instancia.
- Reparación automática: recreación automática de máquinas virtuales con cargas de trabajo fallidas dentro de la misma zona.
- Actualizaciones automatizadas: implementaciones elegantes de nuevas configuraciones de instancias o versiones de software en máquinas virtuales en un MIG.
Limitaciones
- Debe detener sus máquinas virtuales existentes para migrar sus discos existentes o, alternativamente, tomar instantáneas coherentes para que las utilicen las nuevas instancias administradas.
- Debe eliminar las máquinas virtuales existentes si desea reutilizar sus nombres de máquina virtual.
- Su aplicación debe poder ejecutarse en máquinas virtuales con el mismo tipo de máquina. Si su aplicación existente requiere varias instancias de diferentes tipos de máquinas, cree varias plantillas de instancias y MIG, una por tipo de máquina.
- Su aplicación debe iniciarse cuando se inicia la VM. Puede utilizar una imagen personalizada o un script de inicio. Cada opción se analiza a continuación.
- No puede actualizar el sistema operativo o el software implementando actualizaciones de imágenes de inicio en un MIG si elige crear discos de inicio con estado.
- Puede lograr alta disponibilidad multizona solo creando réplicas redundantes en múltiples zonas y configurando la replicación de datos a nivel de aplicación. Stateful MIG repara automáticamente instancias dentro de la misma zona únicamente y no organiza la conmutación por error entre zonas.
- No puede utilizar el escalado automático con un MIG con estado.
- Revise las limitaciones de MIG con estado.
Costos
Este tutorial utiliza componentes facturables de Google Cloud incluido:- Motor de Computación
Utilice la calculadora de precios para generar una estimación de costos basada en su uso proyectado.
Antes de comenzar
Esta guía utiliza la CLI de gcloud. Puede acceder a esta herramienta mediante Cloud Shell . O, si deseas ejecutar la CLI de gcloud en tu computadora local, descarga e instala la CLI de gcloud más reciente .
Descripción general de la migración
- Comprender los componentes que componen un MIG con estado.
- Revise su configuración existente para determinar las especificaciones comunes de VM.
- Opcionalmente, cree una imagen personalizada para que sirva como imagen de disco de arranque común.
- Cree una plantilla de instancia para especificar la configuración de VM común para MIG.
- Crea un MIG vacío.
- Convierta sus máquinas virtuales existentes en instancias administradas en MIG, incluidas las configuraciones por instancia.
- Configure la reparación automática para MIG para mejorar la resiliencia de su aplicación.
- Opcionalmente, para reducir la sobrecarga de configuración, reemplace las configuraciones por instancia con una política con estado.
Componentes
Usted configura las instancias administradas de su MIG con estado a través de varios componentes:
- Una plantilla de instancia contiene una configuración común para las máquinas virtuales en MIG, incluido el tipo de máquina, la imagen del disco de inicio, especificaciones opcionales para discos adicionales y un script de inicio opcional.
- Una imagen personalizada opcional contiene su aplicación y sirve como imagen de disco de arranque común.
- Una configuración por instancia contiene elementos con estado específicos de la instancia. Por ejemplo, puede adjuntar un disco existente a una instancia específica del grupo. Este disco puede desconectarse de una instancia independiente existente, recuperarse de una instantánea o de un disco regional. No es necesario definir el nombre del dispositivo del disco en su 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 (como se define en la plantilla de instancia) como con estado para todas las instancias del grupo.
¿Qué componentes necesitas usar?
Los componentes que necesita utilizar dependen de su configuración existente. La siguiente tabla proporciona un resumen de alto nivel 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 existente para determinar cuál de estas configuraciones necesita usar.
¿Tiene algún dato o configuración con estado en sus discos de arranque que deba mantener? | ¿Cómo comienza tu aplicación? | |
---|---|---|
La aplicación está configurada en un disco de arranque existente | La aplicación está configurada con un script de inicio. | |
No: los discos de arranque no tienen estado |
|
|
Sí: al menos un disco de arranque tiene estado |
|
|
Revise su configuración existente
Revise sus instancias independientes existentes para inspeccionar el tipo de máquina, los discos y los metadatos de cada instancia.
Utilice el comando instances describe
para cada una de sus instancias.
gcloud compute instances describe INSTANCE_NAME
Responda las siguientes preguntas para prepararse para los pasos siguientes de esta guía.
Preguntas | Trascendencia |
---|---|
Propiedades de la máquina virtual | |
¿Cuál es el tipo de máquina que desea utilizar para su grupo? | Especifique este tipo de máquina en la plantilla de instancia de su MIG. |
¿Cómo se inicia su aplicación: está preconfigurada en un disco de arranque o se instala, configura y ejecuta mediante un script de inicio? | Si su aplicación está preconfigurada en un disco de arranque, cree una imagen personalizada y luego especifique esa imagen en la plantilla de instancia de su MIG. Si su aplicación se inicia mediante un script de inicio, especifique ese script de inicio en la plantilla de instancia de su MIG. Si su aplicación requiere una imagen de disco de inicio personalizada y un script de inicio, especifique ambos en la plantilla de instancia. |
¿Quiere conservar los nombres de instancias existentes? | Debe eliminar las instancias independientes existentes para liberar los nombres de las instancias. Si sus discos de arranque permanecen sin estado y si alguna vez desea utilizar actualizaciones automáticas en su MIG, revise la documentación para Preservar nombres de instancias . |
Elementos con estado | |
Para cada instancia, ¿hay metadatos específicos de la instancia que deba conservar? | Especifique metadatos específicos de la instancia mediante configuraciones por instancia. |
¿Sus discos de arranque tienen estado? En otras palabras, ¿hay algún dato que se encuentre en algún disco de arranque cuyo estado deba conservar? | Si necesita preservar el estado de sus discos de arranque, no puede actualizar el sistema operativo o el software implementando actualizaciones de la imagen del disco de arranque. |
¿Todas las instancias tienen los mismos tipos de discos? 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, defina esos nombres de dispositivos comunes en su plantilla de instancia, por ejemplo, "disco de datos". Esto le permite utilizar una política con estado para declarar esos discos con estado en todo su MIG, con menos gastos generales que las configuraciones por instancia. |
Si tuviera que hacer crecer el grupo, ¿es suficiente el tamaño de los discos actuales? | Especifique los tamaños de disco que necesita en su plantilla de instancia. Las nuevas instancias obtendrán los discos que especifique, siempre que esos discos no se redefinan en una política con estado o configuraciones por instancia. |
Esta guía comienza creando configuraciones por instancia para discos con estado existentes. Pero puede convertir esas configuraciones a una política con estado más adelante, siempre que los discos tengan nombres de dispositivos comunes que declare en la plantilla de instancias del grupo.
Configuración de ejemplo
Esta guía utiliza el siguiente ejemplo básico para ilustrar los pasos de migración. Suponga que tiene una aplicación con estado ejecutándose en tres máquinas virtuales Compute Engine independientes. Suponga las siguientes especificaciones de VM:
- Cada VM tiene el mismo tipo de máquina.
- Cada VM existe en el mismo proyecto y zona.
- El disco de inicio de cada VM tiene la misma aplicación, que está configurada en el disco de inicio para iniciarse cuando se inicia la VM.
- El disco de arranque de cada VM no contiene ningún otro dato o configuración que deba conservar.
- Cada VM tiene un disco persistente secundario con datos con estado, es decir, datos para los cuales debes mantener el estado actual.
Edite los valores a continuación para usarlos a lo largo de 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 su aplicación o cualquiera de sus requisitos ya están configurados en un disco de arranque existente, cree una imagen personalizada que pueda reutilizar. Alternativamente, si su aplicación se instala, configura y ejecuta únicamente mediante un script de inicio, omita este paso y continúe con Crear una plantilla de instancia .
En el escenario de ejemplo analizado anteriormente, el disco de arranque de cada VM independiente existente contiene la aplicación configurada. De modo que puede seguir los pasos para crear una imagen personalizada basada en cualquiera de esas máquinas virtuales.
Detenga una de las instancias.
gcloud compute instances stop my-instance-1
Determine el origen del disco describiendo 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 ...
Localice el campo
source
en la salida y anote la URL completa del disco de arranque en ese campo.Utilice el comando
images create
para preparar una imagen personalizada que utilice 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].
Crear una plantilla de instancia
Una plantilla de instancia es un recurso inmutable de Compute Engine que almacena la configuración de la VM. Una vez que crea una plantilla, no puede actualizarla. Si necesita cambiarlo más adelante, cree una nueva plantilla y luego implemente la nueva plantilla en el grupo.
Siga los pasos en Creación de una nueva plantilla de instancia , utilizando la siguiente configuración.
Tipo de máquina : especifique un tipo de máquina que funcione para todas sus instancias existentes.
Script de inicio : si inicia su aplicación utilizando un script de inicio, especifique ese script.
Disco de arranque :
- Imagen : especifique una imagen de disco de inicio común para todas las máquinas virtuales en el MIG. Por ejemplo, si creó una imagen personalizada basada en el disco de arranque de una máquina virtual existente, especifíquelo. Si necesita utilizar un disco de inicio existente para una VM específica, puede especificar explícitamente el disco de inicio para esa VM con una configuración por instancia, cuando convierte esa VM en una instancia administrada, como se explica más adelante en este documento.
- Nombre del dispositivo : especifique un nombre de dispositivo que refleje el propósito del disco, por ejemplo,
boot-disk
. Esto le permite configurar una única política de estado para preservar todos los discos en el MIG con ese nombre de dispositivo. - Tamaño : especifique un tamaño de disco de arranque que sea suficiente para instancias existentes así como para instancias futuras, en caso de que desee agregar alguna.
Discos adicionales : de forma predeterminada, cuando agrega instancias al MIG, el MIG crea discos según la plantilla. Tenga en cuenta que una plantilla de instancia no admite la configuración de discos regionales, pero puede configurar discos regionales más adelante utilizando configuraciones por instancia.
- Nombre del dispositivo : para cada disco, especifique un nombre de dispositivo que refleje el propósito del disco, por ejemplo,
data-disk
. - Tamaño : especifique un tamaño de disco que sea suficiente para futuras instancias, en caso de que agregue alguna.
- Nombre del dispositivo : para cada disco, especifique un nombre de dispositivo que refleje el propósito del disco, por ejemplo,
A los efectos de esta migración, la especificación más importante para cada disco adicional es el nombre del dispositivo, que utilizará como clave para especificar qué discos tienen estado. Tener un nombre de dispositivo común para discos similares le permite utilizar una política de estado común para preservar todos esos discos en el MIG. La especificación de tamaño o imagen para discos adicionales en la plantilla de instancias solo se usará para crear nuevos discos para instancias nuevas que pueda crear además de las que está migrando. Al migrar instancias existentes, preservará los discos de datos existentes separándolos de las instancias originales y luego volviendo a conectar esos mismos discos a las nuevas instancias administradas, 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 un indicador --image
que apunta a la imagen de inicio personalizada creada 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 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
Tenga en cuenta la URL de la plantilla, que puede encontrar en la primera línea del resultado.
Crear un grupo de instancias administrado
El siguiente paso es crear un grupo de instancias administrado (MIG). Para crear un MIG de zona única, siga las instrucciones para Crear un MIG en una zona única . O, si desea protegerse contra fallas zonales mediante el uso de un MIG regional, siga las instrucciones para Crear un MIG con máquinas virtuales en varias zonas de una región .
Cuando cree su MIG, incluya las siguientes especificaciones:
- Establezca el tamaño del grupo en
0
. Agregará instancias más adelante. - Si está creando un MIG regional, establezca el tipo de redistribución de instancias en
NONE
para que el MIG no redistribuya instancias automáticamente entre zonas.
El siguiente comando instance-groups managed create
crea un MIG zonal para la configuración de ejemplo descrita anteriormente. Para crear un MIG regional, reemplace --zone= ZONE
con --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, puede usarlo para interactuar con el MIG, por ejemplo, para establecer políticas en el grupo y para agregar o eliminar instancias del grupo.
Convierta máquinas virtuales existentes en instancias administradas
Para cada una de sus máquinas virtuales no administradas existentes, utilice el siguiente procedimiento para convertirlas en una instancia administrada en su MIG. Este procedimiento migra los discos existentes a las nuevas instancias administradas. Alternativamente, puede crear instantáneas de discos existentes y luego crear discos basados en esas instantáneas para que los utilicen las instancias administradas.
Describa la máquina virtual existente.
gcloud compute instances describe my-instance-1
Tome nota de los elementos que desea conservar de la máquina virtual existente, que pueden incluir lo siguiente:
- Nombre de instancia
- Disco de arranque
- Discos secundarios
- Metadatos de instancia
Detenga la máquina virtual existente.
gcloud compute instances stop my-instance-1
Separe todos los discos con estado, incluido el disco de arranque si planea reutilizarlo.
gcloud compute instances detach-disk my-instance-1 --disk=my-data-disk-1
Elimine la VM existente para poder crear otra con el mismo nombre. Si no desea conservar los nombres de las instancias, puede eliminar la VM existente más adelante para dejar de pagar por ella.
gcloud compute instances delete my-instance-1
Siga los pasos para crear una instancia administrada .
- Puede reutilizar el nombre de la instancia original si ha eliminado la instancia original. O proporcione un nuevo nombre.
Especifique los discos con estado o los metadatos que requiere esta instancia administrada. El MIG almacena estos elementos específicos de la instancia en una configuración por instancia:
Especifique uno o más discos, como discos que se desconectaron de la instancia de VM original.
Especifique 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 reutiliza el disco de datos original. El disco de arranque para 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 necesita reutilizar un disco de arranque de una máquina virtual antigua, use el mismo comando con un indicador adicional
--stateful-disk
. Utilice el mismo nombre de dispositivo para el disco de arranque que especificó 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
Repita los pasos para cada una de sus máquinas virtuales no administradas existentes.
Si desea ver las configuraciones por instancia resultantes, ejecute 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, ejecute 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, consulte Aplicar, ver y eliminar la configuración con estado en MIG .
Configurar la reparación automática
Los MIG reparan automáticamente las instancias administradas que dejan de ejecutarse. Para mejorar aún más la disponibilidad de su aplicación y verificar que esté respondiendo, configure una verificación de estado y reparación automática basada en la aplicación . Consulte el ejemplo de configuración de verificación de estado para ver comandos de muestra.
Usar una política con estado en lugar de configuraciones por instancia
Una política con estado le permite declarar discos que tienen un nombre de dispositivo común como con estado en todo el MIG. Una única política con estado requiere menos trabajo de administración que múltiples configuraciones por instancia. Por ejemplo, con una política con estado, puede designar todos los discos con nombre de dispositivo data-disk
para que tengan estado en todas las instancias del MIG.
Si su MIG cumple con las siguientes condiciones, puede reemplazar las configuraciones por instancia con una política con estado:
- Todas las máquinas virtuales 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 estado únicos especificados en una configuración por instancia. Si tiene metadatos con estado definidos en una configuración por instancia, puede eliminar el disco de la configuración por instancia, pero debe conservar la configuración por instancia para mantener esos metadatos con estado específicos de la instancia.
Utilice los siguientes pasos para reemplazar varias configuraciones por instancia con una única política con estado.
Configure discos con estado en una política con estado. Siga las instrucciones en Configuración y actualización de la configuración con estado para discos en un MIG existente .
Para el escenario de ejemplo, utilice el siguiente comando. Declara que se conservarán todos los discos del 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
Si necesita conservar metadatos específicos de la instancia, actualice la configuración por instancia . De lo contrario, elimine la configuración por instancia . Aplique el cambio de configuración inmediatamente con el indicador
--update-instance
. Por ejemplo, para eliminar la configuración por instancia, utilice el siguiente comando:gcloud compute instance-groups managed instance-configs delete my-mig \ --instances=my-instance-1 \ --update-instance
(Opcional). Verifique que los elementos con estado ahora estén almacenados en el estado preservado de la política (
preservedStateFromPolicy
) para cada instancia administrada. Para obtener más información, consulte Ver los estados conservados de instancias administradas .
Agregar más máquinas virtuales
Si necesita agregar máquinas virtuales para hacer crecer su aplicación, puede agregar máquinas virtuales adicionales aumentando el tamaño de su MIG o creando manualmente más instancias. El MIG crea todas sus máquinas virtuales, incluidos sus discos persistentes, según la plantilla de instancia del grupo. Si el grupo tiene una política con estado, todos los elementos que enumere en la política con estado se conservan durante las operaciones de reinicio, recreación, reparación automática y actualización para todas las instancias nuevas y existentes del grupo. Si necesita configurar discos con estado o metadatos solo para máquinas virtuales específicas de su grupo, utilice configuraciones por instancia .
¿Qué sigue?
- Obtenga más información sobre cómo trabajar con instancias administradas .
- Aprenda cómo funcionan los MIG con estado .