En este documento, se describe cómo aplicar de forma automática las actualizaciones de configuración a las instancias de máquina virtual (VM) en un grupo de instancias administrado (MIG).
Compute Engine mantiene las VM en un MIG en función de los componentes de configuración que usas: plantilla de instancias, configuración opcional de todas las instancias y configuración con estado opcional.
Cada vez que actualices la configuración de VM de un MIG, cambia esos componentes. Compute Engine aplica de forma automática la configuración actualizada a las VM nuevas que se agregan al grupo.
Para aplicar una configuración actualizada a las VM existentes, puedes establecer una actualización automática, también conocida como tipo de actualización proactiva. El MIG lanza de forma automática las actualizaciones de configuración para todas las VM del grupo o para un subconjunto de ellas. Puedes controlar la velocidad de implementación, el nivel de interrupción del servicio y la cantidad de instancias que el MIG actualiza con la plantilla nueva mediante una actualización de versión canary. Después de especificar una configuración nueva, no necesitas proporcionar entradas adicionales y la actualización se completa por sí sola.
Como alternativa, si deseas aplicar una configuración nueva de forma selectiva solo a instancias nuevas o a instancias específicas en un MIG, consulta Aplica de forma selectiva las actualizaciones de configuración de VM en un MIG. A fin de ayudarte a decidir, consulta Métodos para aplicar una configuración nueva a las VM existentes.
Antes de comenzar
- Si actualizas un MIG con estado, revisa Aplica, visualiza y quita la configuración con estado en los MIG.
-
Si aún no lo hiciste, configura la autenticación.
La autenticación es el proceso mediante el cual se verifica tu identidad para acceder a los servicios y las API de Google Cloud.
Para ejecutar código o muestras desde un entorno de desarrollo local, puedes autenticarte en Compute Engine seleccionando una de las siguientes opciones:
Select the tab for how you plan to use the samples on this page:
Console
When you use the Google Cloud console to access Google Cloud services and APIs, you don't need to set up authentication.
gcloud
-
Install the Google Cloud CLI, then initialize it by running the following command:
gcloud init
- Set a default region and zone.
- Si tienes un MIG con estado y deseas usar actualizaciones progresivas automatizadas, debes mantener los nombres de las instancias cuando las reemplaces o, de manera equivalente, configurar el método de reemplazo como
RECREATE
. Las actualizaciones se basan en la intención. Cuando realizas la solicitud de actualización inicial, la API de Compute Engine muestra una respuesta correcta para confirmar que la solicitud es válida, pero eso no indica que la actualización fue exitosa. Debes verificar el estado del grupo para determinar si la actualización se implementó correctamente.
La API del Actualizador del grupo de instancias es una API declarativa. La API espera una solicitud para especificar la configuración deseada posterior a la actualización del MIG, en lugar de una llamada a función explícita.
Las actualizaciones automáticas admiten hasta dos versiones de plantilla de instancias en tu MIG. Esto significa que puedes especificar dos versiones diferentes de plantillas de instancias para tu grupo, lo que es útil cuando se realizan actualizaciones canary.
En la consola de Google Cloud, ve a la página Grupos de instancias.
Selecciona el MIG que deseas actualizar.
Haz clic en Actualizar VM.
En Nueva plantilla, haz clic en la lista desplegable y selecciona la plantilla nueva que se actualizará. El tamaño objetivo se establece de forma automática como 100%, lo que indica que se actualizarán todas las instancias.
En Actualizar configuración, expande el menú de selección y elige Automática como el Tipo de actualización. Deja los valores predeterminados para las otras opciones.
Haz clic en Actualizar VM para comenzar la actualización.
INSTANCE_GROUP_NAME
: Es el nombre del MIG.INSTANCE_TEMPLATE_NAME
: La nueva plantilla de instanciasZONE
: Para MIG zonales, proporciona la zonaREGION
: Para los MIG regionales, proporciona la región- Actualizaciones automáticas o proactivas
- Actualizaciones selectivas u oportunistas
- El estado de la instancia es
RUNNING
. - Si la verificación de estado está habilitada, cuando muestra
HEALTHY
. - Espera hasta el período especificado por el valor
autohealingPolicies.initialDelaySec
del MIG para que la verificación de estado muestreHEALTHY
. - Luego, espera el período especificado por
minReadySec
. SUBSTITUTE
(predeterminado) Reemplaza las instancias de VM más rápido durante las actualizaciones porque se crean VM nuevas antes de que se cierren las anteriores. Sin embargo, los nombres de las instancias no se conservan porque las instancias anteriores los siguen usando.RECREATE
. Conserva los nombres de las instancias mediante una actualización. Compute Engine libera el nombre de la instancia cuando se cierra la VM anterior. Luego, Compute Engine crea una instancia nueva con ese mismo nombre. Para usar este modo, debes establecermaxSurge
en0
.- En la consola de Google Cloud, ve a la página Grupos de instancias.
- Selecciona el grupo de instancias administrado que deseas actualizar.
- Haz clic en Actualizar VM.
- Haz clic en Agregar una segunda plantilla y elige la nueva plantilla de instancias para la versión canary.
- En Tamaño de destino, ingresa el porcentaje o el número fijo de instancias que deseas usar para realizar pruebas canary en la nueva plantilla de instancias.
- Si lo deseas, puedes configurar otras opciones de actualización.
- Haz clic en Actualizar VM para comenzar la actualización.
INSTANCE_GROUP_NAME
: Es el nombre del grupo de instancias.CURRENT_INSTANCE_TEMPLATE_NAME
: La plantilla de instancias que ejecuta el grupo de instanciasNEW_TEMPLATE
: Es la plantilla nueva en la que deseas realizar pruebas de la versión canary.SIZE
: La cantidad o el porcentaje de instancias a la que deseas aplicar esta actualización. Debes aplicar la propiedadtarget-size
a la plantilla--canary-version
. Solo puedes establecer un porcentaje si el grupo de instancias contiene 10 instancias o más.ZONE
: Para MIG zonales, proporciona la zona.REGION
: Para los MIG regionales, proporciona la región.NEW_TEMPLATE
: el nombre de la nueva plantilla con la que quieres realizar una actualización canary.NUMBER|PERCENTAGE
: el número fijo o porcentaje de instancias para realizar pruebas canary en esta actualización. Solo puedes establecer un porcentaje si el grupo de instancias contiene 10 instancias o más. De lo contrario, proporciona un número fijo.CURRENT_INSTANCE_TEMPLATE_NAME
: el nombre de la plantilla de instancias actual que el grupo ejecuta.- En la consola de Google Cloud, ve a la página Grupos de instancias.
- Selecciona el grupo de instancias administrado que deseas actualizar.
- Haz clic en Actualizar VM.
- En Plantilla nueva, actualiza el tamaño objetivo de la plantilla canary al 100% para reenviar la plantilla a todas tus instancias. O bien, puedes reemplazar la plantilla principal con la plantilla canary para quitar el segundo campo de la plantilla.
- Haz clic en Actualizar VM para comenzar la actualización.
- Para verificar si todas las VM alcanzaron su versión de plantilla de destino, consulta el estado del grupo.
- Para verificar que VM específicas hayan alcanzado su versión de la plantilla de destino, consulta las acciones actuales en las instancias.
- Para los MIG con estado, también consulta Verifica si se aplicaron las opciones de configuración por instancia.
- En la consola de Google Cloud, ve a la página Grupos de instancias.
- Selecciona el grupo de instancias administrado que deseas supervisar. La página de resumen para el grupo de instancias muestra la plantilla que usa cada instancia.
- Para ver los detalles, haz clic en la pestaña Detalles.
- En Plantilla de instancias, puedes ver la cantidad actual y de destino de instancias para cada plantilla de instancias, además de los parámetros de actualización.
status.versionTarget.isReached
configurado comotrue
indica que todas las instancias de VM se crearon o están en proceso de creación mediante la versión de destino.status.versionTarget.isReached
se establece enfalse
para indicar que al menos una VM aún no usa la versión de destino. O bien, en el caso de una actualización canary,false
indica que la cantidad de VM que usa una versión de destino no coincide con su tamaño de destino.- Ninguna de las instancias del MIG se somete a ningún tipo de cambio, y la
currentAction
para todas las instancias esNONE
. - No hay cambios pendientes para las instancias en el MIG.
- No se modifica el MIG en sí.
- Realizas una solicitud para implementar una plantilla de instancias nueva.
- Realizas una solicitud para crear, borrar, cambiar el tamaño o actualizar las instancias en el MIG.
- Un escalador automático solicita cambiar el tamaño del MIG.
- Un recurso de reparación automática reemplaza una o más instancias en mal estado en el MIG.
- En un MIG regional, se redistribuyen algunas de las instancias.
ABANDONING
. La instancia se está quitando del MIG.CREATING
: la instancia está en proceso de creación.CREATING_WITHOUT_RETRIES
. La instancia se está creando sin reintentos. Si la instancia no se crea en el primer intento, el MIG no intenta reemplazar la instancia de nuevo.DELETING
: La instancia está en proceso de borrado.RECREATING
: La instancia se está reemplazando.REFRESHING
: La instancia se está quitando de sus grupos de destino actuales y se está agregando de nuevo a la lista de grupos de destino actuales (esta lista puede ser igual o diferente a la de los grupos de destino existentes).RESTARTING
. la instancia está en proceso de reinicio con los métodosstop
ystart
.RESUMING
La instancia está en proceso de reanudarse después de que se suspendió.STARTING
La instancia está en proceso de iniciarse después de detenerse.STOPPING
. La instancia se está deteniendo.SUSPENDING
. La instancia se está suspendiendo.VERIFYING
: la instancia se creó y está en proceso de verificación.NONE
: no hay ninguna acción en ejecución en la instancia.Haz una solicitud para determinar cuántas instancias se actualizaron:
gcloud compute instance-groups managed list-instances INSTANCE_GROUP_NAME \ [--zone=ZONE | --region=REGION]
La CLI de gcloud muestra una respuesta que incluye una lista de instancias en el grupo y sus estados actuales:
NAME ZONE STATUS HEALTH_STATE ACTION INSTANCE_TEMPLATE VERSION_NAME LAST_ERROR vm-instances-9pk4 us-central1-f RUNNING HEALTHY NONE example-new-template vm-instances-j1h8 us-central1-f RUNNING HEALTHY NONE example-old-template vm-instances-ngod us-central1-f STAGING UNKNOWN CREATING example-new-template
En este ejemplo, dos instancias ya se actualizaron.
A continuación, haz una solicitud para realizar una actualización nueva, pero pasa la cantidad de instancias que ya se actualizaron como el tamaño de destino:
gcloud compute instance-groups managed rolling-action start-update INSTANCE_GROUP_NAME \ --version template=OLD_INSTANCE_TEMPLATE_NAME \ --canary-version template=NEW_INSTANCE_TEMPLATE_NAME,target-size=2 \ [--zone=ZONE | --region=REGION]
Para el Actualizador, esta actualización parece completa, por lo que no se actualiza ninguna otra instancia y se detiene de manera efectiva.
- Inicia una actualización canary en lugar de una actualización completa.
- Establece un valor grande de
minReadySec
. Establecer este valor hace que el actualizador espere esta cantidad de segundos antes de considerar que la instancia se actualizó de forma correcta y pasar a la siguiente instancia. - Habilita la verificación de estado para que el actualizador espere a que tu aplicación se inicie e informe una señal de buen estado, antes de considerar que la instancia se actualizó de modo correcto y pasar a la siguiente instancia.
- Establece valores bajos de
maxUnavailable
ymaxSurge
. Esto garantiza que solo se actualice un número mínimo de instancias a la vez. - Actualiza instancias de manera selectiva en un MIG en lugar de usar una actualización automática.
Acción mínima: Usa esta opción para minimizar la interrupción tanto como sea posible o aplicar una acción más disruptiva que lo necesario.
- Para limitar las interrupciones tanto como sea posible, establece la acción mínima en
REFRESH
. Si tu actualización requiere una acción más disruptiva, Compute Engine realiza la acción necesaria para ejecutar la actualización. - Para aplicar una acción más disruptiva que la estrictamente necesaria, configura la acción mínima en
RESTART
oREPLACE
. Por ejemplo, Compute Engine no necesita reiniciar una VM para cambiar sus metadatos. Sin embargo, si tu aplicación lee los metadatos de la instancia solo cuando se reinicia una VM, puedes establecer la acción mínima enRESTART
para que se capturen los cambios de metadatos.
- Para limitar las interrupciones tanto como sea posible, establece la acción mínima en
Acción más disruptiva permitida: Usa esta opción para evitar que se realice una actualización si requiere más interrupciones de las que puedes permitirte. Si tu actualización requiere una acción más disruptiva que la acción que configuraste con esta marca, la solicitud de actualización fallará. Por ejemplo, si estableces la acción más disruptiva permitida en
RESTART
, un intento de actualizar la imagen de disco de arranque falla porque esa actualización requiere un reemplazo de instancias, que es una acción más disruptiva que la de reiniciar.- La acción mínima predeterminada es
REPLACE
. Si deseas evitar las interrupciones innecesarias, configura la acción mínima para que sea menos disruptiva. - La acción predeterminada más disruptiva permitida es
REPLACE
. Si no puedes tolerar esta interrupción, establece la acción más disruptiva permitida para que sea menos perjudicial. - Limpiar las pérdidas de memoria
- Reiniciar tu aplicación para que pueda ejecutarse desde una máquina nueva.
- Forzar un reemplazo periódico como práctica recomendada para probar tus VM.
- Actualizar la imagen del sistema operativo de la VM o volver a ejecutar la secuencia de comandos de inicio para actualizar tu software
- En la consola de Google Cloud, ve a la página Grupos de instancias.
- Selecciona el grupo de instancias administrado que tiene las VM que deseas reiniciar o reemplazar.
- Haz clic en Reiniciar o reemplazar VM.
- En Operación, selecciona Reiniciar o Reemplazar.
- Si seleccionas Reiniciar, activa o desactiva los siguientes parámetros:
- Si seleccionas Reemplazar, haz lo siguiente:
- Elige si deseas mantener los nombres de las instancias cuando reemplaces instancias.
- Activa o desactiva los siguientes parámetros:
- Para iniciar la operación, haz clic en Reiniciar VM o Reemplazar VM.
maxUnavailable=NUMBER_OF_ZONES
maxSurge=NUMBER_OF_ZONES
Si especificas un porcentaje de instancias de VM para una actualización canary, el Actualizador intenta distribuir las instancias de forma equitativa entre las zonas. El resto se redondea hacia arriba o hacia abajo en cada zona, pero la diferencia total no es de más de 1 instancia de VM por grupo. Por ejemplo, para un MIG con 10 instancias y un porcentaje de tamaño de destino del 25%, la actualización se lanza en 2 o 3 instancias de VM.
Si especificas un porcentaje para las opciones de actualización como
maxSurge
ymaxUnavailable
, los porcentajes se redondean de manera independiente por zona.- Consulta Visualiza información sobre los MIG y las instancias administradas.
- Consulta Crea plantillas de instancias.
- Aprende a usar familias de imágenes y un reemplazo progresivo para actualizar la imagen de SO en todas las VM en un MIG.
REST
Para usar las muestras de la API de REST en esta página en un entorno de desarrollo local, debes usar las credenciales que proporcionas a la CLI de gcloud.
Install the Google Cloud CLI, then initialize it by running the following command:
gcloud init
Si deseas obtener más información, consulta Autentica para usar REST en la documentación de autenticación de Google Cloud.
Limitaciones
Inicia una actualización progresiva básica
Una actualización progresiva básica es una actualización que se implementa de forma gradual en todas las instancias de un MIG hasta que todas estén actualizadas a la configuración deseada más reciente. La actualización progresiva omite de forma automática las instancias que ya tienen la configuración más reciente.
Puedes controlar varios aspectos de una actualización progresiva, como la cantidad de instancias que se pueden desconectar para la actualización, el tiempo de espera entre instancias de actualización, si la nueva plantilla afecta a todas las instancias o solo a una parte, etcétera.
Cuando se realiza una actualización progresiva, se debe tener en cuenta la siguiente información:
Para iniciar una actualización progresiva básica en la que la actualización se aplique a todas las instancias del grupo, sigue las instrucciones que se indican a continuación.
Console
gcloud
Usa el comando
rolling-action start-update
.gcloud compute instance-groups managed rolling-action start-update INSTANCE_GROUP_NAME \ --version=template=INSTANCE_TEMPLATE_NAME [--zone=ZONE | --region=REGION]
Reemplaza lo siguiente:
REST
Llama al método
patch
en un recurso de MIG regional o zonal.Por ejemplo, para un MIG regional, la siguiente solicitud muestra la configuración mínima necesaria a fin de actualizar automáticamente el 100% de las instancias a la nueva plantilla de instancias.
PATCH https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/instanceGroupManagers/INSTANCE_GROUP_NAME { "instanceTemplate": "global/instanceTemplates/NEW_TEMPLATE", "updatePolicy": { "type": "PROACTIVE" } }
Después de realizar una solicitud, puedes supervisar la actualización para saber cuándo finalizó.
Para configuraciones avanzadas, debes incluir otras opciones de actualización. Si no especificas lo contrario, la configuración predeterminada de
maxSurge
ymaxUnavailable
es1
multiplicada por la cantidad de zonas afectadas. Esto significa que solo 1 instancia se desconecta sin conexión en cada zona afectada y el MIG crea solo 1 instancia adicional por zona durante la actualización.Configura opciones para tu actualización
Para actualizaciones más complejas, puedes configurar opciones adicionales, como se describe en las siguientes secciones.
Tipo de actualización
Los grupos de instancias administrados admiten dos tipos de actualización:
Si deseas aplicar actualizaciones de forma automática, configura el tipo como proactivo.
Como alternativa, si una actualización automática puede ser demasiado disruptiva, puedes optar por realizar una actualización oportunista. El MIG aplica una actualización oportunista solo cuando inicias de forma manual la actualización en instancias seleccionadas o cuando se crean instancias nuevas. Se pueden crear nuevas instancias cuando tú o cuando otro servicio, como un escalador automático, cambia el tamaño del MIG. Compute Engine no inicia solicitudes de manera activa para aplicar actualizaciones oportunistas en instancias existentes.
Si deseas obtener más información sobre las actualizaciones automatizadas y las actualizaciones selectivas, consulta Métodos para aplicar una configuración nueva a las VMs existentes.
Cantidad máxima de instancias sobreaprovisionadas
Usa la opción
maxSurge
para configurar cuántas instancias nuevas puede crear el MIG superior a sutargetSize
durante una actualización automática. Por ejemplo, si establecesmaxSurge
en 5, el MIG usa la plantilla de instancias nueva para crear hasta 5 instancias nuevas por encima de su tamaño de destino. Si estableces un valor mayor demaxSurge
, se acelera tu actualización, por el costo de instancias adicionales, y se factura de acuerdo con lahoja de precios de Compute Engine.Puedes especificar un número fijo o, si el grupo de instancias administrado tiene 10 instancias o más, un porcentaje. Si estableces un porcentaje, el Actualizador redondea el número de instancias de ser necesario.
Si no estableces el valor
maxSurge
, se usa el valor predeterminado. Para los MIG zonales, el valor predeterminado paramaxSurge
es1
. En los MIG regionales, el valor predeterminado es la cantidad de zonas asociadas con el grupo, de forma predeterminada es3
.maxSurge
solo funciona si tienes una cuota o recursos suficientes para admitir los recursos adicionales.Si tu actualización no requiere que se reemplacen VM, esta opción se ignora. Para forzar el reemplazo de las VM durante una actualización, configura la opción acción mínima.
Cantidad máxima de instancias no disponibles
Usa la opción
maxUnavailable
para configurar cuántas instancias no están disponibles en cualquier momento durante una actualización automática. Por ejemplo, si establecesmaxUnavailable
en 5, entonces solo 5 instancias se desconectan para actualizarse a la vez. Usa este parámetro para controlar cuánto interrumpe la actualización a tu servicio y controlar la frecuencia con la que se implementa la actualización.Este número también incluye cualquier instancia que no esté disponible por otros motivos. Por ejemplo, si el grupo está en proceso de cambiar el tamaño, puede que las instancias en creación no estén disponibles. Estas instancias se toman en cuenta en el número
maxUnavailable
.Puedes especificar un número fijo o, si el grupo tiene 10 instancias o más, un porcentaje. Si estableces un porcentaje, el Actualizador redondea la cantidad de instancias, de ser necesario.
Si no deseas que ninguna máquina no esté disponible durante una actualización, establece el valor
maxUnavailable
en0
y el valormaxSurge
en más de 0. Con esta configuración, Compute Engine quita cada máquina anterior solo después de que se crea y se está ejecutando la nueva máquina de reemplazo.Si no estableces el valor
maxUnavailable
, se usa el valor predeterminado. Para los MIG zonales, el valor predeterminado es1
. En los MIG regionales, el valor predeterminado es la cantidad de zonas asociadas con el grupo, de forma predeterminada es3
.Tiempo de espera mínimo
Usa la opción
minReadySec
para especificar la cantidad de tiempo de espera antes de considerar que una instancia nueva o reiniciada está actualizada. Usa esta opción para controlar la velocidad a la que se implementa la actualización automática. El temporizador comienza cuando se cumplen las siguientes condiciones:Ten en cuenta que para que la verificación de estado se muestre en buen estado, el Actualizador espera las siguientes condiciones:
Si la verificación de estado no muestra
HEALTHY
dentro deinitialDelaySec
, entonces el Actualizador determina que la instancia de VM está en mal estado y puede detener la actualización. Mientras la instancia de VM espera la verificación durante los períodos deinitialDelaySec
yminReadySec
, lacurrentAction
de la instancia esVERIFYING
. Sin embargo, el estado de la instancia de VM subyacente sigue siendoRUNNING
.Si no hay verificaciones de estado del grupo de instancias, el temporizador comienza cuando el estado de la instancia es
RUNNING
.El valor máximo de la propiedad
minReadySec
es 3,600 segundos (1 hora).En el siguiente diagrama, se muestra cómo las opciones de tamaño objetivo, máximo no disponible, aumento máximo y tiempo de espera mínimo afectan a las instancias. Para obtener más información sobre el tamaño del destino, consulta Actualizaciones de versión canary.
Acción mínima
Usa la opción de acción mínima para minimizar la interrupción tanto como sea posible o para aplicar una acción más disruptiva que lo necesario. Por ejemplo, Compute Engine no necesita reiniciar una VM para cambiar sus metadatos. Sin embargo, si tu aplicación lee los metadatos de la instancia solo cuando se reinicia una VM, puedes establecer la acción mínima para que se realice un reinicio a fin de captar los cambios de metadatos.
Si tu actualización requiere una acción más disruptiva que la establecida con esta marca, Compute Engine realiza la acción necesaria para ejecutar la actualización. Por ejemplo, si especificas un reinicio como la acción mínima, el Actualizador intenta reiniciar las instancias para aplicar la actualización. Sin embargo, si cambias el SO, lo que no puede realizarse mediante el reinicio de la instancia, el Actualizador reemplaza las instancias en el grupo por instancias de VM nuevas.
Para obtener más información, incluidas las opciones válidas, consulta Controla el nivel de interrupción durante una actualización progresiva.
Acción más disruptiva permitida
Usa la opción de acción más disruptiva permitida para evitar que se realice una actualización que requiera más interrupciones de las que puedes permitirte. Si una actualización no se puede completar debido a esta configuración, la actualización fallará y tus VM mantendrán su configuración anterior.
Para obtener más información, consulta Controla el nivel de interrupción durante una actualización progresiva.
Método de reemplazo
De forma predeterminada, cuando actualizas un MIG, el grupo borra las instancias de VM y las cambia por instancias nuevas con nombres nuevos. Si necesitas preservar los nombres de tus instancias de VM, usa la opción
replacementMethod
.Preservar nombres de instancias existentes puede ser útil si tienes aplicaciones o sistemas que dependen del uso de nombres de instancias específicos. Por ejemplo, algunas aplicaciones, como Memcached, dependen de nombres de instancias porque no tienen un servicio de descubrimiento; por lo tanto, cada vez que un nombre de instancia cambia, la aplicación pierde conexión con esa VM específica.
Para conservar los nombres de las instancias, configura el método de reemplazo en
RECREATE
en lugar deSUBSTITUTE
si actualizas el MIG con la CLI de gcloud o la API de Compute Engine. Como alternativa, si actualizas el MIG desde la consola de Google Cloud, selecciona la casilla de verificación Conservar nombres de instancias cuando se reemplacen instancias.Estos son los valores válidos: de
replacementMethod
:Para obtener más información, consulta Conserva nombres de instancias.
Ejemplos de actualizaciones adicionales
Aquí hay algunos ejemplos de línea de comandos con opciones de configuración comunes.
Realiza una actualización progresiva de todas las instancias de VM, pero crea hasta 5 instancias nuevas por encima del tamaño de destino a la vez
gcloud compute instance-groups managed rolling-action start-update INSTANCE_GROUP_NAME \ --version=template=NEW_TEMPLATE \ --max-surge=5 \ [--zone=ZONE | --region=REGION]
Realiza una actualización progresiva con un máximo de 3 máquinas no disponibles y un tiempo de espera mínimo de 3 minutos antes de marcar una instancia nueva como disponible
gcloud beta compute instance-groups managed rolling-action start-update INSTANCE_GROUP_NAME \ --version=template=NEW_TEMPLATE \ --min-ready=3m \ --max-unavailable=3 \ [--zone=ZONE | --region=REGION]
Realiza una actualización progresiva de todas las instancias de VM, pero crea hasta un 10% de instancias nuevas por encima del tamaño de destino a la vez
Por ejemplo, si tienes 1,000 instancias y ejecutas el siguiente comando, el Actualizador crea hasta 100 instancias antes de comenzar a quitar las instancias que estén ejecutando la plantilla de instancias anterior.
gcloud compute instance-groups managed rolling-action start-update INSTANCE_GROUP_NAME \ --version=template=NEW_TEMPLATE \ --max-surge=10% \ [--zone=ZONE | --region=REGION]
Actualizaciones canary
Una actualización de la versión canary es una actualización que se aplica a un subconjunto de instancias en el grupo. Con una actualización de la versión canary, puedes probar nuevas funciones o actualizaciones en un subconjunto aleatorio de instancias, en lugar de lanzar una actualización que podría ser perjudicial para todas tus instancias. Si una actualización no funciona bien, solo necesitas revertir el subconjunto de instancias, lo que minimiza la interrupción para tus usuarios.
Una actualización de la versión canary es igual a una actualización progresiva estándar, excepto que la cantidad de instancias que se deben actualizar es menor que el tamaño total del grupo de instancias. Al igual que una actualización progresiva estándar, puedes configurar opciones adicionales para controlar el nivel de interrupción del servicio.
Inicia una actualización canary
Para iniciar una actualización canary, especifica hasta dos versiones de plantilla de instancias, por lo general, se usa una plantilla de instancias nueva con el fin de realizar pruebas canary y la plantilla de instancias actual para el resto de las instancias. Por ejemplo, puedes especificar que el 20% de las instancias se creen en función de una
NEW_INSTANCE_TEMPLATE
, mientras que el resto de las instancias continúen ejecutándose en laOLD_INSTANCE_TEMPLATE
. No puedes especificar más de dos plantillas de instancias a la vez.NEW_INSTANCE_TEMPLATE
puede ser una plantilla de instancias regional de la misma región que la de tu MIG o una plantilla de instancias globalSiempre debes especificar un tamaño de destino (
targetSize
) para la versión canary. No puedes iniciar una actualización canary si omites el tamaño de destino para la versión canary. Por ejemplo, si especificaste que el 10% de las instancias deben usarse para realizar pruebas canary, el 90% restante no se toca y usan la plantilla de instancias actual.Console
gcloud
Usa el comando
rolling-action start-update
Proporciona la plantilla actual y la nueva para expresar de forma explícita cuántas instancias debe usar cada plantilla:gcloud compute instance-groups managed rolling-action start-update INSTANCE_GROUP_NAME \ --version=template=CURRENT_INSTANCE_TEMPLATE_NAME \ --canary-version=template=NEW_TEMPLATE,target-size=SIZE \ [--zone=ZONE | --region=REGION]
Reemplaza lo siguiente:
Por ejemplo, el siguiente comando realiza una actualización canary que lanza
example-template-B
al 10% de las instancias en el grupo:gcloud compute instance-groups managed rolling-action start-update example-mig \ --version=template=example-template-A \ --canary-version=template=example-template-B,target-size=10%
REST
Llama al método
patch
en un recurso de MIG regional o zonal. En el cuerpo de la solicitud, incluye la plantilla de instancias actual y la de instancias nuevas en la que deseas realizar pruebas de la versión canary. Por ejemplo:PATCH https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/instanceGroupManagers/INSTANCE_GROUP_NAME { "versions": [ { "instanceTemplate": "global/instanceTemplates/NEW_TEMPLATE", "targetSize": { "[percent|fixed]": NUMBER|PERCENTAGE # Use `fixed` for a specific number of instances } }, { "instanceTemplate": "global/instanceTemplates/CURRENT_INSTANCE_TEMPLATE_NAME" } ] }
Reemplaza lo siguiente:
Si deseas ver más opciones, consulta Cómo configurar las opciones para tu actualización.
Después de realizar una solicitud, puedes supervisar la actualización para saber cuándo finalizó.
Avanza una actualización canary
Después de ejecutar una actualización canary, puedes decidir si deseas confirmar la actualización al 100% del MIG o revertirla.
Console
gcloud
Si deseas confirmar tu actualización canary, reenvía la actualización mediante la emisión de otro comando
rolling-action start-update
pero establece solo la marcaversion
y omite la marca--canary-version
.gcloud compute instance-groups managed rolling-action start-update INSTANCE_GROUP_NAME \ --version=template=NEW_TEMPLATE \ [--zone=ZONE | --region=REGION]
REST
Llama al método
patch
en un recurso de MIG regional o zonal. En el cuerpo de la solicitud, especifica la nueva plantilla de instancias comoversion
y omite la plantilla de instancias anterior de tu cuerpo de solicitud. Omite la especificación de tamaño de destino para lanzar la actualización en el 100% de las instancias. Por ejemplo:PATCH https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/instanceGroupManagers/INSTANCE_GROUP_NAME { "versions": [ { "instanceTemplate": "global/instanceTemplates/NEW_TEMPLATE" # New instance template } ] }
Supervisa las actualizaciones
Después de iniciar una actualización, la nueva configuración puede tardar un poco en lanzarse en todas las instancias afectadas. Puedes supervisar el progreso de una actualización si verificas lo siguiente:
Estado del grupo
A nivel de grupo, Compute Engine propaga un campo de solo lectura llamado
status
que contiene una marcaversionTarget.isReached
y una marcaisStable
. Puedes usar gcloud CLI o REST para acceder a estas marcas. También puedes usar la consola de Google Cloud para ver el número actual y planificado de instancias que se están actualizando.Console
Puedes supervisar una actualización progresiva para un grupo desde la página de detalles del grupo.
gcloud
Usa el comando
describe
.gcloud compute instance-groups managed describe INSTANCE_GROUP_NAME \ [--zone=ZONE | --region=REGION]
También puedes usar el comando
gcloud compute instance-groups managed wait-until
con la marca--version-target-reached
con el fin de esperar hasta questatus.versionTarget.isReached
se configure entrue
para el grupo:gcloud compute instance-groups managed wait-until INSTANCE_GROUP_NAME \ --version-target-reached \ [--zone=ZONE | --region=REGION]
REST
Llama al método
get
en un recurso de MIG regional o zonal.GET https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/instanceGroupManagers/INSTANCE_GROUP_NAME/get
Verifica si el lanzamiento de una actualización está completo
Verifica si el lanzamiento de una actualización se completa mediante la verificación del valor del campo
status.versionTarget.isReached
del MIG:Comprueba si el grupo de instancias administrado es estable
Para verifica que todas las instancias en un grupo de instancias administrado estén en ejecución y en buen estado, comprueba el valor del campostatus.isStable
del grupo.status.isStable
configurado comofalse
indica que los cambios están activos, pendientes o que el MIG se está modificando.status.isStable
establecido entrue
indica lo siguiente:Recuerda que la estabilidad de un MIG depende de muchos factores, puesto que un MIG se puede modificar de varias maneras. Por ejemplo:
Cuando todas las acciones se completan,
status.isStable
se vuelve a establecer entrue
para ese MIG.Acciones actuales en las instancias
Usa Google Cloud CLI o REST para ver los detalles de las instancias en un grupo de instancias administrado. Los detalles incluyen el estado de la instancia y las acciones actuales que realiza el grupo en sus instancias.
gcloud
Todas las instancias administradas
Para comprobar el estado y las acciones actuales en todas las instancias del grupo, usa el comando
list-instances
.gcloud compute instance-groups managed list-instances INSTANCE_GROUP_NAME \ [--zone=ZONE | --region=REGION]
El comando muestra una lista de instancias del grupo, incluidos su estado, acciones actuales y otros detalles:
NAME ZONE STATUS HEALTH_STATE ACTION INSTANCE_TEMPLATE VERSION_NAME LAST_ERROR vm-instances-9pk4 us-central1-f CREATING my-new-template vm-instances-h2r1 us-central1-f STOPPING DELETING my-old-template vm-instances-j1h8 us-central1-f RUNNING NONE my-old-template vm-instances-ngod us-central1-f RUNNING NONE my-old-template
La columna
HEALTH_STATE
aparece vacía, a menos que hayas configurado la verificación de estado.Una instancia administrada específica
Para comprobar el estado y la acción actual de una instancia específica del grupo, usa el comando
describe-instance
.gcloud compute instance-groups managed describe-instance INSTANCE_GROUP_NAME \ --instance INSTANCE_NAME \ [--zone=ZONE | --region=REGION]
El comando muestra detalles sobre la instancia, incluidos su estado, acción actual y, para los MIG con estado, el estado preservado:
currentAction: NONE id: '6789072894767812345' instance: https://www.googleapis.com/compute/v1/projects/example-project/zones/us-central1-a/instances/example-mig-hz41 instanceStatus: RUNNING name: example-mig-hz41 preservedStateFromConfig: metadata: example-key: example-value preservedStateFromPolicy: disks: persistent-disk-0: autoDelete: NEVER mode: READ_WRITE source: https://www.googleapis.com/compute/v1/projects/example-project/zones/us-central1-a/disks/example-mig-hz41 version: instanceTemplate: https://www.googleapis.com/compute/v1/projects/example-project/global/instanceTemplates/example-template
REST
Llama al método
listManagedInstances
en un recurso de MIG regional o zonal. Por ejemplo, para ver detalles sobre las instancias en un recurso de MIG zonal, puedes realizar la siguiente solicitud:GET https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instanceGroupManagers/INSTANCE_GROUP_NAME/listManagedInstances
La llamada muestra una lista de instancias para el MIG, incluidos los valores de
instanceStatus
ycurrentAction
de cada instancia.{ "managedInstances": [ { "instance": "https://www.googleapis.com/compute/v1/projects/example-project/zones/us-central1-f/instances/vm-instances-prvp", "id": "5317605642920955957", "instanceStatus": "RUNNING", "instanceTemplate": "https://www.googleapis.com/compute/v1/projects/example-project/global/instanceTemplates/example-template", "currentAction": "REFRESHING" }, { "instance": "https://www.googleapis.com/compute/v1/projects/example-project/zones/us-central1-f/instances/vm-instances-pz5j", "currentAction": "DELETING" }, { "instance": "https://www.googleapis.com/compute/v1/projects/example-project/zones/us-central1-f/instances/vm-instances-w2t5", "id": "2800161036826218547", "instanceStatus": "RUNNING", "instanceTemplate": "https://www.googleapis.com/compute/v1/projects/example-project/global/instanceTemplates/example-template", "currentAction": "REFRESHING" } ] }
Para ver una lista de los valores de campo
instanceStatus
válidos, consulta la sección Ciclo de vida de las instancias de VM.Si una instancia experimenta algún tipo de cambio, el grupo de instancias administrado establece el campo
currentAction
de la instancia como una de las siguientes acciones para ayudarte a realizar un seguimiento del progreso del cambio. De lo contrario, el campocurrentAction
se configura comoNONE
.Los valores posibles de
currentAction
son los siguientes:Revierte una actualización
No hay ningún comando explícito para revertir una actualización a una versión anterior, pero si decides revertir una actualización (ya sea una actualización completa o una canary), puedes hacer una nueva solicitud de actualización y pasar la plantilla de instancias a la que deseas revertir.
gcloud
Por ejemplo, el siguiente comando de la CLI de gcloud revierte una actualización lo más rápido posible. Reemplaza
OLD_INSTANCE_TEMPLATE
por el nombre de la plantilla de instancias a la que deseas revertir.gcloud compute instance-groups managed rolling-action start-update INSTANCE_GROUP_NAME \ --version=template=OLD_INSTANCE_TEMPLATE_NAME \ --max-unavailable=100% \ [--zone=ZONE | --region=REGION]
REST
Llama al método
patch
en un recurso de MIG regional o zonal.En el cuerpo de la solicitud, especifica la plantilla de instancias anterior como
version
:PATCH https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/instanceGroupManagers/INSTANCE_GROUP_NAME { "updatePolicy": { "maxUnavailable": { "percent": 100 } }, "versions": [ { "instanceTemplate": "global/instanceTemplates/OLD_INSTANCE_TEMPLATE_NAME" # Old instance template } ] }
En el caso de un MIG regional con menos de 10 instancias, debes usar un valor fijo para
maxUnavailable
y establecer el valor en el número de instancias en el grupo.El Actualizador trata una solicitud de reversión de la misma manera que una solicitud de actualización normal, por lo que puedes especificar opciones de actualización adicionales.
Detén una actualización
No hay ningún método o comando explícito para detener una actualización. Puedes cambiar una actualización de proactiva a oportunista y si el grupo de instancias administrado no está en un proceso de cambio de tamaño llevado a cabo por otros servicios como el escalador automático, el cambio a oportunista detiene por completo la actualización.
Para cambiar una actualización de proactiva a oportunista mediante la CLI de gcloud, ejecuta el siguiente comando:
gcloud compute instance-groups managed rolling-action stop-proactive-update INSTANCE_GROUP_NAME \ [--zone=ZONE | --region=REGION]
Para detener por completo la actualización después de convertirla de proactiva a oportunista, sigue estos pasos:
Controla la velocidad de una actualización progresiva
De forma predeterminada, cuando realizas una solicitud de actualización, el actualizador realiza la actualización lo más rápido posible. Si no estás seguro de querer aplicar una actualización completa o estás probando de manera tentativa los cambios, puedes controlar la velocidad de la actualización mediante los siguientes métodos.
También puedes usar una combinación de estos métodos para controlar la frecuencia de tu actualización.
Controla el nivel de interrupción durante una actualización progresiva
Según la naturaleza de una actualización, se puede interrumpir el estado del ciclo de vida de una instancia. Por ejemplo, para cambiar el disco de arranque de una instancia, se debe reemplazar la instancia. Puedes controlar el nivel de interrupción que se produce durante una actualización progresiva si configuras las siguientes opciones:
Ambas opciones aceptan los siguientes valores:
Valor Descripción ¿Qué propiedades de instancia se pueden actualizar? REFRESH
No detengas la instancia. Discos, metadatos de instancias y etiquetas adicionales RESTART
Detén la instancia y vuelve a iniciarla. Tipos de máquina, etiquetas, metadatos de instancia, etiquetas y discos adicionales REPLACE
(predeterminado) . Reemplaza la instancia según el método de método de reemplazo. Todas las propiedades de instancia almacenadas en la plantilla de instancias o la configuración por instancia La acción más perjudicial permitida no puede ser menos perjudicial que la acción mínima.
Cuando implementas actualizaciones automáticamente, se aplican los siguientes valores predeterminados:
Puedes cambiar el comportamiento predeterminado si usas la API de Compute Engine para configurar los campos
updatePolicy.minimalAction
yupdatePolicy.mostDisruptiveAllowedAction
en tu recurso de MIG, por ejemplo, si llamas al métodoregionInstanceGroupManagers.patch
. Como alternativa, puedes seleccionar las acciones permitidas para actualizar las VM cuando actualizas el MIG desde la consola de Google Cloud. Para ver la configuración actual, consulta Obtén las propiedades de un MIG.Una actualización falla si requiere una acción más disruptiva que la permitida. Si esto sucede, puedes intentar actualizar nuevamente con una acción permitida más disruptiva o puedes actualizar la instancia de forma selectiva. Compute Engine realiza la validación de mejor esfuerzo para ver si las instancias se pueden actualizar con el límite de interrupción especificado. Pero debido a cambios simultáneos en el sistema, la situación puede cambiar después de que comienza la actualización. Si falla una operación en una instancia en particular, genera una lista de los errores de instancias para ver el error.
Realiza un reemplazo progresivo o un reinicio
Un reinicio progresivo detiene y reinicia todas las instancias, mientras que un reemplazo progresivo reemplaza las instancias según la opción del método de reemplazo. Un reinicio o reemplazo progresivo no cambia nada más sobre el grupo, incluida la plantilla de instancias.
Hay muchas razones por las puedes querer un reinicio o un reemplazo progresivos. Por ejemplo, es posible que desees reiniciar o reemplazar tus instancias de VM de vez en cuando por uno de los siguientes motivos:
Usa la consola de Google Cloud, Google Cloud CLI o REST para realizar un reinicio o un reemplazo.
Console
gcloud
Utiliza el comando
restart
o el comandoreplace
.El siguiente comando reemplaza todas las instancias del MIG, una a la vez:
gcloud compute instance-groups managed rolling-action replace INSTANCE_GROUP_NAME
El siguiente comando reinicia cada instancia, una a la vez:
gcloud compute instance-groups managed rolling-action restart INSTANCE_GROUP_NAME
Puedes personalizar aún más cada uno de estos comandos con las mismas opciones disponibles para las actualizaciones (por ejemplo,
maxSurge
ymaxUnavailable
).REST
Llama al método
patch
en un recurso de MIG regional o zonal.En el campo
updatePolicy.minimalAction
, especificaRESTART
oREPLACE
. En el campoversions.instanceTemplate
, especifica la plantilla actual.Para activar la acción, también debes actualizar el campo
versions.name
, por ejemplo, agregándole una marca de tiempo. Más adelante, puedes enumerar las VMs del MIG e inspeccionar el campoversions.name
de cada VM para determinar qué VMs se reemplazaron o reiniciaron.Por ejemplo, para un MIG zonal, la siguiente solicitud muestra la configuración mínima necesaria a fin de reiniciar de forma automática el 100% de las instancias.
PATCH https://compute.googleapis.com/compute/v1/projects/example-project/zones/ZONE/instanceGroupManagers/INSTANCE_GROUP_NAME { "updatePolicy": { "minimalAction": "RESTART", "type": "PROACTIVE" }, "versions": [ { "instanceTemplate": "global/instanceTemplates/CURRENT_INSTANCE_TEMPLATE_NAME", "name": "v2-1705499403" } ] }
Ejemplos adicionales de reemplazo o reinicio
Realiza un reinicio progresivo de todas las VM, de a dos a la vez
Este comando reinicia todas las VM en el grupo, de dos en dos. Ten en cuenta que no se especifica una plantilla de instancias nueva.
gcloud compute instance-groups managed rolling-action restart INSTANCE_GROUP_NAME \ --max-unavailable=2 \ [--zone=ZONE | --region=REGION]
Realiza un reinicio progresivo de todas las VM lo más rápido posible
gcloud compute instance-groups managed rolling-action restart INSTANCE_GROUP_NAME \ --max-unavailable=100% \ [--zone=ZONE | --region=REGION]
Realiza un reemplazo progresivo de todas las VM lo más rápido posible
gcloud compute instance-groups managed rolling-action replace INSTANCE_GROUP_NAME \ --max-unavailable=100% \ [--zone=ZONE | --region=REGION]
Preserva los nombres de las instancias
Si necesitas preservar los nombres de las instancias de VM en una actualización, configura el
replacementMethod
comoRECREATE
. También debes configurarmaxUnavailable
para que sea mayor que0
ymaxSurge
en0
. Volver a crear instancias en lugar de reemplazarlas hace que la actualización tarde más en completarse, pero las instancias actualizadas mantienen sus nombres.Si no especificas un método de reemplazo, se usa el valor
updatePolicy.replacementMethod
actual del MIG. Si no se configura, se usa el valor predeterminadosubstitute
, que reemplaza las instancias de VM con instancias nuevas que tienen nombres generados de manera aleatoria.gcloud
Cuando emitas un comando
rolling-action
, incluye la marca--replacement-method=recreate
.gcloud compute instance-groups managed rolling-action start-update INSTANCE_GROUP_NAME \ --replacement-method=recreate \ --version=template=NEW_TEMPLATE \ --max-unavailable=5 \ [--zone=ZONE | --region=REGION]
REST
Llama al método
patch
en un recurso de MIG regional o zonal. En el cuerpo de la solicitud, incluye la propiedadupdatePolicy.replacementMethod
.PATCH /compute/v1/projects/PROJECT_ID/regions/REGION/instanceGroupManagers/INSTANCE_GROUP_NAME { "updatePolicy": { "type": "PROACTIVE", "maxUnavailable": { "fixed": 5 }, "replacementMethod": "RECREATE" }, "versions": [ { "instanceTemplate": "global/instanceTemplates/NEW_TEMPLATE" } ] }
Después de realizar una solicitud, puedes supervisar la actualización para saber cuándo finalizó.
Actualiza un grupo de instancias administrado regional
Un MIG regional contiene instancias de VM que se distribuyen en varias zonas dentro de una región, a diferencia de un MIG zonal, que solo contiene instancias en una zona. Los MIG regionales te permiten distribuir tus instancias en más de una zona para mejorar la disponibilidad de tu aplicación y admitir casos extremos en los que una zona falla o un grupo completo de instancias deja de responder.
Realizar una actualización en un MIG regional es igual que realizar una actualización en un MIG zonal, con algunas excepciones que se describen a continuación. Cuando inicias la actualización de un MIG regional, el Actualizador siempre actualiza las instancias de manera proporcional y uniforme en cada zona. No puedes elegir qué instancias se actualizan primero y no puedes actualizar instancias en una sola zona.
Diferencias entre la actualización de los MIG regionales y zonales
Los MIG regionales tienen los siguientes valores de actualización predeterminados:
NUMBER_OF_ZONES
es la cantidad de zonas asociadas con el MIG regional. De forma predeterminada, la cantidad de zonas para un MIG regional es3
. Pero puedes seleccionar una cantidad diferente.Si usas números fijos al momento de especificar una actualización, el número fijo debe ser
0
o igual o mayor que el número de zonas asociadas con el MIG regional. Por ejemplo, si el grupo se distribuye en tres zonas, no puedes establecermaxSurge
en1
o2
porque el Actualizador debe crear una instancia adicional en cada una. de las tres zonas.Usa un número fijo o un porcentaje en las solicitudes de actualización
Si especificas un número fijo en las solicitudes de actualización, este se divide por el número de zonas en el MIG regional y se distribuye de forma equitativa. Por ejemplo, si especificas
maxSurge=10
, el Actualizador divide 10 entre el número de zonas en la región y crea instancias basadas en ese número. Si la cantidad de instancias no se divide de forma equitativa entre las zonas, el Actualizador agrega las instancias restantes a una zona aleatoria. Por lo tanto, para 10 instancias en tres zonas, dos de las zonas obtienen 3 instancias y una obtiene 4. Se aplica la misma lógica a los parámetrosmaxUnavailable
ytargetSize
para las actualizaciones canary.Puedes especificar un porcentaje solo si tu MIG contiene 10 o más instancias de VM. Los porcentajes se manejan de manera apenas diferente según la situación:
¿Qué sigue?
Salvo que se indique lo contrario, el contenido de esta página está sujeto a la licencia Atribución 4.0 de Creative Commons, y los ejemplos de código están sujetos a la licencia Apache 2.0. Para obtener más información, consulta las políticas del sitio de Google Developers. Java es una marca registrada de Oracle o sus afiliados.
Última actualización: 2024-12-22 (UTC)
-