Supervisión de instancias de App Service mediante Comprobación de estado
Nota:
A partir del 1 de junio de 2024, todas las aplicaciones de App Service recién creadas tendrán la opción de generar un nombre de host predeterminado único mediante la convención de nomenclatura <app-name>-<random-hash>.<region>.azurewebsites.net
. Los nombres de aplicación existentes permanecerán sin cambios.
Ejemplo: myapp-ds27dh7271aah175.westus-01.azurewebsites.net
Para más información, consulte Nombre de host predeterminado único para el recurso App Service.
En este artículo se describe cómo usar Comprobación de estado en Azure Portal para supervisar las instancias de App Service. La comprobación de estado aumenta la disponibilidad de la aplicación al volver a enrutar las solicitudes fuera de las instancias en estado incorrecto y reemplazar las instancias si siguen en estado incorrecto. Para ello, haga ping a la aplicación web cada minuto, a través de una ruta de acceso que elija.
Tenga en cuenta que /api/health es solo un ejemplo. No hay ninguna ruta de acceso de Comprobación de estado predeterminada. Debe asegurarse de que la ruta de acceso que elija es una ruta de acceso válida que exista en la aplicación.
Funcionamiento de Comprobación de estado
- Cuando se proporciona una ruta de acceso en la aplicación, Comprobación de estado hace ping en esta ruta de acceso a todas las instancias de la aplicación App Service en intervalos de 1 minuto.
- Si una aplicación web que se ejecuta en una instancia determinada no responde con un código de estado entre 200 y 299 (ambos incluidos) después de 10 solicitudes, App Service determina que la instancia es incorrecta y la quita del equilibrador de carga de la aplicación web. El número necesario de solicitudes con error para que una instancia se considere en estado incorrecto se puede configurar para un mínimo de dos solicitudes.
- Después de quitar la instancia, Comprobación de estado continúa haciendo ping. Si la instancia comienza a responder con un código de estado de mantenimiento (200-299), la instancia se devuelve al equilibrador de carga.
- Si la aplicación web que se ejecuta en una instancia sigue siendo incorrecta durante una hora, la instancia se reemplaza por una nueva.
- Al escalar horizontalmente, App Service hace ping a la ruta de acceso de comprobación de estado para asegurarse de que las nuevas instancias estén listas.
Nota
- La comprobación de estado no sigue 302 redirecciones.
- A lo sumo, se reemplaza una instancia por hora, con un máximo de tres instancias al día por plan de App Service.
- Si Comprobación de estado envía el estado
Waiting for health check response
, es probable que se deba a un error en la comprobación debido a un código de estado HTTP 307, lo que puede ocurrir si tiene habilitada la redirección HTTPS pero se ha deshabilitadoHTTPS Only
.
Habilitación de la comprobación de estado
- Para habilitar la comprobación de estado, vaya a Azure Portal y seleccione la aplicación App Service.
- En Supervisión, seleccione Comprobación de estado.
- Seleccione Habilitar y proporcione una ruta de acceso válida a una dirección URL para la aplicación, por ejemplo,
/health
o/api/health
. - Seleccione Guardar.
Nota
- El plan de App Service se debe escalar a dos o más instancias para utilizar completamente la comprobación de estado.
- La ruta de acceso de comprobación de estado debe comprobar los componentes críticos de la aplicación. Por ejemplo, si la aplicación depende de una base de datos y de un sistema de mensajería, el punto de conexión de comprobación de estado debe conectarse a esos componentes. Si la aplicación no se puede conectar a un componente crítico, la ruta de acceso debe devolver un código de respuesta de nivel 500 para indicar que la aplicación tiene un estado incorrecto. Además, si la ruta de acceso no devuelve una respuesta en el plazo de un minuto, el anclaje de Comprobación de estado se considera incorrecto.
- Al seleccionar la ruta de acceso de Comprobación de estado, asegúrese de seleccionar una ruta de acceso que devuelva un código de estado 200 solo cuando la aplicación esté totalmente activada.
- Para usar Comprobación de estado en una aplicación de funciones, debe usar un plan de hospedaje premium o dedicado.
- Puede encontrar detalles sobre Comprobación de estado en las aplicaciones de funciones aquí: Supervisión de aplicaciones de funciones mediante Comprobación de estado.
Precaución
Los cambios de configuración de la comprobación de estado reinician la aplicación. Para minimizar el impacto en las aplicaciones de producción, se recomienda configurar los espacios de ensayo y cambiar a producción.
Configuración
Además de configurar las opciones de la comprobación de estado, también puede configurar las siguientes opciones de la aplicación:
Nombre del valor de configuración de la aplicación | Valores permitidos | Descripción |
---|---|---|
WEBSITE_HEALTHCHECK_MAXPINGFAILURES |
2 - 10 | Número necesario de solicitudes con error para que una instancia se considere en estado incorrecto y se quite del equilibrador de carga. Por ejemplo, cuando se establece en 2 , las instancias se quitan después de dos pings con errores. (El valor predeterminado es 10 ). |
WEBSITE_HEALTHCHECK_MAXUNHEALTHYWORKERPERCENT |
1 - 100 | De forma predeterminada, para evitar sobrecargar las instancias correctas restantes, no se excluirá más de la mitad de las instancias del equilibrador de carga a la vez. Por ejemplo, si un plan de App Service se escala a cuatro instancias y tres son incorrectas, se excluirán dos. Las otras dos instancias (una correcta y otra incorrecta) seguirán recibiendo solicitudes. En un escenario en el que todas las instancias están en estado incorrecto, no se excluye ninguna. Para invalidar este comportamiento, establezca esta configuración de la aplicación en un valor entre 1 y 100 . Un valor mayor significa que se quitan más instancias incorrectas. (El valor predeterminado es 50 ). |
Autenticación y seguridad
Comprobación de estado se integra con las características de autenticación y autorización de App Service. No se requiere ninguna configuración adicional si estas características de seguridad están habilitadas.
Si usa un sistema de autenticación propio, la ruta de comprobación de estado debe permitir el acceso anónimo. Para proporcionar seguridad para el punto de conexión de Comprobación de estado, primero debe usar características como restricciones de IP, certificados de cliente o una red virtual para restringir el acceso a la aplicación. Una vez que tenga esas características preparadas, podrá autenticar la solicitud de Comprobación de estado inspeccionando el encabezado x-ms-auth-internal-token
y validando que este coincida con el hash SHA256 de la variable de entorno WEBSITE_AUTH_ENCRYPTION_KEY
. Si estos elementos coinciden, significará que la solicitud de Comprobación de estado es válida y se ha originado en App Service.
Nota:
Para la autenticación de Azure Functions, la función que actúa como punto de conexión de Comprobación de estado debe permitir el acceso anónimo.
using System;
using System.Text;
/// <summary>
/// Method <c>HeaderMatchesEnvVar</c> returns true if <c>headerValue</c> matches WEBSITE_AUTH_ENCRYPTION_KEY.
/// </summary>
public Boolean HeaderMatchesEnvVar(string headerValue) {
var sha = System.Security.Cryptography.SHA256.Create();
String envVar = Environment.GetEnvironmentVariable("WEBSITE_AUTH_ENCRYPTION_KEY");
String hash = System.Convert.ToBase64String(sha.ComputeHash(Encoding.UTF8.GetBytes(envVar)));
return hash == headerValue;
}
Nota:
El encabezado x-ms-auth-internal-token
solo está disponible en App Service para Windows.
Instancias
Una vez habilitada Comprobación de estado, puede reiniciar y supervisar el estado de las instancias de la aplicación desde la pestaña instancias. La pestaña de instancias muestra el nombre de su instancia y el estado de la instancia de esa aplicación. También puede reiniciar manualmente la instancia desde esta pestaña.
Si el estado de su instancia de aplicación "no es seguro", puede reiniciar la instancia manualmente utilizando el botón de reinicio de la tabla. Tenga en cuenta que cualquier otra aplicación hospedada en el mismo plan de App Service que la instancia también se verá afectada por el reinicio. Si hay otras aplicaciones que usan el mismo plan de App Service que la instancia, se mostrarán en la hoja de apertura del botón Reiniciar.
Si reinicia la instancia y se produce un error en el proceso de reinicio, se le dará la opción de reemplazar el trabajo. (Solo se puede reemplazar una instancia por hora). Esto también afectará a las aplicaciones que usen el mismo plan de App Service.
En el caso de las aplicaciones de Windows, también puede ver los procesos a través del Explorador de procesos. Esto proporciona más información sobre los procesos de la instancia, incluido el recuento de subprocesos, la memoria privada y el tiempo total de CPU.
Recopilación de la información de diagnóstico
Para las aplicaciones de Windows, tiene la opción de recopilar información de diagnóstico en la pestaña Comprobación de estado. La habilitación de la recopilación de diagnósticos agrega una regla de recuperación automática que crea volcados de memoria para instancias incorrectas y las guarda en una cuenta de almacenamiento designada. Al habilitar esta opción, se cambiarán las configuraciones de recuperación automática. Si ya existen reglas de recuperación automática, se recomienda configurarlas a través de los diagnósticos de App Service.
Una vez habilitada la recopilación de diagnósticos, puede crear una cuenta de almacenamiento o elegir una existente para los archivos. Solo puede seleccionar cuentas de almacenamiento en la misma región que la aplicación. Tenga en cuenta que, al guardar, se reiniciará la aplicación. Después de guardar, si se detecta que las instancias del sitio son incorrectas después de ping continuos, puede ir al recurso de la cuenta de almacenamiento y ver los volcados de memoria.
Supervisión
Después de proporcionar la ruta de acceso de la comprobación de estado de la aplicación, puede supervisar el estado del sitio mediante Azure Monitor. En la hoja Comprobación de estado del portal, seleccione Métricas en la barra de herramientas superior. Se abre una nueva hoja en la que puede ver el historial de estado de mantenimiento del sitio y crear una nueva regla de alertas. Las métricas de Comprobación de estado agregarán los pings correctos y mostrarán errores solo cuando se considere que la instancia tiene un estado incorrecto en función de la configuración de Comprobación de estado. Para obtener más información sobre la supervisión de los sitios, consulte Cuotas y alertas de Azure App Service.
Limitaciones
- Comprobación de estado puede activarse para los planes de App Service Gratis y Compartido, para que pueda tener métricas del estado del sitio y configurar alertas. Sin embargo, dado que los sitios Gratis y Compartidos no se pueden escalar horizontalmente, las instancias que no funcionen correctamente no serán reemplazadas. Debe escalar verticalmente al nivel Básico o superior para poder escalar horizontalmente a dos o más instancias y obtener todas las ventajas de Comprobación de estado. Esto se recomienda para las aplicaciones orientadas a producción, ya que aumenta la disponibilidad y el rendimiento de la aplicación.
- Un plan de App Service puede tener un máximo de una instancia incorrecta reemplazada por hora y, como máximo, tres instancias al día.
- Hay un límite no configurable en la cantidad total de instancias reemplazadas por Comprobación de estado por unidad de escalado. Si se alcanza este límite, no se reemplazarán las instancias con estado incorrecto. Este valor se restablece cada 12 horas.
Preguntas más frecuentes
¿Qué ocurre si mi aplicación se ejecuta en una sola instancia?
Si la aplicación solo se escala a una instancia y queda en estado incorrecto, no se quitará del equilibrador de carga, ya que eso haría que la aplicación se quede completamente fuera de servicio. Sin embargo, después de una hora de pings incorrectos continuos, la instancia se reemplaza. Escale horizontalmente a dos o más instancias para obtener la ventaja de volver a enrutar que ofrece la comprobación de estado. Si la aplicación se ejecuta en una sola instancia, todavía puede usar la característica de supervisión de Comprobación de estado para realizar un seguimiento del estado de la aplicación.
¿Por qué no se muestran las solicitudes de comprobación de estado en mis registros de servidor web?
Las solicitudes de comprobación de estado se envían al sitio internamente, por lo que no se mostrarán en los registros de servidor web. Puede agregar instrucciones de registro en el código de comprobación de estado para mantener registros de cuándo se hace ping a la ruta de acceso de la comprobación de estado.
¿Las solicitudes de Comprobación de estado se envían mediante HTTP o HTTPS?
En App Service para Windows y Linux, las solicitudes de Comprobación de estado se envían mediante HTTPS cuando la opción Solo HTTPS está habilitada en el sitio. De lo contrario, se envían mediante HTTP.
¿Comprobación de estado sigue el código de aplicación configurado? Es decir, ¿redirige entre el dominio predeterminado y el dominio personalizado?
No, la característica Comprobación de estado hace ping a la ruta de acceso del dominio predeterminado de la aplicación web. Si hay un redireccionamiento desde el dominio predeterminado a un dominio personalizado, el código de estado que devuelve Comprobación de estado no será 200. Será una redirección (301), que marca el estado incorrecto del trabajo.
¿Qué ocurre si tengo varias aplicaciones en el mismo plan de App Service?
Las instancias en estado incorrecto se quitarán siempre de la rotación del equilibrador de carga, independientemente de otras aplicaciones del plan de App Service (hasta el porcentaje especificado en WEBSITE_HEALTHCHECK_MAXUNHEALTHYWORKERPERCENT
). Cuando una aplicación de una instancia permanece en un estado incorrecto durante más de una hora, la instancia solo se reemplazará si todas las demás aplicaciones en las que Comprobación de estado está habilitada también tienen un estado incorrecto. Las aplicaciones que no tienen habilitada la comprobación de estado no se tendrán en cuenta.
Ejemplo
Imagine que tiene dos aplicaciones (o una aplicación con una ranura) con Comprobación de estado habilitada. Se denominan App A y App B. Están en el mismo plan de App Service y el plan se escala horizontalmente a cuatro instancias. Si la Aplicación A tiene un estado incorrecto en dos instancias, el equilibrador de carga dejará de enviar solicitudes a la Aplicación A en esas dos instancias. Las solicitudes se seguirán enrutando a la Aplicación B en esas instancias, suponiendo que la Aplicación B esté en estado correcto. Si la Aplicación A permanece en estado incorrecto durante más de una hora en esas dos instancias, las instancias solo se reemplazarán si la Aplicación B también tiene un estado incorrecto en esas instancias. Si la Aplicación B tiene un estado correcto, las instancias no se reemplazarán.
Nota:
Si hubiera otro sitio o ranura en el plan (App C) sin Comprobación de estado habilitada, no se tendría en cuenta para la sustitución de la instancia.
¿Qué ocurre si todas mis instancias tienen un estado incorrecto?
Si todas las instancias de la aplicación tienen un estado incorrecto, App Service no quitará las instancias del equilibrador de carga. En este escenario, quitar todas las instancias de aplicación en estado incorrecto de la rotación del equilibrador de carga provocaría una interrupción de la aplicación. Sin embargo, se seguirá produciendo la sustitución de la instancia.
¿Funciona la comprobación de estado en instancias de App Service Environment?
Sí, Comprobación de estado está disponible para App Service Environment v3, pero no para las versiones 1 o 2. Si usa las versiones anteriores de App Service Environment, puede utilizar la característica de migración para migrar App Service Environment a la versión 3.
Pasos siguientes
- Creación de una alerta de registro de actividades para supervisar todas las operaciones del motor de escalado automático en su suscripción
- Creación de una alerta de registro de actividades para supervisar todas las operaciones erróneas de escalado automático y reducción horizontal en su suscripción
- Variables de entorno y configuración de la aplicación en Azure App Service