Compute Engine realiza un mantenimiento regular de su infraestructura. En esta página, se describen los tipos de eventos de mantenimiento y sus frecuencias aproximadas, y el modo en que puedes configurar las opciones de disponibilidad de instancias a fin de establecer el comportamiento de las instancias de VM cuando ocurren estos eventos. También se describe cómo configurar una instancia para que realice una migración en vivo cuando tiene lugar un evento de este tipo.
Antes de comenzar
- Si deseas usar los ejemplos de línea de comandos en esta guía, haz lo siguiente:
- Instala la herramienta de línea de comandos de gcloud o actualízala a la última versión.
- Configura una región y una zona predeterminadas.
- Si deseas utilizar los ejemplos de la API en esta guía, configura el acceso a la API.
Eventos de mantenimiento
Los eventos de mantenimiento de Compute Engine involucran actualizaciones de hardware y software. Algunos de estos eventos de mantenimiento requieren que Google aleje su VM del host que está en mantenimiento. Compute Engine administra automáticamente el comportamiento de la programación de estas instancias. Compute Engine llevará a cabo la migración en vivo de las instancias de VM si configuraste la política de disponibilidad de la instancia para que utilice este tipo de migración. Esto evita que tus aplicaciones sufran interrupciones durante estos eventos. De manera alternativa, también puedes optar por detener las instancias durante estos eventos, en lugar de realizar la migración en vivo.
En la siguiente tabla, se clasifican los eventos de mantenimiento de Compute Engine en dos categorías, se ilustra cada categoría con ejemplos y se indica qué evento de mantenimiento requiere una migración en vivo de tu VM a un host diferente.
Tipo de evento de mantenimiento | Ejemplos | Frecuencia aproximada * | Requiere migración en vivo al host nuevo |
---|---|---|---|
Mantenimiento de host | Actualización del kernel del host, actualización o reparación del hardware | Una vez cada dos semanas | Sí |
Mantenimiento ligero | Actualización de nivel de hipervisor, actualización de la pila de red | De 1 a 2 veces por semana | No |
* Ten en cuenta que estas frecuencias son aproximaciones, no garantías. Puede que Compute Engine haga tareas de mantenimiento con mayor frecuencia que la mencionada aquí.
Elige políticas de disponibilidad
La política de disponibilidad de una instancia de VM determina su comportamiento cuando ocurre un evento de mantenimiento en el que Google debe transferir la instancia a otra máquina anfitrión. Puedes configurar tus instancias de VM para que continúen ejecutándose mientras Compute Engine realiza la migración en vivo de las instancias a otro host, o puedes optar por detener tus instancias. Es posible actualizar la política de disponibilidad de una instancia en cualquier momento con el objetivo de controlar cómo quieres que se comporten tus instancias de VM.
Puedes cambiar la política de disponibilidad de una instancia si configuras los siguientes dos parámetros:
- El comportamiento de mantenimiento de la instancia de VM, que determina si la instancia se migra en vivo o se detiene cuando ocurre un evento de mantenimiento
- El comportamiento de reinicio de la instancia, que determina si la instancia se reinicia de forma automática si falla o se detiene
El comportamiento de mantenimiento predeterminado de las instancias es migrar en vivo, pero puedes cambiarlo para detener la instancia durante los eventos de mantenimiento.
Migración en vivo
De forma predeterminada, las instancias estándar están configuradas para la migración en vivo, que ocurre cuando Compute Engine migra automáticamente tu instancia lejos de un evento de mantenimiento de infraestructura, y la instancia permanece en ejecución durante la migración. Esta puede experimentar un corto período de disminución del rendimiento, aunque en la mayoría de las instancias, por lo general, no debería notarse ninguna diferencia. Esto resulta ideal para las instancias que requieren un tiempo de actividad constante y pueden tolerar un corto período de disminución del rendimiento.
Cuando Compute Engine migra tu instancia, informa un evento del sistema que se publica en la lista de operaciones de zona. Puedes revisar este evento viendo las operaciones de Compute Engine para una zona específica. Los eventos de migración en vivo tienen el siguiente tipo de operación:
compute.instances.migrateOnHostMaintenance
Detén y reinicia la instancia (opcional)
Si no deseas que tu instancia realice una migración en vivo, puedes optar por detenerla y, de manera opcional, reiniciarla. En el caso de las VM configuradas para detenerse y reiniciarse de forma opcional, Compute Engine envía una señal de apagado suave a fin de cerrar la instancia, espera 60 segundos para que la instancia se cierre correctamente, finaliza la instancia y la reinicia lejos del evento de mantenimiento. Si la instancia no se cierra de forma correcta en 60 segundos, se finaliza.
Esta opción es ideal para las instancias que exigen un rendimiento máximo y constante. Tu aplicación, en general, está diseñada para manejar fallas o reinicios de instancias.
Cuando Compute Engine detiene y reinicia tus instancias, informa un evento del sistema que se publica en la lista de operaciones de zona. Puedes revisar este evento si visualizas las operaciones de Compute Engine para una zona específica. Los eventos que se detuvieron tienen el siguiente tipo de operación:
compute.instances.terminateOnHostMaintenance
Cuando tu instancia se reinicia, usa el mismo disco de arranque persistente y vuelve a conectar cualquier disco persistente secundario que hayas configurado. Los datos en esos discos se mantienen durante la migración y el reinicio de la instancia.
Los datos de SSD locales no se conservan durante la detención de la instancia. Cuando la instancia se reinicia, crea un SSD local nuevo que debes formatear y activar.
Reinicio automático
Si la instancia se configuró para detenerse cuando hay un evento de mantenimiento, o si esta falla debido a un problema subyacente en el hardware, puedes configurar Compute Engine para que la reinicie de forma automática mediante la configuración del campo automaticRestart
en true
. Esta configuración no se aplica si la instancia se desconecta debido a la acción de un usuario, como la llamada a sudo shutdown
, o durante una interrupción en la zona.
Cuando Compute Engine reinicia tu instancia de forma automática, informa un evento del sistema que se publica en la lista de operaciones de zona. Puedes revisar este evento viendo las operaciones de Compute Engine para una zona específica. Los eventos de reinicio automático tienen el siguiente tipo de operación:
compute.instances.automaticRestart
Ve las operaciones de Compute Engine
Puedes ver una lista de las operaciones completas mediante Google Cloud Console, la herramienta de línea de comandos de gcloud
o la API de Compute Engine.
Console
Si deseas ver una lista de operaciones para tu proyecto, ve a la página Operaciones.
- Para obtener más detalles sobre una operación, haz clic en el resumen de la operación. Por ejemplo, para ver los detalles de migración de la instancia
my-instance
, haz clic en la operación Automatically migrate an instance (Migrar una instancia de forma automática).
gcloud
Si deseas ver una lista de operaciones para tu proyecto con gcloud compute
, usa el subcomando operations list
.
Para ver la lista de operaciones en una zona específica, agrega la marca --filter
.
gcloud compute operations list --filter="zone:(ZONE)"
Reemplaza ZONE
por la zona en la que deseas ver una lista de operaciones. Por ejemplo, si quieres ver la lista de operaciones en us-cental1-c
, ejecuta el siguiente comando:
gcloud compute operations list --filter="zone:(us-central1-c)"
NAME TYPE TARGET HTTP_STATUS STATUS TIMESTAMP
systemevent-1543845145000... compute.instances.migrateOnHostMaintenance us-central1-c/instances/my-instance 200 DONE 2018-12-03T05:52:25.000-08:00
API
Las solicitudes a la API para las operaciones deben especificarse a nivel global, regional o zonal. La migración en vivo, la detención de instancias y los reinicios automáticos son todas operaciones a nivel zonal.
Para las operaciones zonales, haz una solicitud GET
al método zoneOperations.list
.
GET https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/operations
Reemplaza lo siguiente:
PROJECT_ID
: Es el ID del proyecto de esta solicitud.ZONE
: Es la zona para esta solicitud.
Deja el cuerpo de la solicitud vacío.
El siguiente es un resultado de muestra de una solicitud de operación de zona. En él, se muestran los detalles de una migración de host.
{ "kind": "compute#operation", "id": "3216798767364213712", "name": "systemevent-1543845145000-57c1e7574b840-a195b637-5ff74d9b", "zone": "https://www.googleapis.com/compute/v1/projects/my-project/zones/us-central1-c", "operationType": "compute.instances.migrateOnHostMaintenance", "targetLink": "https://www.googleapis.com/compute/v1/projects/my-project/zones/us-central1-c/instances/my-instance", "targetId": "3070988523247098025", "status": "DONE", "statusMessage": "Instance migrated during Compute Engine maintenance.", "user": "system", "progress": 100, "insertTime": "2018-12-03T05:52:25.000-08:00", "startTime": "2018-12-03T05:52:25.000-08:00", "endTime": "2018-12-03T05:52:25.000-08:00", "selfLink": "https://www.googleapis.com/compute/v1/projects/my-project/zones/us-central1-c/operations/systemevent-1543845145000-57c1e7574b840-a195b637-5ff74d9b" }
Configura políticas de disponibilidad
Configura el comportamiento de mantenimiento de una instancia y la configuración de reinicio automático mediante las propiedades onHostMaintenance
y automaticRestart
.
Todas las instancias se configuran con valores predeterminados, a menos que especifiques explícitamente lo contrario.
onHostMaintenance
: Determina el comportamiento cuando ocurre un evento de mantenimiento que podría hacer que la instancia se reinicie.- [Predeterminado]
MIGRATE
: Hace que Compute Engine realice la migración en vivo de una instancia cuando se produce un evento de mantenimiento. TERMINATE
: Detiene una instancia en lugar de migrarla.
- [Predeterminado]
automaticRestart
: Determina el comportamiento cuando una instancia falla o el sistema la detiene.- [Predeterminado]
true
: Compute Engine reinicia una instancia si esta falla o se detiene. false
: Compute Engine no reinicia la instancia si esta falla o se detiene.
- [Predeterminado]
Puedes cambiar las políticas de disponibilidad de una instancia la primera vez que creas una instancia o después de crear la instancia mediante el método setScheduling
.
Opciones de configuración durante la creación de instancias
Console
- En Cloud Console, ve a la página Instancias de VM.
- Haz clic en Crear instancia.
- En la página Crear una instancia nueva, completa las propiedades que quieras para tu instancia.
- Expande la opción Administración, seguridad, discos, herramientas de redes, instancia única.
- En Política de disponibilidad, configura las opciones de Reinicio automático y Mantenimiento en el host.
- Haz clic en Crear para crear la instancia.
gcloud
Para establecer las políticas de disponibilidad de una instancia nueva en gcloud compute
, usa la marca --maintenance-policy
a fin de especificar si la instancia debe migrarse o detenerse. De forma predeterminada, las instancias están configuradas para reiniciarse de manera automática, a menos que proporciones la marca --no-restart-on-failure
.
gcloud compute instances create INSTANCE_NAME \
--maintenance-policy MAINTENANCE_POLICY \
[--no-restart-on-failure]
Reemplaza lo siguiente:
INSTANCE_NAME
: Es el nombre de la instancia.MAINTENANCE_POLICY
: Es la política para esta instancia, ya seaTERMINATE
oMIGRATE
.
API
En la API, realiza una solicitud POST
a la siguiente URL, pero reemplaza el proyecto y la zona con tu ID del proyecto y la zona de la instancia:
https://compute.googleapis.com/compute/v1/projects/myproject/zones/us-central1-f/instances
Usa los parámetros onHostMaintenance
y automaticRestart
como parte del cuerpo de la solicitud:
{
"name": "example-instance",
"description": "Front-end for real-time ingest; don't migrate.",
...
// User options for influencing this Instance's life cycle.
"scheduling": {
"onHostMaintenance": "MIGRATE",
"automaticRestart": true
}
}
Para obtener más información, consulta la documentación de referencia Instancias.
Actualiza las opciones de una instancia
Console
- Ve a la página Instancias de VM en Google Cloud Console.
- Haz clic en la instancia en la que deseas cambiar la configuración. Se mostrará la página de detalles de la instancia.
- En la página de detalles de la instancia, completa los siguientes pasos:
- Haz clic en el botón Editar en la parte superior de la página.
- En Políticas de disponibilidad, actualiza la política según sea necesario. En la sección Políticas de disponibilidad, puedes configurar las opciones de Mantenimiento en el host y Reinicio automático.
- Haz clic en Guardar.
gcloud
Para actualizar las políticas de disponibilidad de una instancia, usa el comando instances set-scheduling
con los mismos parámetros y marcas que usaste en el comando de creación de instancia anterior:
gcloud compute instances set-scheduling INSTANCE_NAME \
--maintenance-policy MAINTENANCE_POLICY \
[--no-restart-on-failure | --restart-on-failure]
Reemplaza lo siguiente:
INSTANCE_NAME
: Es el nombre de la instancia.MAINTENANCE_POLICY
: Es la política para esta instancia, ya seaTERMINATE
oMIGRATE
.
API
En la API, puedes realizar una solicitud a la siguiente URL, en la que debes reemplazar el ID del proyecto, su zona y el nombre de la instancia por el ID de tu proyecto, su zona y el nombre de tu instancia:
https://compute.googleapis.com/compute/v1/projects/example-project/zones/us-central1-f/instances/example-instance/setScheduling
El cuerpo de la solicitud debe contener el valor nuevo de las políticas de disponibilidad:
{
"onHostMaintenance": "MIGRATE",
"automaticRestart": true
}
Para obtener más información, consulta la documentación de referencia instances().setScheduling
.
Prueba las políticas de disponibilidad
Después de configurar tus políticas de disponibilidad, puedes simular eventos de mantenimiento para probar los efectos de estas políticas en tus aplicaciones. Por ejemplo, podrías simular un evento de mantenimiento en tus instancias en una de las siguientes situaciones:
- Tienes instancias configuradas para la migración en vivo durante los eventos de mantenimiento y necesitas probar los efectos de este tipo de migración en tus aplicaciones.
- Tienes trabajos por lotes en ejecución en instancias de VM interrumpibles y necesitas probar de qué modo tus aplicaciones manejan la interrupción y el cierre de una instancia o más.
- Las instancias están configuradas para que se detengan y reinicien durante los eventos de mantenimiento en lugar de migrar en vivo. Debes probar de qué forma tus aplicaciones manejan este proceso de cierre y reinicio.
Los eventos de mantenimiento simulados están sujetos a Límites de frecuencia de API específicos.
Puedes simular un evento de mantenimiento en una instancia con la herramienta de línea de comandos de gcloud
o con una solicitud a la API.
gcloud
Ejecuta el comando instances simulate-maintenance-event
para forzar a una instancia a activar su acción de política de mantenimiento configurada:
gcloud compute instances simulate-maintenance-event INSTANCE_NAME \
--zone ZONE
Reemplaza lo siguiente:
INSTANCE_NAME
: Es el nombre de la instancia en la que deseas simular el evento de mantenimiento. Puedes especificar varios nombres de instancias separados por un solo espacio para simular los eventos de mantenimiento en más de una instancia en la misma zona. Por ejemplo,instance-1 instance-2 instance-3
.ZONE
: Es la zona en la que se encuentra la instancia.
API
En la API, haz una solicitud al método compute.instances.simulateMaintenanceEvent
en la API de Compute Engine:
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/INSTANCE_NAME/simulateMaintenanceEvent
Reemplaza lo siguiente:
PROJECT_ID
: Es el ID del proyecto de esta solicitud.INSTANCE_NAME
: Es el nombre de la instancia en la que deseas simular el evento de mantenimiento.ZONE
: Es la zona en la que se encuentra la instancia.
Para obtener más información sobre este método, consulta la documentación de referencia instances().simulateMaintenanceEvent
.
¿Qué sigue?
- Obtén más información sobre la migración en vivo.
- Aprende a detectar un evento de migración en vivo.