Comprobaciones de estado para instancias de Auto Scaling - Amazon EC2 Auto Scaling

Comprobaciones de estado para instancias de Auto Scaling

Una instancia de Auto Scaling puede tener un estado correcto o incorrecto. Todas las instancias de un grupo de Auto Scaling comienzan con un estado correcto. Se entiende que las instancias están en buen estado, a menos que Amazon EC2 Auto Scaling reciba una notificación de que están en mal estado. Esta notificación puede provenir de una o más de las siguientes fuentes: Amazon EC2, Elastic Load Balancing o una comprobación de estado personalizada. Después de que Amazon EC2 Auto Scaling detecte una instancia en mal estado, la termina y lanza una nueva.

Comprobaciones de estado disponibles

Amazon EC2 Auto Scaling puede determinar el estado de una instancia a partir de lo siguiente:

Tipo de comprobación de estado ¿Qué se comprueba?

Comprobaciones de estado y eventos programados de Amazon EC2

Garantiza que la instancia se esté ejecutando y de que no haya problemas de hardware ni software subyacentes que puedan perjudicar la instancia. Las comprobaciones de estado predeterminadas de un grupo de Auto Scaling son comprobaciones de estado de Amazon EC2 y eventos programados únicamente.

Comprobaciones de estado Elastic Load Balancing

Comprueba si el equilibrador de carga informa de que la instancia está en buen estado para garantizar que la instancia esté disponible para controlar las solicitudes. Solo se comprueba si habilitó las comprobaciones de estado para un grupo de Auto Scaling.

Comprobaciones de estado personalizadas

Garantiza que no haya otros problemas que indiquen incidencias en el estado de las instancias según las comprobaciones de estado personalizadas.

Detección del estado de una instancia

Cuando se lanza una instancia, se adjunta al grupo de Auto Scaling y entra en estado InService. Para obtener información sobre los distintos estados del ciclo de vida de las instancias de un grupo de Auto Scaling, consulte Ciclo de vida de instancias de Amazon EC2 Auto Scaling.

Para comprobar que todas las instancias del grupo de Auto Scaling estén en ejecución y en buen estado, Amazon EC2 Auto Scaling comprueba periódicamente el estado de las instancias.

Las comprobaciones de estado

Amazon EC2 Auto Scaling utiliza los resultados de las comprobaciones de estado de instancias de Amazon EC2 Auto Scaling y las comprobaciones de estado del sistema para determinar el estado de una instancia. Si la instancia se encuentra en cualquier estado de Amazon EC2 distinto de running o si el estado de las comprobaciones de estado se vuelve impaired, Amazon EC2 Auto Scaling considera que la instancia está en mal estado y la reemplaza. Esto ocurre cuando la instancia tiene alguno de los estados siguientes:

  • stopping

  • stopped

  • shutting-down

  • terminated

Las comprobaciones de estado de Amazon EC2 no requieren ninguna configuración especial y siempre están habilitadas. Para obtener más información, consulte Tipos de comprobaciones de estado en la Guía del usuario de Amazon EC2 para instancias de Linux.

importante

Amazon EC2 Auto Scaling permite que estas comprobaciones de estado generen errores ocasionalmente sin realizar ninguna acción. Cuando se produce un error en una comprobación de estado, Amazon EC2 Auto Scaling espera unos minutos para que AWS solucione el problema. No marca de inmediato una instancia como en mal estado cuando el estado de las comprobaciones de estado se vuelve impaired.

Sin embargo, si Amazon EC2 Auto Scaling detecta que una instancia ya no se encuentra en estado running, esta situación se trata como un error inmediato; en cuyo caso, marca inmediatamente la instancia como en mal estado y la reemplaza.

Eventos programados

Un evento programado es un evento programado futuro de reinicio o retirada. Si una de las instancias se ve afectada por un evento programado, Amazon EC2 Auto Scaling considera que la instancia está en mal estado y la reemplaza casi de inmediato. No espera a que se alcance la hora programada. Para obtener más información, consulte Tipos de eventos programados en la Guía del usuario de Amazon EC2 para instancias de Linux.

Comprobaciones de estado Elastic Load Balancing

Además, Amazon EC2 Auto Scaling puede utilizar los resultados de las comprobaciones de estado de Elastic Load Balancing para determinar el estado de una instancia. Si adjunta un equilibrador de carga de Elastic Load Balancing al grupo de Auto Scaling, Amazon EC2 Auto Scaling registra las instancias con este equilibrador. Una vez que se termina de registrar una instancia, ingresa al estado InService y estará disponible para su uso con el equilibrador de carga.

De forma predeterminada, las comprobaciones de estado de Elastic Load Balancing no están habilitadas. Cuando habilita estas comprobaciones de estado y Elastic Load Balancing informa de una instancia registrada como unhealthy, Amazon EC2 Auto Scaling marca la instancia como en mal estado en su próxima comprobación de estado periódica y la reemplaza. Si el drenaje de conexión (retardo de anulación del registro) está habilitado para el equilibrador de carga, Amazon EC2 Auto Scaling espera a que se completen las solicitudes en curso o a que se agote el tiempo de espera máximo, lo que ocurra primero, antes de finalizar las instancias en mal estado.

Para obtener más información, como, por ejemplo, cómo actualizar el grupo de Auto Scaling para habilitar las comprobaciones de estado de Elastic Load Balancing, consulte Agregar comprobaciones de estado de Elastic Load Balancing a un grupo de Auto Scaling.

Tareas personalizadas de detección de estado

En ocasiones, puede que también desee ejecutar tareas personalizadas de detección de estado en las instancias del grupo de Auto Scaling y establecer el estado de una instancia como incorrecto si la tarea tiene errores. Al hacerlo, las comprobaciones de estado se amplían mediante una combinación de comprobaciones de estado personalizadas, comprobaciones de estado de Amazon EC2 y comprobaciones de estado de Elastic Load Balancing, si están habilitadas.

Puede enviar la información de estado de la instancia directamente a Amazon EC2 Auto Scaling mediante la AWS CLI o un SDK. En los ejemplos siguientes se muestra cómo utilizar la AWS CLI para configurar el estado de una instancia y, a continuación, comprobar su estado.

Utilice el siguiente comando set-instance-health para establecer el estado de la instancia especificada en Unhealthy.

aws autoscaling set-instance-health --instance-id i-123abc45d --health-status Unhealthy

Utilice el comando describe-auto-scaling-groups para verificar que el estado de la instancia sea Unhealthy.

aws autoscaling describe-auto-scaling-groups --auto-scaling-group-names my-asg

A continuación se incluye una respuesta de ejemplo que muestra que el estado de la instancia es Unhealthy y que la instancia está terminando.

{ "AutoScalingGroups": [ { .... "Instances": [ { "ProtectedFromScaleIn": false, "AvailabilityZone": "us-west-2a", "LaunchTemplate": { "LaunchTemplateName": "my-launch-template", "Version": "1", "LaunchTemplateId": "lt-050555ad16a3f9c7f" }, "InstanceId": "i-123abc45d", "HealthStatus": "Unhealthy", "LifecycleState": "Terminating" }, ... ] } ] }

Reemplazo de instancias en mal estado

Si Amazon EC2 Auto Scaling determina que una instancia de InService no está en buen estado, la instancia se termina casi de inmediato. No recupera nunca automáticamente su estado. Puede intervenir manualmente llamando al comando set-instance-health para volver a establecer la instancia con un estado correcto. Si la instancia ya está terminando, aparecerá un error.

Como el intervalo entre marcar una instancia como en mal estado y su terminación real es muy pequeño, el intento de volver a establecer la instancia como en un estado correcto con el comando set-instance-health probablemente solo sea útil en los casos en los que se suspenda el proceso ReplaceUnhealthy. Para obtener más información, consulte Suspender y reanudar un proceso para un grupo de Auto Scaling .

Amazon EC2 Auto Scaling crea una nueva actividad de escalado para terminar la instancia en mal estado y, a continuación, la termina. Luego, otra actividad de escalado lanza una instancia nueva para sustituir la instancia terminada.

Cuando vea la pestaña Activity (Actividad) del grupo de Auto Scaling, verá que estas actividades se enumeran en el historial de actividades. Para obtener más información, consulte Verificación de una actividad de escalado para un grupo de Auto Scaling .

Si necesita que suceda algo en la instancia que está terminando o en la instancia que se está iniciando, puede usar enlaces de ciclo de vida. Estos enlaces permiten realizar una acción personalizada a medida que Amazon EC2 Auto Scaling lanza o termina instancias. Para obtener más información, consulte Enlaces de ciclo de vida de Amazon EC2 Auto Scaling .

Consideraciones acerca de las comprobaciones de estado

  • Para proporcionar suficiente tiempo para que las instancias nuevas estén listas para comenzar a controlar las solicitudes sin que se terminen debido a comprobaciones de estado con error, realice una de las siguientes acciones, o ambas:

    • Establezca el periodo de gracia de la comprobación de estado del grupo para que coincida con el periodo de inicio previsto de la aplicación. Para obtener más información, consulte la sección Periodo de gracia de la comprobación de estado.

    • Agregue un enlace de ciclo de vida al grupo para asegurarse de que las instancias estén completamente configuradas antes de que estén listas para atender el tráfico al final del enlace de ciclo de vida. Para obtener más información, consulte Enlaces de ciclo de vida de Amazon EC2 Auto Scaling .

  • Durante el periodo de gracia de la comprobación de estado, si Amazon EC2 Auto Scaling detecta que una instancia ya no se encuentra en el estado running, la marca como en mal estado y la reemplaza. Por ejemplo, esto puede ocurrir cuando se detiene una instancia. Amazon EC2 Auto Scaling tiene dos opciones para detener una instancia InService. Puede poner la instancia en espera durante un periodo o desconectarla del grupo.

  • Amazon EC2 Auto Scaling no ofrece una forma de eliminar las comprobaciones de estado de Amazon EC2 y los eventos programados de sus comprobaciones de estado. Si no desea que se reemplacen las instancias, le recomendamos suspender el proceso ReplaceUnhealthy y HealthCheck para los grupos de Auto Scaling individuales. Para obtener más información, consulte Suspender y reanudar un proceso para un grupo de Auto Scaling .

  • Amazon EC2 Auto Scaling no realiza comprobaciones de estado en las instancias que se encuentran en estado Standby. Para obtener más información, consulte Eliminar temporalmente instancias de un grupo de Auto Scaling .

  • Cuando se termina la instancia, todas las direcciones IP elásticas asociadas se desasocian y no se asocian automáticamente a la nueva instancia. Tiene que asociar estas direcciones IP elásticas a la instancia nueva manualmente, o automáticamente mediante una solución basada en un enlace de ciclo de vida. Para obtener más información, consulte Direcciones IP elásticas en la Guía del usuario de Amazon EC2 para instancias de Linux.

  • Del mismo modo, cuando se termina la instancia, los volúmenes de EBS adjuntos se desconectan (o eliminan, según el atributo DeleteOnTermination del volumen). Tiene que conectar estos volúmenes de EBS a la nueva instancia manualmente, o automáticamente con una solución basada en un enlace de ciclo de vida. Para obtener más información, consulte Adjuntar un volumen de Amazon EBS a una instancia en la Guía del usuario de Amazon EC2 para instancias de Linux.

Periodo de gracia de la comprobación de estado

El parámetro HealthCheckGracePeriod del grupo de Auto Scaling ayuda a Amazon EC2 Auto Scaling a distinguir las instancias en mal estado de las instancias recién lanzadas que aún no están listas para atender el tráfico. Con el periodo de gracia se puede evitar que Amazon EC2 Auto Scaling marque las instancias InService como en mal estado y las termine antes de que tengan tiempo de inicializarse.

De forma predeterminada, el periodo de gracia de la comprobación de estado es de 300 segundos cuando se crea un grupo de Auto Scaling desde la AWS Management Console. Su valor predeterminado es de 0 segundos cuando se crea un grupo de Auto Scaling con la AWS CLI o un SDK.

Configure este valor con un valor mayor o igual a la cantidad máxima de tiempo de inicio necesario para la aplicación, desde el momento en que se inicia una instancia hasta el momento en que puede recibir tráfico. Si agrega un enlace de ciclo de vida, puede reducir el valor del periodo de gracia de la comprobación de estado. Cuando se invocan enlaces de ciclo de vida, el periodo de gracia no comienza hasta que se completan las acciones de los enlaces de ciclo de vida y la instancia pasa al estado InService.

Cuando utiliza la AWS CLI o un SDK para establecer el estado de las instancias como en mal estado, el comportamiento predeterminado es no esperar a que finalice el periodo de gracia. Sin embargo, puede anular este comportamiento y respetar el periodo de gracia.

Para configurar el periodo de gracia de la comprobación de estado (consola)

Cuando cree el grupo de Auto Scaling, en la página Configure advanced options (Configurar opciones avanzadas), en Health checks (Comprobaciones de estado), Health check grace period (Periodo de gracia de la comprobación de estado), elija la cantidad de tiempo de inicio que necesita su aplicación.

Para modificar el periodo de gracia de la comprobación de estado de un grupo existente (consola)

  1. Abra la consola de Amazon EC2 Auto Scaling en https://console.aws.amazon.com/ec2autoscaling y elija la Región de AWS en la que creó el grupo de Auto Scaling.

  2. Seleccione la casilla situada junto al grupo de Auto Scaling.

    Se abre un panel dividido en la parte inferior de la página Auto Scaling groups (Grupos de Auto Scaling).

  3. En la pestaña Details (Detalles), elija Health checks (Comprobaciones de estado), Edit (Editar).

  4. En Health check grace period (Periodo de gracia de la comprobación de estado), elija la cantidad de tiempo de inicio que necesita su aplicación.

  5. Elija Update (Actualizar).

Información adicional

Para obtener información sobre la solución de problemas de las comprobaciones de estado, consulte Solucionar problemas de Amazon EC2 Auto Scaling: comprobaciones de estado. Si hay errores en las comprobaciones de estado, consulte este tema para conocer los pasos de solución de problemas. El tema siguiente le ayudará a averiguar qué ha fallado en el grupo de Auto Scaling y le proporcionará sugerencias sobre cómo solucionarlo.

Amazon EC2 Auto Scaling también supervisa el estado de las instancias que lanza en un grupo de calentamiento mediante Amazon EC2, Amazon EBS o comprobaciones de estado personalizadas. Para obtener más información, consulte Ver el estado de la comprobación de estado y el motivo de los errores de la comprobación de estado .