View a markdown version of this page

Comprobaciones de estado de la aplicación - Amazon Elastic Compute Cloud

Comprobaciones de estado de la aplicación

Las comprobaciones de estado de las aplicaciones permiten supervisar el rendimiento y el estado de las aplicaciones que se ejecutan en Amazon EC2. Con las comprobaciones de estado de las aplicaciones, puede detectar los problemas de estado y responder a ellos mediante la supervisión de las aplicaciones a través de rutas y puertos configurables. Por ejemplo, puede utilizar las comprobaciones de estado de las aplicaciones para confirmar que el servidor web escucha en el puerto esperado y acepta nuevas conexiones.

Las comprobaciones de estado de las aplicaciones supervisan las respuestas HTTP y HTTPS de las aplicaciones en rutas y puertos configurables. Se ejecutan cada 60 segundos y se integran con Amazon EC2 Auto Scaling, de modo que puede automatizar la sustitución de instancias cuyas aplicaciones estén dañadas.

Cómo funcionan las comprobaciones de estado de las aplicaciones

Las comprobaciones de estado de las aplicaciones envían solicitudes HTTP o HTTPS a un punto de conexión que escucha en un puerto de red de la instancia cada 60 segundos. AWS compara el código de respuesta con el comparador de códigos de estado que configuró. La comprobación se marca como defectuosa después de varias solicitudes fallidas consecutivas y vuelve a estar en buen estado luego de varias solicitudes correctas consecutivas. Ambos recuentos son 2 de forma predeterminada y son configurables. Para obtener más información, consulte Umbrales de evaluación.

nota

Las comprobaciones de estado de la aplicación envían la solicitud de comprobación de estado a través de HTTP/2.

La comprobación del protocolo HTTPS no valida el certificado del servidor.

Durante un reinicio, las comprobaciones de estado de las aplicaciones indican un error hasta que la instancia vuelva a estar disponible, ya que la aplicación no puede responder a las solicitudes de comprobación de estado mientras el sistema operativo se está reiniciando.

Arquitectura de redes

Las comprobaciones de estado de las aplicaciones se originan en el servicio de comprobaciones de estado de las aplicaciones de Amazon EC2. Para llegar a sus instancias, AWS crea una interfaz de red elástica (ENI) administrada en su VPC. AWS crea una ENI por combinación de subred de origen y grupo de seguridad que tenga instancias asociadas. AWS crea la ENI administrada cuando una comprobación de estado de una aplicación requiere por primera vez esa combinación y la elimina cuando no hay ninguna otra comprobación de estado de la aplicación que la requiera. La ENI administrada no se tiene en cuenta para el límite de ENI de la instancia, pero sí para la cuota de interfaces de red por región de su cuenta, que se aplica por zona de disponibilidad. Para obtener más información, consulte Cuotas de VPC de Amazon.

Por defecto, Amazon EC2 oculta estas interfaces de red administradas de la consola y las operaciones de la lista de API para las cuentas que no tenían recursos administrados antes de que esta configuración estuviera disponible. Para cambiar su visibilidad, consulte Configuración de visibilidad de recursos administrada.

AWS crea una interfaz de red administrada para cada combinación de subred de origen y grupo de seguridad de las instancias asociadas. La cantidad de interfaces administradas aumenta con la cantidad de combinaciones distintas de subredes y grupos de seguridad que utilizan las instancias supervisadas. La consolidación de las instancias supervisadas en menos combinaciones de subredes y grupos de seguridad reduce la cantidad de interfaces administradas. Por ejemplo, 200 instancias distribuidas en 2 subredes que utilizan un único grupo de seguridad producen 2 interfaces administradas. Las mismas 200 instancias que utilizan 3 grupos de seguridad en esas 2 subredes producen hasta 6 interfaces administradas. Cada interfaz corresponde a una combinación de subred y grupo de seguridad.

Las comprobaciones de estado de las aplicaciones llegan a sus instancias desde un punto de observación privado dentro de su VPC. El alcance describe el origen de la comprobación, no una propiedad de la dirección IP de la instancia. AWS crea la ENI administrada en una subred de la VPC y llega a la instancia a través de la ruta de red privada.

Con las rutas de red administradas de AWS, el tráfico de comprobación de estado se origina en las instancias de Amazon EC2 administradas de AWS en la misma zona de disponibilidad que la instancia de destino (o en la zona de disponibilidad principal para los destinos de la zona local). El tráfico pasa por la red interna de AWS y no pasa por la red pública de Internet. Para obtener más información, consulte Preguntas frecuentes sobre Amazon VPC en la página web de Amazon Web Services.

Con las rutas de red administradas por el cliente, usted elige las subredes de origen para realizar comprobaciones desde una zona de disponibilidad distinta de la de destino. Para obtener más información, consulte Supervisión entre zonas de disponibilidad.

Rutas de red administradas de AWS y administradas por el cliente

Las comprobaciones de estado de las aplicaciones admiten dos modos de incorporación que determinan quién selecciona las subredes y los grupos de seguridad de origen para la ENI de comprobación de estado, y las subredes y los grupos de seguridad de destino para las instancias de destino.

Rutas de red administradas de AWS

AWS selecciona las subredes y los grupos de seguridad de origen para la ENI de comprobación de estado, y las subredes y los grupos de seguridad de destino para las instancias de destino.

Rutas de red administradas por el cliente

Debe especificar las subredes y los grupos de seguridad de origen para la ENI de comprobación de estado, y las subredes y los grupos de seguridad de destino para las instancias de destino.

Utilice rutas de red administradas por el cliente cuando necesite controlar de qué subredes y grupos de seguridad se origina el tráfico de comprobación de estado, por ejemplo, cuando su VPC tiene una segmentación de red estricta, reglas de firewall o requisitos de cumplimiento que restringen las fuentes que pueden llegar a los puntos de conexión de la aplicación.

Para elegir el modo, debe incluir u omitir el parámetro --health-check-paths en el comando de creación. Si omite el parámetro --health-check-paths, AWS selecciona las subredes de origen y destino y los grupos de seguridad (rutas de red administradas de AWS). Si incluye el parámetro --health-check-paths, los administra usted (rutas de red administradas por el cliente).

Versión de IP

Cada comprobación de estado de la aplicación está asociada a una única versión IP (IPv4 o IPv6). Para supervisar una instancia a través de IPv4 e IPv6, cree dos comprobaciones de estado de la aplicación independientes y asócielas a la instancia.

Las comprobaciones de IPv4 e IPv6 llegan a la instancia desde la VPC.

Valores de estado de comprobación

Cada comprobación individual notifica uno de los siguientes estados:

  • passed: la comprobación se completó correctamente

  • failed: la comprobación no se ha superado La respuesta incluye el código de estado HTTP devuelto por la aplicación. Para obtener una guía de interpretación y corrección, consulte Solución de problemas.

  • initializing: la comprobación aún no ha completado su primera evaluación

  • insufficient-data: la comprobación no recibió datos suficientes para determinar un resultado

  • not-applicable: la comprobación no está asociada a la instancia

El estado general de la aplicación registrado para la instancia agrega todos los resultados de las comprobaciones individuales. El estado general es uno de los siguientes:

  • ok: se aprobaron todas las comprobaciones

  • impaired: una o más comprobaciones fallaron

  • initializing: una o más comprobaciones aún no han completado su primera evaluación

  • insufficient-data: una o más comprobaciones indican datos insuficientes

  • not-applicable: se excluyen de la agregación todas las comprobaciones de estado de las aplicaciones asociadas

  • suppressed: la evaluación de la comprobación de estado de la aplicación está suprimida para la instancia

Agregación

Puede marcar cada comprobación de estado de la aplicación como incluida o excluida del estado general de la instancia. Por defecto, una comprobación está included.

included

La comprobación contribuye al estado general de la instancia y Amazon EC2 Auto Scaling la utiliza.

excluded

La comprobación informa de su estado individual, pero no contribuye al estado general de la instancia, y Amazon EC2 Auto Scaling no la utiliza. Utilice esta configuración para validar una nueva comprobación en producción sin afectar el estado general ni provocar sustituciones de Amazon EC2 Auto Scaling. Este es el flujo de trabajo recomendado cuando se agrega una comprobación a una carga de trabajo de producción existente; consulte Cómo probar una nueva comprobación de estado de la aplicación.

Comience a utilizar comprobaciones de estado de las aplicaciones

Requisitos previos

Antes de crear una comprobación del estado de la aplicación, asegúrese de que dispone de lo siguiente:

  • Una VPC con las instancias que desea supervisar.

  • Un punto de conexión de aplicación en cada instancia que pueda responder a las solicitudes HTTP o HTTPS en el puerto y la ruta HTTP que vaya a configurar.

  • Un grupo de seguridad en cada instancia de destino que permita el tráfico entrante en el puerto de comprobación desde el grupo de seguridad de origen utilizado para la comprobación de estado de la aplicación. Consulte Seguridad y permisos.

Paso 1: Configurar la aplicación de de

Configure el punto de conexión de la aplicación para que responda a las solicitudes HTTP o HTTPS en el puerto y la ruta HTTP que usted especifique al crear la comprobación. Devuelva un código de respuesta incluido en el comparador de códigos de estado para indicar que la aplicación está en buen estado.

Asegúrese de que el grupo de seguridad de la instancia de destino permita el tráfico entrante en el puerto de comprobación procedente del grupo de seguridad de origen utilizado para la comprobación de estado de la aplicación. En las rutas de red administradas, AWS proporciona el grupo de seguridad de origen al crear la comprobación. Y en las rutas de red administradas por el cliente, usted debe especificar el grupo de seguridad de origen al crear la comprobación.

Paso 2: Crear una definición de comprobación

Utilice la AWS CLI para crear una comprobación de estado de la aplicación.

Console
  1. Abra la consola de Amazon EC2 en https://console.aws.amazon.com/ec2/.

  2. En el panel de navegación, en Instancias, seleccione Comprobaciones de estado de la aplicación.

  3. Seleccione Crear comprobación de estado de la aplicación.

  4. En Lógica de comprobación de estado, configure lo siguiente:

    • Protocolo: elija HTTP o HTTPS.

    • Puerto: ingrese el puerto en el que escucha su aplicación.

    • Ruta (opcional): ingrese la ruta HTTP que desee solicitar, por ejemplo /healthcheck.

    • Versión IP: elija IPv4 o IPv6.

    • Índice de dispositivo: el índice de dispositivos de la interfaz de red que se va a comprobar. El valor predeterminado es 0.

  5. En Controles y umbrales, defina el Tiempo de espera y, si lo desea, el Comparador de códigos de estado, el Umbral de error, el Umbral de éxito y el Período de gracia de inicialización. El intervalo de comprobación está fijado en 60 segundos.

  6. En Agregación, seleccione Incluido para que la verificación contribuya al estado general de la aplicación e impulse Amazon EC2 Auto Scaling, o Excluido para informar de la verificación sin que ello afecte al estado general.

  7. En Rutas de comprobación de estado, mantenga No especificar rutas de red (recomendada/predeterminada) para permitir que Amazon EC2 coloque las interfaces de red de comprobación de estado en las subredes de la instancia, o seleccione Especificar rutas de red (avanzada) para definir usted mismo la subred de origen, el grupo de seguridad y los destinos.

  8. (Opcional) Agregue una Etiqueta de nombre y otras Etiquetas.

  9. Seleccione Crear comprobación de estado de la aplicación.

AWS CLI

Para usar rutas de red administradas de AWS, omita el parámetro --health-check-paths y deje que AWS seleccione las subredes y grupos de seguridad de origen y destino.

aws ec2 create-application-status-check \ --protocol https \ --port 443 \ --path "/health" \ --status-code-matcher "200"

Para usar rutas de red administradas por el cliente, incluya el parámetro --health-check-paths. Cada ruta de comprobación de estado contiene un origen (subred y grupo de seguridad para la ENI de comprobación de estado) y uno o más destinos (subred y grupo de seguridad para las instancias de destino).

aws ec2 create-application-status-check \ --protocol https \ --port 443 \ --path "/health" \ --status-code-matcher "200" \ --health-check-paths '[{"Source":{"SubnetId":"subnet-111","SecurityGroupId":"sg-aaa"},"Destinations":[{"SubnetId":"subnet-222","SecurityGroupId":"sg-bbb"}]}]'
Paso 3: Asociar la comprobación a las instancias

Asocie la comprobación a las instancias que desea monitorizar, ya sea por ID de instancia o por etiqueta.

Console
  1. En el panel de navegación, en Instancias, elija Comprobaciones de estado de la aplicación y seleccione la comprobación.

  2. Seleccione Administrar asociaciones de comprobación de estado y luego elija Administrar asociaciones por ID de recurso o Administrar asociaciones por etiquetas.

  3. Para asociarla a todas las instancias de un grupo de escalado automático, elija Administrar asociaciones por etiquetas e ingrese aws:autoscaling:groupName como clave de etiqueta y el nombre del grupo de escalado automático como valor.

  4. Elija Asociar.

AWS CLI

Por ID de instancia:

aws ec2 associate-application-status-check \ --application-status-check-id asc-1234567890abcdef0 \ --instance-ids i-0123456789abcdef0

Por etiqueta:

aws ec2 associate-application-status-check \ --application-status-check-id asc-1234567890abcdef0 \ --target-tag-associations Key=Environment,Value=production

Para asociar a todas las instancias de un grupo de escalado automático, use la etiqueta de sistema aws:autoscaling:groupName:

aws ec2 associate-application-status-check \ --application-status-check-id asc-1234567890abcdef0 \ --target-tag-associations Key=aws:autoscaling:groupName,Value=my-asg

Las operaciones de asociación y desvinculación devuelven los resultados de éxito y error por instancia. Si algunas instancias no se pueden asociar (por ejemplo, porque la comprobación ya está asociada), esas instancias aparecen en los resultados fallidos con un motivo.

Paso 4: visualización de los resultados

Consulte el estado de la aplicación por instancia.

Console
  1. Abra la consola de Amazon EC2 en https://console.aws.amazon.com/ec2/.

  2. En el panel de navegación, seleccione Instances (Instancias).

  3. Seleccione la instancia y luego elija la pestaña Estado y alarmas.

  4. En Comprobaciones de estado de la aplicación, revise el estado general y el estado individual de cada comprobación asociada.

AWS CLI
aws ec2 describe-application-status \ --instance-ids i-0123456789abcdef0

La respuesta incluye el estado general de la aplicación y, para cada comprobación asociada, el estado de la verificación y, en el caso de las comprobaciones fallidas, el código de estado HTTP devuelto por la aplicación.

Respuesta de ejemplo:

{ "ApplicationStatuses": [ { "InstanceId": "i-0123456789abcdef0", "ApplicationStatus": { "Status": "ok", "Details": [ { "ApplicationStatusCheckId": "asc-1234567890abcdef0", "Status": "passed", "Reason": { "Code": "ResponseCodeMatched", "StatusCode": 200, "Protocol": "HTTP" } } ] } } ] }

Para ver las definiciones de las comprobaciones (no el estado por instancia), use describe-application-status-checks. Este comando devuelve la configuración de las comprobaciones de estado de la aplicación, incluida la configuración del protocolo, el puerto, la ruta HTTP y el comparador de códigos de estado.

Opciones de configuración

Las comprobaciones de estado de las aplicaciones aceptan varios parámetros de configuración. En esta sección se explican los parámetros cuyo comportamiento no es evidente a partir del nombre del parámetro. Para ver la lista completa de parámetros y reglas de validación, consulte CreateApplicationStatusCheck y AssociateApplicationStatusCheck en la Referencia de la API de Amazon EC2.

Umbrales de evaluación

FailureThreshold

El número de solicitudes fallidas consecutivas antes de que la comprobación se marque como defectuosa. Valor predeterminado: 2.

SuccessThreshold

El número de solicitudes consecutivas correctas antes de que la comprobación vuelva a marcarse en buen estado. Valor predeterminado: 2.

Timeout

La cantidad de segundos que se debe esperar una respuesta antes de que la solicitud se registre como no superada. Se aplica como tiempo de espera forzado; si la aplicación no responde dentro de este período, la solicitud se registra como un error independientemente de la respuesta final. Predeterminado: 6. Rango válido: de 1 a 30.

Período de gracia de inicio

InitializationGracePeriodSeconds

La cantidad de segundos que se debe esperar después de que se inicie una instancia antes de que AWS empiece a evaluar la comprobación. Utilice este parámetro para que las aplicaciones tengan tiempo de empezar a escuchar antes de que comiencen las comprobaciones. Si el período de gracia es demasiado corto, Amazon EC2 Auto Scaling podría reemplazar las nuevas instancias antes de que su aplicación esté lista. Valor predeterminado: 300. Rango válido: de 1 a 600.

Alcance de IP

IpScope

Las comprobaciones de estado de las aplicaciones utilizan el ámbito private; la comprobación se lleva a cabo desde la VPC. En el caso de IPv4, esto corresponde a la dirección IP privada de la instancia. En el caso de IPv6, AWS no clasifica la dirección como pública o privada; la comprobación acepta cualquier dirección IPv6 y la evalúa desde la VPC.

Índice de dispositivos

DeviceIndex

El índice del dispositivo de red de la instancia que AWS evalúa para la comprobación de estado. Cámbielo cuando el dispositivo de red principal de la instancia no sea el que desea comprobar. Valor predeterminado: 0.

Las rutas de agregación, versión de IP y comprobación de estado (subredes de origen y destino y grupos de seguridad) se tratan en sus propias secciones anteriores de esta página.

Configuración predeterminada

En el caso de las rutas de red administradas de AWS, las comprobaciones de estado de las aplicaciones utilizan los siguientes valores predeterminados.

Opción Predeterminado

Intervalo de comprobación

60 segundos (fijo; no configurable)

Failure threshold

2 errores consecutivos

Umbral de éxito

2 éxitos consecutivos

Tiempo de espera

6 segundos

Comparador de códigos de estado

200

Ruta HTTP

/

Versión de IP

ipv4

Alcance de IP

privada

Índice de dispositivos

0

Periodo de gracia de inicialización

300 segundos

Agregación

incluido

Subredes de origen y grupos de seguridad

Administrada por AWS

Integración de Amazon EC2 Auto Scaling

Amazon EC2 Auto Scaling finaliza y reemplaza automáticamente las instancias cuyo estado general de la aplicación indica impaired, siempre que la comprobación se incluya en la agregación. No se requiere ninguna configuración de grupo de escalado automático más allá de asociar la comprobación de estado de la aplicación con las instancias del grupo.

Amazon EC2 Auto Scaling utiliza el estado general de la instancia, no el estado de comprobación individual. Las comprobaciones marcadas como excluded no impulsan las acciones de Amazon EC2 Auto Scaling. Las comprobaciones en estado suppressed no impulsan las acciones de Amazon EC2 Auto Scaling.

Utilice el parámetro InitializationGracePeriodSeconds de la comprobación para permitir que las nuevas instancias se inicien antes de que comiencen las comprobaciones de estado de las aplicaciones. Si el periodo de gracia es demasiado corto, es posible que las instancias nuevas sean terminadas y reemplazadas por Amazon EC2 Auto Scaling antes de que su aplicación esté lista para atender el tráfico.

La comprobación InitializationGracePeriodSeconds establece el tiempo transcurrido desde el lanzamiento de una instancia hasta que la comprobación comience a evaluar la aplicación. Configúrela para que cubra el tiempo de inicio de la aplicación, de modo que la comprobación no muestre impaired mientras la aplicación aún se esté iniciando. El periodo de gracia de la comprobación de estado del grupo de escalado automático es independiente. Establece cuánto tiempo transcurrirá desde que una instancia entre en servicio hasta que Amazon EC2 Auto Scaling la termine debido a una comprobación de estado fallida.

Para obtener más información acerca de cómo Amazon EC2 Auto Scaling utiliza las comprobaciones de estado, consulte Health checks for instances in an Auto Scaling group y Use application status checks with an Auto Scaling group en la Guía del usuario de Amazon EC2 Auto Scaling.

Gestión de la implementación, la aplicación de parches in situ y las sustituciones

Las implementaciones, los parches in situ y otras operaciones de mantenimiento pueden detener o reiniciar temporalmente la aplicación. Durante ese tiempo, las comprobaciones de estado de la aplicación indican un error, ya que la aplicación no puede responder a las solicitudes de comprobación de estado. Si sus instancias están en un grupo de escalado automático con comprobaciones de estado de las aplicaciones incluidas en la agregación, Amazon EC2 Auto Scaling podría terminar y reemplazar estas instancias aunque se espere la interrupción.

Opción A: suprimir la comprobación

Utilice la supresión para periodos de mantenimiento delimitados cuya duración conozca. La supresión se aplica en el nivel de instancia. Debe especificar una duración u omitirla para suprimir la comprobación hasta que la desactive.

AWS CLI
aws ec2 enable-application-status-check-suppression \ --instance-ids i-0123456789abcdef0 \ --duration-seconds 3600

La respuesta indica, para cada instancia, cuándo comenzó la supresión y cuándo finalizará. Es posible que el éxito sea parcial y que algunas instancias no se supriman y aparezcan en la respuesta con un motivo.

Cómo reanudar las comprobaciones antes de que caduque el período de supresión:

aws ec2 disable-application-status-check-suppression \ --instance-ids i-0123456789abcdef0

Si está suprimida, el estado general de la aplicación de la instancia muestra suppressed. Amazon EC2 Auto Scaling no actúa en las instancias suppressed.

Opción B: excluir la comprobación de la agregación

Si desea que la comprobación siga evaluando e informando sobre su estado individual, pero que no afecte al estado general ni desencadene acciones de Amazon EC2 Auto Scaling, defina la configuración de agregación de la comprobación en excluded. Esto resulta útil para situaciones de larga duración, como el lanzamiento de una nueva versión de la comprobación o la validación de un cambio sin correr el riesgo de ser reemplazado, y para los casos en los que desee que la telemetría continúe sin que ello afecte a las operaciones.

Para obtener más información, consulte Agregación.

Opción C: desvincular la comprobación

Utilice la desvinculación para una eliminación más prolongada o indefinida.

aws ec2 disassociate-application-status-check \ --application-status-check-id asc-1234567890abcdef0 \ --instance-ids i-0123456789abcdef0

Si la asoció por etiqueta, quite la etiqueta de la instancia para desvincularla. Tras la desvinculación, el estado general de la aplicación de la instancia mostrará not-applicable.

Guía de implementación

Las implementaciones son el escenario de mantenimiento más común que requiere supresión. Utilice la supresión cuando la herramienta de implementación tenga un enlace previo a la implementación y otro posterior, de modo que pueda suprimir la comprobación antes de que comience la implementación y deshabilitar la supresión una vez finalizada la implementación.

El procedimiento general es el siguiente:

  1. En el enlace previo a la implementación, llame a enable-application-status-check-suppression para la instancia, con una duración que cubra el período de implementación esperado.

  2. Realice la implementación.

  3. En el enlace posterior a la implementación, llame a disable-application-status-check-suppression para la instancia.

Si su herramienta de implementación no tiene enlaces, gestione la supresión desde la canalización de CI/CD que invoca la implementación.

Cómo probar una nueva comprobación de estado de la aplicación

Puede validar una nueva comprobación de estado de la aplicación en producción antes de que comience a contribuir a la supervisión a nivel de instancia. Para ello, defina la configuración de agregación en excluded al crear la comprobación y luego confirme que muestra el estado esperado y los códigos de respuesta HTTP. Cuando tenga todo listo, cambie la configuración a included para que la comprobación contribuya al estado general de la instancia y se integre con Amazon EC2 Auto Scaling.

  1. Cree la comprobación con la configuración de agregación establecida en excluded.

    aws ec2 create-application-status-check \ --protocol https \ --port 443 \ --path "/health" \ --status-code-matcher "200" \ --aggregation excluded
  2. Asocie la comprobación a una instancia de prueba o a un subconjunto de su flota de producción.

  3. Espere al menos dos intervalos de comprobación (aproximadamente dos minutos) para que la comprobación complete una evaluación inicial.

  4. Utilice describe-application-status para comprobar que la comprobación indica el estado esperado y el código de respuesta HTTP.

    aws ec2 describe-application-status \ --instance-ids i-0123456789abcdef0
  5. Si la comprobación arroja los resultados esperados, actualice la configuración de agregación a included para que la comprobación contribuya al estado general de la instancia e impulse las acciones de Amazon EC2 Auto Scaling.

    aws ec2 modify-application-status-check \ --application-status-check-id asc-1234567890abcdef0 \ --aggregation included

Redes avanzadas

Las comprobaciones de estado de las aplicaciones se originan en una ENI administrada en la subred de origen y el grupo de seguridad que especifique (o que AWS seleccione por usted). Para las cargas de trabajo que requieren una disponibilidad superior a la que ofrece una configuración de origen único, o para las cargas de trabajo que se ejecutan en zonas locales o Outposts, tenga en cuenta los siguientes procedimientos.

Supervisión entre zonas de disponibilidad

Para obtener redundancia entre las zonas de disponibilidad, puede ejecutar comprobaciones de estado desde varias de ellas. Con las rutas de red administradas por el cliente, puede definir las rutas de comprobación de estado cuyos orígenes se encuentran en dos zonas de disponibilidad diferentes que llegan a las mismas instancias de destino mediante el parámetro --health-check-paths. La supervisión desde dos zonas de disponibilidad mantiene los informes de estado de las instancias de forma continua incluso si una zona de disponibilidad deja de estar disponible.

En el siguiente ejemplo, se crea una comprobación con dos rutas de comprobación de estado cuyos orígenes se encuentran en distintas zonas de disponibilidad y ambas llegan a las mismas instancias de destino.

aws ec2 create-application-status-check \ --protocol https \ --port 443 \ --path "/health" \ --status-code-matcher "200" \ --health-check-paths '[{"Source":{"SubnetId":"subnet-source-az1","SecurityGroupId":"sg-healthcheck"},"Destinations":[{"SubnetId":"subnet-app-az1","SecurityGroupId":"sg-app"}]},{"Source":{"SubnetId":"subnet-source-az2","SecurityGroupId":"sg-healthcheck"},"Destinations":[{"SubnetId":"subnet-app-az2","SecurityGroupId":"sg-app"}]}]'

Zonas locales

En el caso de las instancias que se ejecutan en zonas locales de AWS, la interfaz de red elástica (ENI) administrada reside en la región principal de AWS, no en la zona local. El tráfico de comprobación de estado entre la región principal y las instancias de la zona local pasa por el enlace de servicio de la zona local, lo que puede generar cargos adicionales por transferencia de datos.

Prácticas recomendadas

  • Diseñe su punto de conexión de estado para que refleje el estado de la aplicación que se ejecuta en esa instancia. Cuando el punto de conexión devuelve el estado según la propia aplicación, Amazon EC2 Auto Scaling reemplaza solo las instancias que están realmente deterioradas. Si la respuesta del punto de conexión también depende de un recurso compartido, como una base de datos o un servicio descendente, un problema con ese recurso puede provocar un error en la comprobación en varias instancias a la vez. Esto puede provocar un reemplazo en toda la flota. Para obtener orientación sobre cómo redactar los puntos de conexión de la comprobación de estado, consulte Implementación de las comprobaciones de estado en Amazon Builders' Library.

  • Protéjase contra los errores correlacionados. Una comprobación incluida impulsa el reemplazo de Amazon EC2 Auto Scaling. Una comprobación que falla en varias instancias a la vez puede provocar una oleada de reemplazos. Establezca una política de mantenimiento de instancias en el grupo de escalado automático para limitar el número de instancias que se sustituyen simultáneamente. Para obtener más información, consulte Instance maintenance policy en la Guía del usuario de Amazon EC2 Auto Scaling.

  • Alarma basada en el recuento de instancias deterioradas. Cree una alarma de Amazon CloudWatch en la métrica StatusCheckFailed_Application de toda su flota. Un aumento repentino en muchas instancias indica una dependencia compartida y no errores en las instancias individuales, y le da tiempo para responder antes de que se produzcan reemplazos en cascada. Para obtener más información, consulte Cómo supervisar las comprobaciones de estado de la aplicación.

  • Manténgase dentro de su cuota de interfaces de red. Las comprobaciones de estado de las aplicaciones crean interfaces de red administradas que se contabilizan en la cuota de Interfaces de red por región. AWS aplica esta cuota por zona de disponibilidad. Supervise su uso para que una flota en crecimiento no alcance la cuota. Si la alcanza, AWS no podrá crear nuevas interfaces. Para obtener información relacionada con las alarmas de cuota, consulte Cuotas.

  • Trate los permisos de las comprobaciones de estado como sujetos a control de cambios. Las acciones de IAM que crean, modifican, eliminan, asocian, desvinculan y suprimen las comprobaciones de estado de las aplicaciones pueden afectar a la disponibilidad de las instancias. Estas acciones determinan qué impulsa el reemplazo de Amazon EC2 Auto Scaling. Trate acciones como ec2:CreateApplicationStatusCheck, ec2:AssociateApplicationStatusCheck, ec2:ModifyApplicationStatusCheck y ec2:EnableApplicationStatusCheckSuppression como sujetas a control de cambios, en lugar de concederlas como parte del acceso general a Amazon EC2. Para ver la lista completa de las acciones, consulte la Referencia de la API de Amazon EC2.

Solución de problemas

Cuando una comprobación de estado de una aplicación indique que está deteriorada, pero usted espera que su aplicación esté en buen estado, verifique cada uno de los siguientes puntos:

  1. Accesibilidad de la instancia. Confirme que las comprobaciones de estado de instancia y del sistema estén ok.

  2. Regla de entrada del grupo de seguridad. El grupo de seguridad de la instancia de destino debe permitir el tráfico entrante en el puerto de comprobación procedente del grupo de seguridad de origen utilizado por la comprobación de estado de la aplicación. Para las rutas de red administradas de AWS, AWS proporciona el grupo de seguridad de origen; para las rutas de red administradas por el cliente, utilice el grupo de seguridad que especificó como origen.

  3. Firewall del host. Cualquier firewall a nivel de host (iptables, Firewall de Windows, firewall de host de terceros) de la instancia debe permitir el tráfico entrante en el puerto de comprobación.

  4. Punto de conexión de la aplicación. La aplicación debe estar escuchando en el puerto y la ruta que configuró. Confirme con una solicitud local de la instancia (curl http://localhost:PORT/PATH).

  5. Incompatibilidad de protocolo. Si la comprobación está configurada para HTTPS pero el punto de conexión solo admite HTTP (o viceversa), todas las llamadas fallarán.

  6. Comparador de códigos de estado. Confirme que el código de respuesta real de su aplicación esté incluido en el comparador de códigos de estado que configuró.

  7. Ruta de red. Si configuró las rutas de red administradas por el cliente, confirme que la subred de origen y el grupo de seguridad tengan conectividad con la subred de destino. Utilice el Analizador de accesibilidad de VPC para rastrear la ruta de la red.

  8. Cuota de ENI disponible. AWS crea una interfaz de red elástica (ENI) administrada en su cuenta para cada combinación de subred de origen y grupo de seguridad. Confirme que su cuenta no ha alcanzado su cuota de interfaces de red por región, que se aplica por zona de disponibilidad. Si su cuenta ha alcanzado esta cuota, AWS no podrá crear la ENI administrada y la comprobación no podrá ejecutarse. Para obtener más información, consulte Cuotas de VPC de Amazon.

Códigos de motivo

La respuesta de describe-application-status incluye un motivo para cada comprobación. El motivo contiene el código de estado HTTP devuelto por la aplicación (en forma de número), junto con el protocolo utilizado para la comprobación. Una comprobación se marca como passed si el código de estado devuelto está incluido en el comparador de códigos de estado, y como failed en caso contrario.

El motivo también incluye un código de motivo y, en el caso de los resultados a nivel HTTP, el protocolo y el código de estado HTTP devuelto. El motivo contiene los siguientes campos:

Code

El código de motivo del resultado de la comprobación de estado de la aplicación. Uno de los valores siguientes:

  • ResponseCodeMatched: el código de estado HTTP devuelto por la comprobación de estado coincidió con el StatusCodeMatcher configurado.

  • ResponseCodeMismatch: el código de estado HTTP devuelto por la comprobación de estado no coincidió con el StatusCodeMatcher configurado.

  • ConnectionTimeout: se agotó el tiempo de espera de la conexión al destino.

  • ResponseTimeout: se agotó el tiempo de espera de la comprobación de estado mientras se esperaba una respuesta del destino.

  • ConnectionRefused: el destino rechazó la conexión de la comprobación de estado.

  • ConnectionReset: la conexión de comprobación de estado se restableció antes de recibir una respuesta.

Para ResponseCodeMatched y ResponseCodeMismatch, el campo StatusCode contiene el código de estado HTTP devuelto y el campo Protocol contiene el protocolo utilizado para la comprobación de estado. En el caso de errores de conexión, como ConnectionTimeout, ResponseTimeout, ConnectionRefused y ConnectionReset, los campos StatusCode y Protocol no están presentes.

Protocol

El protocolo utilizado para la comprobación de estado. Uno de HTTP o HTTPS.

StatusCode

El código de estado HTTP devuelto por la comprobación de estado.

Utilice el código de estado HTTP devuelto para identificar el motivo por el que se ha producido un error en una comprobación. Algunos ejemplos comunes:

Código de estado HTTP Significado típico Corrección común

200

La aplicación devolvió una respuesta correcta.

Ninguna. Por lo general, se trata de un buen estado.

301, 302

La aplicación devolvió una redirección. Las llamadas de comprobación de estado no siguen los redireccionamientos.

Sitúe la ruta de comprobación de estado en el destino de la redirección o agregue el código de redirección al comparador de códigos de estado si considera que funciona correctamente.

401, 403

La aplicación requiere autenticación o se le deniega el acceso a la ruta de comprobación de estado.

Configure la ruta de comprobación de estado para que no esté autenticada o realice las comprobaciones de estado en una ruta que no requiera credenciales.

404

La ruta de comprobación de estado configurada no se encontró en la aplicación.

Compruebe que la ruta coincida con una de las rutas que gestiona su aplicación.

500

La aplicación ha detectado un error interno del servidor.

Investigue los registros de la aplicación en la instancia.

502, 503, 504

Se puede acceder a la aplicación, pero informa de problemas de nivel superior o de capacidad.

Investigue el estado, las dependencias y la capacidad de la aplicación. Si la aplicación devuelve estos códigos durante el inicio, aumente InitializationGracePeriodSeconds.

Para ver la estructura completa de ApplicationStatusReason, consulte ApplicationStatusReason en la Referencia de la API de Amazon EC2.

Errores comunes

  • El grupo de seguridad no permite el tráfico entrante desde el origen de la comprobación de estado en el puerto de comprobación.

  • La aplicación está enlazada a 127.0.0.1 y no escucha en la interfaz de red.

  • La ruta de comprobación de estado devuelve una redirección (301, 302) en lugar de una respuesta correcta, y el comparador de códigos de estado no incluye el código de redirección.

  • La comprobación está configurada para HTTPS, pero la aplicación solo admite HTTP, o viceversa.

  • La aplicación tarda más en iniciarse que el valor de InitializationGracePeriodSeconds y Amazon EC2 Auto Scaling reemplaza la instancia antes de que esté lista.

Cómo supervisar las comprobaciones de estado de la aplicación

Puede supervisar las comprobaciones de estado de la aplicación de tres formas:

  • Amazon CloudWatch. La métrica StatusCheckFailed_Application refleja el estado general de la aplicación de la instancia y puede generar alarmas. La métrica se agrega por instancia en todas las comprobaciones asociadas cuya configuración de agregación es included. CloudWatch también publica una métrica por comprobación para cada comprobación asociada, denominada StatusCheckFailed_Application_application-status-check-id.

  • describe-instance-status. Muestra el estado general de la aplicación junto con el resto de la información de estado de la instancia.

  • describe-application-status. Devuelve resultados detallados por instancia, incluidos el estado individual de cada comprobación asociada y el código de estado HTTP devuelto por la aplicación.

Utilice la métrica de CloudWatch para la automatización basada en alarmas. Utilice describe-instance-status cuando ya la esté consultando para obtener el estado de la instancia. Utilice describe-application-status para obtener una visibilidad detallada por comprobación.

Seguridad y permisos

AWS crea y administra las interfaces de red utilizadas para las comprobaciones de estado de las aplicaciones mediante un rol vinculado al servicio. No se requiere ninguna configuración de IAM para que el servicio cree estas ENI. El rol vinculado al servicio utiliza la política administrada de AWS EC2ApplicationStatusChecksServiceRolePolicy .

Para crear, asociar, describir, eliminar y suprimir usted mismo las comprobaciones de estado de las aplicaciones, su usuario o rol de IAM necesita los permisos de Amazon EC2 correspondientes. Consulte la Referencia de la API de Amazon EC2 para ver la lista completa de acciones.

El grupo de seguridad de la instancia debe permitir el tráfico entrante desde el grupo de seguridad de origen de comprobación de estado en el puerto que ha configurado. En el caso de las rutas de red administradas de AWS, AWS proporciona el grupo de seguridad de origen; en el caso de las rutas de red administradas por el cliente, utilice el grupo de seguridad que especificó como origen.

Precios

Las comprobaciones de estado de las aplicaciones se facturan según los siguientes componentes:

  • Un cargo por hora de 0,01 USD por cada interfaz de red elástica (ENI) administrada, por zona de disponibilidad.

  • Los precios estándar de Amazon CloudWatch se aplican a las métricas de comprobación de estado de las aplicaciones.

Cuotas

Las comprobaciones de estado de las aplicaciones están sujetas a las cuotas de servicio de AWS. Para ver los nombres, los valores predeterminados y las descripciones de las cuotas, consulte Amazon EC2 endpoints and quotas en la Referencia general de AWS.

Además de las cuotas de servicio de AWS que afectan a las interfaces de red administradas, las comprobaciones de estado de las aplicaciones tienen las siguientes cuotas de servicio. Puede ver su uso y solicitar aumentos desde la consola de Service Quotas.

En estas cuotas, un destino es una instancia única que supervisa una comprobación de estado. Si más de una comprobación de estado supervisa una instancia, cada combinación de instancia y comprobación de estado cuenta como un destino independiente. Una asociación es una regla de etiqueta única o un ID de instancia único que se asocia a una comprobación de estado. Cada regla o ID de instancia cuenta como una asociación, independientemente del número de instancias en las que se resuelva.

Cuota Predeterminado Ajustable

Comprobaciones de estado por cuenta

50

Sí, de forma automática

Asociaciones por comprobación de estado

50

Sí, de forma automática

Asociaciones por cuenta

200

Sí, de forma automática

Destinos por cuenta

5 000

Sí, a petición

La mayoría de los aumentos de cuota se aprueban automáticamente. El aumento del número de destinos por cuenta requiere una solicitud y una aprobación manual.

importante

Si el número de destinos de su cuenta supera la cuota de destinos por cuenta, los destinos que superen el límite no se supervisan y no se notifica su estado en la aplicación. Para evitar lagunas en la supervisión, mantenga el recuento de destinos dentro de la cuota o solicite un aumento.

Recomendamos crear una alarma de Amazon CloudWatch sobre el uso de la cuota de comprobaciones de estado de su aplicación para que se le notifique antes de que alcance una cuota. Service Quotas publica las métricas de uso en el espacio de nombres AWS/Usage de CloudWatch, que puede utilizar para crear la alarma.