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 habilitada. 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.

Configurar el punto de conexión para proporcionar el estado de salud

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 Estados de mantenimiento binario o Estados de mantenimiento detallados. 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 deseadas, mientras se configura el punto de conexión.

Versión de API

La directiva de reparaciones automáticas es compatible con la versión de la API de proceso 2018-10-01 o posterior.

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.

El proceso de reparación automática de instancias es el siguiente:

  1. 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.
  2. Si el punto de conexión responde con un estado 200 (OK), la instancia se marca como "Healthy". En todos los demás casos (incluido si no se puede acceder al extremo), la instancia se marca como "No saludable".
  3. 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.
  4. 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.
  5. 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.

Nota:

Las reparaciones automáticas con la acción "Reemplazar" siempre crearán nuevas máquinas virtuales basadas en el modelo de VMSS actual. Si ha asociado máquinas virtuales con configuraciones que difieren del modelo de VMSS, esas diferencias no se conservarán. La nueva máquina virtual coincidirá con el modelo de VMSS actual, no la configuración de la máquina virtual eliminada.

  • 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.
  • Recrear imagen aplica la operación de recrear imagen a la instancia en mal estado.
  • Reiniciar aplica la operación de reinicio a la instancia en mal estado.

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 No No No No
Restablecer imagen inicial No
Reiniciar

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.

Procesamiento por lotes

Las operaciones automáticas de reparación 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 el tiempo que se concede a la instancia para que vuelva a un estado óptimo. 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

Los conjuntos de escalado de máquinas virtuales permiten suspender temporalmente las reparaciones automáticas 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 En ejecución. Cuando se suspenden las reparaciones automáticas para un conjunto de escalado, el parámetro serviceState se establece en Suspendido. 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 Suspendido. 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 de serviceState y recibir notificaciones si las reparaciones automáticas quedan suspendidas en su 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 usar esta funcionalidad. 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. En el inicio rápido, el conjunto de escalado tiene un sondeo de estado del equilibrador de carga y reparaciones automáticas de instancias habilitadas con un período de gracia configurado de 30 minutos.

Los pasos siguientes permiten habilitar la directiva de reparaciones automáticas al crear un nuevo conjunto de escalado.

  1. Vaya a Conjuntos de escalado de máquinas virtuales.
  2. Seleccione + Agregar para crear un nuevo conjunto de escalado.
  3. Vaya a la pestaña Mantenimiento.
  4. Busque la sección Mantenimiento.
  5. Habilite la opción Supervisar el mantenimiento de la aplicación.
  6. Busque la sección Directiva de reparación automática.
  7. Active la opción Reparación automática.
  8. 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.
  9. Cuando haya terminado de crear el nuevo conjunto de escalado, seleccione el botón Revisar y crear.

Habilitar la política de reparaciones automáticas al actualizar un conjunto de escalado existente

Antes de habilitar la política de reparaciones automáticas en un conjunto de escalado existente, asegúrese de que se cumplan todos los requisitos para habilitar 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.

  1. Vaya a un Virtual Machine Scale Set.0
  2. En Configuración en el menú de la izquierda, seleccione Mantenimiento y reparación.
  3. 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:

  1. Elija la extensión Application Health en la lista desplegable del monitor de estado de la aplicación.

  2. 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.

  3. 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.

  4. 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 acceder al extremo), la instancia se marca como "No saludable". Para ver más opciones de estado de salud, consulte Estados de salud enriquecidos.

Si va a supervisar el conjunto de escalado mediante sondeos de estado de SLB:

  • Seleccione sonda del equilibrador de carga en la lista desplegable Monitor de estado de la aplicación.- Para la sonda de estado del equilibrador de carga, seleccione una sonda de estado existente o cree una nueva sonda de estado para supervisarla.

Para habilitar las reparaciones automáticas:

  1. Busque la sección Directiva de reparación automática.
  2. Active la opción Reparación automática.
  3. 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.
  4. Cuando finalice, seleccione Guardar.

Configurar una acción de reparación en la directiva de reparaciones automáticas

La configuración repairAction en automaticRepairsPolicy le permite especificar la acción de reparación deseada que se realiza en respuesta a una instancia en mal estado. 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 versión 2021-11-01 de la API o una posterior.

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 Virtual Machine Scale Set 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"
    }
  ]
}

Utilice Establecer el estado del servicio de orquestación para suspender o reanudar el serviceState para las 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 podría estar en 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 reparación debe realizarse una vez finalizado 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 la Get Instance View API con instancias de un conjunto de escalado de máquinas virtuales para ver el estado de salud de la aplicación. Con Azure PowerShell, puede usar el cmdlet Get-AzVmssVM con la marca -InstanceView. El estado de salud 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.