Reparaciones automáticas de instancias de Azure Virtual Machine Scale Sets
La habilitación de las reparaciones automáticas de instancias para Azure Virtual Machine Scale Sets ayuda a lograr una alta disponibilidad para las aplicaciones al mantener un conjunto de instancias correctas. Si una extensión de mantenimiento de aplicación o sondeos de estado del equilibrador de carga encuentran una instancia incorrecta, las reparaciones automáticas de instancias intentarán recuperar la instancia desencadenando acciones de reparación, como eliminar la instancia incorrecta y crear una nueva para reemplazarla, restablecer la instancia incorrecta, o reiniciar la instancia incorrecta.
Requisitos para el uso de reparaciones automáticas de instancias
Habilitación de la supervisión del estado de la aplicación para el conjunto de escalado
El conjunto de escalado debe tener la supervisión del estado de la aplicación para las instancias habilitadas. La supervisión de estado se puede realizar mediante la extensión Estado de la aplicación o los sondeos de estado del equilibrador de carga, donde solo se puede habilitar uno cada vez. La extensión de mantenimiento de la aplicación o el equilibrador de carga sondea el punto de conexión de la aplicación configurado en las instancias de máquina virtual para determinar el estado de mantenimiento de la aplicación. El orquestador del conjunto de escalado usa este estado de mantenimiento para supervisar el estado de las instancias y realizar reparaciones cuando sea necesario.
Configuración del punto de conexión para proporcionar el estado de mantenimiento
Antes de habilitar la directiva de reparaciones automáticas de instancias, asegúrese de que las instancias del conjunto de escalado tienen configurado el punto de conexión de una aplicación para emitir el estado de mantenimiento de la aplicación. Para configurar el estado de mantenimiento en la extensión Estado de la aplicación, puede usar Binary Health States o Rich Health States. Para configurar el estado de mantenimiento mediante sondeos de estado de Load Balancer, consulte Comportamiento del sondeo activo.
En el caso de las instancias marcadas con el estado "Incorrecto" o "Desconocido" (el estado Desconocido solo está disponible con la extensión Estado de la aplicación: Rich Health States), el conjunto de escalado desencadena las reparaciones automáticas. Asegúrese de que el punto de conexión de la aplicación está configurado correctamente antes de habilitar la directiva de reparaciones automáticas para evitar reparaciones de instancias no intencionadas mientras se configura el punto de conexión.
Versión de API
La directiva de reparaciones automáticas es compatible con Compute API versión 2018-10-01 o superior.
La configuración de repairAction
para Restablecer imagen inicial y Reiniciar es compatible con las versiones de API de proceso 2021-11-01 o posteriores.
Restricciones en los movimientos de recursos o suscripciones
Actualmente no se admiten los movimientos de recursos o suscripciones para los conjuntos de escalado cuando la característica de reparaciones automáticas está habilitada.
Restricción para los conjuntos de escalado de Service Fabric
Esta característica no se admite actualmente para los conjuntos de escalado de Service Fabric.
Restricción para máquinas virtuales con errores de aprovisionamiento
Actualmente, las reparaciones automáticas no admiten escenarios en los que una instancia de máquina virtual se marca como Incorrecta debido a un error de aprovisionamiento. Las máquinas virtuales deben inicializarse correctamente para habilitar la supervisión de estado y las funcionalidades de reparación automática.
¿Cómo funciona la reparación automática de instancias?
La característica de reparación automática de instancias se basa en la supervisión del estado de las instancias individuales de un conjunto de escalado. Las instancias de máquina virtual de un conjunto de escalado se pueden configurar para emitir el estado de mantenimiento de la aplicación mediante la extensión de estado de aplicación o los sondeos de estado del equilibrador de carga. Si se detecta un estado incorrecto de una instancia, el conjunto de escalado realizará una acción de reparación preconfigurada en la instancia incorrecta. Las reparaciones de instancia automáticas se pueden habilitar en el modelo de conjunto de escalado de máquinas virtuales mediante el objeto automaticRepairsPolicy
.
Así funciona el proceso de reparaciones automáticas de instancias funciona:
- La extensión de estado de aplicación o los sondeos de estado del equilibrador de carga hacen ping en el punto de conexión de la aplicación dentro de cada máquina virtual del conjunto de escalado para obtener el estado de mantenimiento de la aplicación para cada instancia.
- Si el punto de conexión responde con un estado 200 (correcto), la instancia se marca con estado "Correcto". En todos los demás casos (incluido si no se puede tener acceso al punto de conexión), la instancia se marca con estado "Incorrecto".
- Cuando se detecta un estado incorrecto de una instancia, el conjunto de escalado aplica la acción de reparación preconfigurada (la opción predeterminada es Reemplazar) en la instancia incorrecta.
- Las reparaciones de instancias se realizan en lotes. En un momento dado, no se reparan más del 5 % del total de instancias del conjunto de escalado. Si un conjunto de escalado tiene menos de 20 instancias, las reparaciones se realizan para una instancia incorrecta a la vez.
- El proceso anterior continúa hasta que se reparen todas las instancias incorrectas del conjunto de escalado.
Acciones de reparación disponibles
Hay tres acciones de reparación disponibles para las reparaciones de instancias automáticas: Reemplazar, Restablecer imagen inicial y Reiniciar. La acción de reparación predeterminada es Reemplazar, pero puede configurar las reparaciones automáticas para que usen Restablecer imagen inicial o Reiniciar modificando la configuración repairAction
del objeto automaticRepairsPolicy
.
Reemplazar elimina la instancia incorrecta y crea una nueva instancia para reemplazarla. El modelo de conjunto de escalado de máquinas virtuales más reciente se usa para crear la nueva instancia. Esta acción de reparación es la predeterminada.
Restablecer imagen inicial aplica la operación de restablecer imagen inicial a la instancia incorrecta.
Reiniciar aplica la operación de reiniciar a la instancia incorrecta.
La siguiente tabla compara las diferencias entre las tres acciones de reparación:
Acción de reparación | ¿Se conserva el identificador de instancia de la máquina virtual? | ¿Se conserva la dirección IP privada? | ¿Se conserva el disco de datos administrados? | ¿Se conserva el disco de sistema operativo administrado? | ¿Se conserva el disco (temporal) local? |
---|---|---|---|---|---|
Reemplazar (valor predeterminado) | No | N.º | N.º | N.º | No |
Restablecer imagen inicial | Sí | Sí | Sí | No | Sí |
Reiniciar | Sí | Sí | Sí | Sí | Sí |
Para obtener más información sobre cómo actualizar la acción de reparación en la directiva de reparaciones automáticas, consulte la sección configurar una acción de reparación en la directiva de reparaciones automáticas.
Lotes
Las operaciones de reparaciones automáticas de instancias se realizan en lotes. En un momento dado, no se reparan más del 5 % de las instancias del conjunto de escalado mediante la directiva de reparaciones automáticas. Este proceso ayuda a evitar la eliminación simultánea y la nueva creación de un gran número de instancias si se encuentran en estado incorrecta al mismo tiempo.
Período de gracia
Cuando una instancia pasa por una operación de cambio de estado debido a una acción PUT, PATCH o POST realizada en el conjunto de escalado, cualquier acción de reparación en esa instancia se realiza solo después de que finalice el período de gracia. El período de gracia es la cantidad de tiempo que se permite que la instancia vuelva al estado correcto. El período de gracia se inicia después de que se haya completado el cambio de estado, lo que ayuda a evitar las operaciones prematuras o accidentales de reparación. El período de gracia se respeta para cualquier instancia recién creada en el conjunto de escalado, incluida la creada como resultado de la operación de reparación. El período de gracia se especifica en minutos en formato ISO 8601 y se puede establecer mediante la propiedad automaticRepairsPolicy.gracePeriod. El período de gracia puede oscilar entre 10 minutos y 90 minutos, y tiene un valor predeterminado de 10 minutos.
Suspensión de reparaciones
Virtual Machine Scale Sets proporciona la capacidad de suspender temporalmente la reparación automática de instancias si es necesario. El parámetro serviceState para las reparaciones automáticas en la propiedad orchestrationServices en la vista de instancias del conjunto de escalado de máquinas virtuales muestra el estado actual de las reparaciones automáticas. Cuando un conjunto de escalado participa en reparaciones automáticas, el valor del parámetro serviceState se establece en Running. Cuando se suspenden las reparaciones automáticas para un conjunto de escalado, el parámetro serviceState se establece en Suspended. Si automaticRepairsPolicy se define en un conjunto de escalado, pero la característica de reparaciones automáticas no está habilitada, el parámetro serviceState se establece en No operativo.
Si las instancias que se acaban de crear para reemplazar a las que tienen un estado incorrecto en un conjunto de escalado siguen siendo incorrectas incluso después de realizar varias veces las operaciones de reparación, como medida de seguridad, la plataforma actualiza el parámetro serviceState para las reparaciones automáticas a Suspended. Puede reanudar de nuevo las reparaciones automáticas si establece el valor de serviceState para las reparaciones automáticas en Running. En la sección sobre visualización y actualización del estado del servicio de la directiva de reparaciones automáticas encontrará instrucciones detalladas para su conjunto de escalado.
También puede configurar reglas de alerta de Azure para supervisar los cambios en serviceState y recibir notificaciones si se suspenden las reparaciones automáticas en el conjunto de escalado. Para más información, consulte Uso de reglas de alertas de Azure para supervisar los cambios en el estado del servicio automático de reparaciones de instancias.
Protección de instancias y reparaciones automáticas
Si una instancia de un conjunto de escalado está protegida por la aplicación de una de las directivas de protección, las reparaciones automáticas no se realizan en esa instancia. Este comportamiento se aplica tanto a las directivas de protección: Proteger de la reducción horizontal y Proteger contra acciones de conjunto de escalado.
Notificación de finalización y reparaciones automáticas
Si la característica de notificación de finalización está habilitada en un conjunto de escalado, durante una operación de Reemplazar, la eliminación de una instancia incorrecta sigue a la configuración de la notificación de finalización. Una notificación de finalización se envía a través de Azure Metadata Service, Scheduled Events, y la eliminación de la instancia se retrasa durante el tiempo de espera de retraso configurado. Sin embargo, la creación de una nueva instancia para reemplazar la que tiene un estado incorrecto no espera a que se complete el tiempo de espera de retraso.
Habilitación de la directiva de reparaciones automáticas al crear un nuevo conjunto de escalado
Importante
A partir de noviembre de 2023, los conjuntos de escalado de máquinas virtuales creados con PowerShell y la CLI de Azure tendrán como valor predeterminado el modo de orquestación flexible si no se especifica ningún modo de orquestación. Para más información sobre este cambio y las acciones que debe realizar, vaya a Cambio importante para clientes de PowerShell o la CLI de VMSS: Centro de comunidad de Microsoft
Para habilitar la directiva de reparaciones automáticas al crear un nuevo conjunto de escalado, asegúrese de que se cumplen todos los requisitos para optar a esta característica. El punto de conexión de la aplicación debe configurarse correctamente para las instancias del conjunto de escalado a fin de evitar la activación de reparaciones imprevistas mientras se configura el punto de conexión. En el caso de los conjuntos de escalado recién creados, cualquier reparación de instancias se realiza solo después de que se complete el período de gracia. Para habilitar la reparación automática de la instancia en un conjunto de escalado, use el objeto automaticRepairsPolicy en el modelo del conjunto de escalado de máquinas virtuales.
También puede usar esta plantilla de inicio rápido para implementar un conjunto de escalado de máquinas virtuales. El conjunto de escalado tiene un sondeo de estado de equilibrador de carga y reparaciones de instancias automáticas con un período de gracia de 30 minutos.
Los pasos siguientes permiten habilitar la directiva de reparaciones automáticas al crear un nuevo conjunto de escalado.
- Vaya a Conjuntos de escalado de máquinas virtuales.
- Seleccione + Agregar para crear un nuevo conjunto de escalado.
- Vaya a la pestaña Mantenimiento.
- Busque la sección Mantenimiento.
- Habilite la opción Supervisar el mantenimiento de la aplicación.
- Busque la sección Directiva de reparación automática.
- Active la opción Reparación automática.
- En Período de gracia (min), especifique el período de gracia en minutos; los valores permitidos están comprendidos entre 10 y 90 minutos.
- Cuando haya terminado de crear el nuevo conjunto de escalado, seleccione el botón Revisar y crear.
Habilitación de la directiva de reparaciones automáticas al actualizar un conjunto de escalado existente
Antes de habilitar la directiva de reparaciones automáticas en un conjunto de escalado existente, asegúrese de que se cumplen todos los requisitos para optar a esta característica. El punto de conexión de la aplicación debe configurarse correctamente para las instancias del conjunto de escalado a fin de evitar la activación de reparaciones imprevistas mientras se configura el punto de conexión. Para habilitar la reparación automática de la instancia en un conjunto de escalado, use el objeto automaticRepairsPolicy en el modelo del conjunto de escalado de máquinas virtuales.
Después de actualizar el modelo de un conjunto de escalado existente, asegúrese de que el modelo más reciente se aplique a todas las instancias de la escala. Consulte las instrucciones en Actualización de las máquinas virtuales con el modelo de conjunto de escalado más reciente.
Puede modificar la directiva de reparaciones automáticas de un conjunto de escalado existente a través de Azure Portal.
Nota:
Habilite la Extensión de estado de la aplicación o los sondeos de estado de Load Balancer en Virtual Machine Scale Sets antes de iniciar los pasos siguientes.
- Vaya a un conjunto de escalado de máquinas virtuales existente.0
- En Configuración en el menú de la izquierda, seleccione Mantenimiento y reparación.
- Habilite la opción Supervisar el mantenimiento de la aplicación.
Si va a supervisar el conjunto de escalado mediante la extensión Estado de la aplicación:
Elija la extensión Estado de la aplicación desde la aplicación en la lista desplegable de Supervisión de estado de la aplicación.
En la lista desplegable Protocolo, elija el protocolo de red usado por la aplicación para notificar el estado. Seleccione el protocolo adecuado en función de los requisitos de la aplicación. Las opciones de protocolo son HTTP, HTTPS o TCP.
En el cuadro de configuración del Número de puerto, escriba el puerto de red que se usa para supervisar el estado de la aplicación.
En Ruta de acceso, proporcione la ruta de acceso del punto de conexión de la aplicación (por ejemplo, "/") que se usa para notificar el estado de la aplicación.
Nota:
La extensión de estado de la aplicación hace ping en la ruta de acceso dentro de cada máquina virtual del conjunto de escalado para obtener el estado de mantenimiento de la aplicación para cada instancia. Si usa los Estados de mantenimiento binarios y el punto de conexión responde con un estado 200 (correcto), la instancia se marca con el estado "Correcto". En todos los demás casos (incluido si no se puede tener acceso al punto de conexión), la instancia se marca con estado "Incorrecto". Para obtener más opciones de estado de mantenimiento, explore Estados de mantenimiento enriquecidos.
Si va a supervisar el conjunto de escalado mediante sondeos de estado de SLB:
- Elija sondeo del equilibrador de carga en la lista desplegable de monitor de mantenimiento de la aplicación. Para el sondeo de estado de Load Balancer, seleccione un sondeo de estado existente o cree un nuevo sondeo de estado para la supervisión.
Para habilitar las reparaciones automáticas:
- Busque la sección Directiva de reparación automática.
- Active la opción Reparación automática.
- En Período de gracia (min), especifique el período de gracia en minutos. Los valores permitidos están comprendidos entre 10 y 90 minutos.
- Cuando finalice, seleccione Guardar.
Configurar una acción de reparación en la directiva de reparaciones automáticas
La configuración repairAction
en automaticRepairsPolicy
permite especificar la acción de reparación deseada realizada en respuesta a una instancia incorrecta. Si va a actualizar la acción de reparación en una directiva de reparaciones automáticas existente, primero debe deshabilitar las reparaciones automáticas en el conjunto de escalado y volver a habilitarla con la acción de reparación actualizada. Este proceso se ilustra en los siguientes ejemplos.
En este ejemplo se muestra cómo actualizar la acción de reparación en un conjunto de escalado con una directiva de reparaciones automáticas existente. Use la API versión 2021-11-01 o posteriores.
Deshabilitar la directiva de reparaciones automáticas existentes en el conjunto de escalado
PUT or PATCH on '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/virtualMachineScaleSets/{vmScaleSetName}?api-version=2021-11-01'
{
"properties": {
"automaticRepairsPolicy": {
"enabled": "false"
}
}
}
Volver a habilitar la directiva de reparaciones automáticas con la acción de reparación deseada
PUT or PATCH on '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/virtualMachineScaleSets/{vmScaleSetName}?api-version=2021-11-01'
{
"properties": {
"automaticRepairsPolicy": {
"enabled": "true",
"gracePeriod": "PT40M",
"repairAction": "Reimage"
}
}
}
Visualización y actualización del estado de servicio de la directiva de reparaciones automáticas de instancias
Use Get Instance View con la API versión 2019-12-01 o superior para conjuntos de escalado de máquinas virtuales para ver el parámetro serviceState para las reparaciones automáticas en la propiedad orchestrationServices.
GET '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/virtualMachineScaleSets/{vmScaleSetName}/instanceView?api-version=2019-12-01'
{
"orchestrationServices": [
{
"serviceName": "AutomaticRepairs",
"serviceState": "Running"
}
]
}
Use Establecer estado del servicio de orquestación para suspender o reanudar serviceState para reparaciones automáticas.
POST '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/virtualMachineScaleSets/{vmScaleSetName}/instanceView?api-version=2023-07-01'
{
"serviceName": "AutomaticRepairs",
"action": "Suspend"
}
Solución de problemas
Error al habilitar la directiva de reparaciones automáticas
Si recibe un error "BadRequest" con un mensaje que indica que "No se pudo encontrar el miembro 'automaticRepairsPolicy' en el objeto de tipo 'properties'", compruebe la versión de la API usada para el conjunto de escalado de máquinas virtuales. Se requiere la versión 2018-10-01 de la API o una posterior para esta característica.
La instancia no se repara incluso cuando la directiva está habilitada.
La instancia puede estar en el período de gracia. Este período es el período de tiempo que se debe esperar después de cualquier cambio de estado en la instancia antes de realizar reparaciones, lo que ayuda a evitar reparaciones prematuras o accidentales. La acción de reparar debe realizarse una vez completado el período de gracia de la instancia.
Visualización del estado de mantenimiento de la aplicación para instancias del conjunto de escalado
Puede usar Get Instance View API para las instancias de un conjunto de escalado de máquinas virtuales para ver el estado de mantenimiento de la aplicación. Con Azure PowerShell, puede usar el cmdlet Get-AzVmssVM con la marca -InstanceView. El estado de mantenimiento de la aplicación se proporciona en la propiedad vmHealth.
En Azure Portal, también puede ver el estado de mantenimiento. Vaya a un conjunto de escalado existente, seleccione Instancias en el menú de la izquierda y examine la columna Estado de mantenimiento para ver el estado de mantenimiento de cada instancia del conjunto de escalado.
Pasos siguientes
Aprenda a configurar la extensión de estado de la aplicación o los sondeos de estado del equilibrador de carga para los conjuntos de escalado.