Enlaces de ciclo de vida de Amazon EC2 Auto Scaling - Amazon EC2 Auto Scaling

Enlaces de ciclo de vida de Amazon EC2 Auto Scaling

Amazon EC2 Auto Scaling ofrece la posibilidad de agregar enlaces de ciclo de vida a los grupos de Auto Scaling. Estos enlaces le permiten crear soluciones que tengan en cuenta los eventos del ciclo de vida de la instancia de Auto Scaling y que, a continuación, realicen una acción personalizada en las instancias cuando se produzca el evento del ciclo de vida correspondiente. Un enlace de ciclo de vida proporciona una cantidad de tiempo especificada (una hora de forma predeterminada) para esperar a que se complete la acción antes de que la instancia pase al siguiente estado.

Como ejemplo del uso de enlaces de ciclo de vida con instancias de Auto Scaling:

  • Cuando ocurre un evento de escalado horizontal, la instancia que se acaba de lanzar completa la secuencia de arranque y pasa a un estado de espera. Mientras la instancia se encuentra en un estado de espera, ejecuta un script para descargar e instalar los paquetes de software necesarios para la aplicación, asegurándose de que la instancia esté completamente lista antes de que comience a recibir tráfico. Cuando el script ha terminado de instalar el software, envía el comando complete-lifecycle-action para continuar.

  • Cuando ocurre un evento de reducción horizontal, un enlace de ciclo de vida pausa la instancia antes de que termine y le envía una notificación mediante Amazon EventBridge. Mientras la instancia se encuentra en estado de espera, puede invocar una función AWS Lambda o conectarse a la instancia para descargar registros u otros datos antes de que la instancia se termine por completo.

Un uso popular de los enlaces de ciclo de vida es controlar cuándo se registran instancias en Elastic Load Balancing. Si agrega un enlace de ciclo de vida de lanzamiento al grupo de Auto Scaling, puede asegurarse de que los scripts de arranque se hayan completado correctamente y que las aplicaciones de las instancias estén listas para aceptar tráfico antes de que se registren en el balanceador de carga al final del enlace de ciclo de vida.

Para ver un vídeo de introducción, consulteAWS re:Invent 2018: Capacity Management Made Easy with Amazon EC2 Auto Scaling en YouTube.

Consideraciones y limitaciones de enlaces de ciclo de vida

Cuando utilice enlaces de ciclo de vida, tenga en cuenta las siguientes consideraciones y limitaciones:

  • Amazon EC2 Auto Scaling proporciona su propio ciclo de vida para ayudar con la administración de grupos de Auto Scaling. Este ciclo de vida difiere del de otras instancias EC2. Para obtener más información, consulte Ciclo de vida de instancias de Amazon EC2 Auto Scaling .

  • Las instancias de un grupo de calentamiento también tienen su propio ciclo de vida, como se describe en Transiciones de estado del ciclo de vida para las instancias de un grupo de calentamiento.

  • Puede utilizar enlaces de ciclo de vida con instancias de spot, pero un enlace de ciclo de vida no impide que se termine una instancia si esa capacidad ya no está disponible, lo que puede suceder en cualquier momento con un aviso de interrupción de dos minutos. Para obtener más información, consulte Interrupciones de instancias de spot en la Guía del usuario de Amazon EC2 para instancias de Linux. Sin embargo, puede habilitar el reequilibrio de la capacidad para reemplazar de forma proactiva las instancias de spot que han recibido una recomendación de reequilibrio del servicio de spot de Amazon EC2, una señal que se envía cuando una instancia de spot tiene un riesgo elevado de interrupción. Para obtener más información, consulte Utilizar el reequilibrio de capacidad para gestionar las interrupciones de spot de Amazon EC2 .

  • Durante un escalado horizontal, Amazon EC2 Auto Scaling no tiene en cuenta una nueva instancia en las métricas agrupadas de la instancia de CloudWatch del grupo de Auto Scaling (como CPUUtilization, NetworkIn, NetworkOut, entre otras) hasta que finalice el enlace de ciclo de vida de lanzamiento. Cuando la preparación predeterminada de instancias no está habilitada, o lo está pero establecida en 0, las instancias de Auto Scaling comienzan a aportar datos de uso a las métricas de instancia agregadas tan pronto como lleguen al estado InService. Para obtener más información, consulte Establecimiento de la preparación predeterminada de instancias para un grupo de escalado automático .

    Cuando se reduce horizontalmente, es posible que las métricas de instancias agregadas no reflejen al instante la eliminación de una instancia de terminación. La instancia que termina deja de contar con respecto a las métricas agrupadas de la instancia del grupo poco después Amazon EC2 Auto Scaling comience el flujo de trabajo de terminación.

  • Cuando un grupo de Auto Scaling lanza o termina instancias, se ponen en pausa las actividades de escalado iniciadas por políticas de escalado sencillo. Si se invocan enlaces de ciclo de vida, las actividades de escalado debidas a políticas de escalado sencillo se ponen en pausa hasta que se hayan completado las acciones de ciclo de vida y el periodo de recuperación haya vencido. Si se establece un intervalo largo para el periodo de recuperación, el escalado tardará más tiempo en reanudarse. Para obtener más información, consulte Recuperaciones de escalado para Amazon EC2 Auto Scaling .

  • Las instancias pueden permanecer en un estado de espera durante un periodo de tiempo limitado. El tiempo de espera predeterminado para un enlace de ciclo de vida es de una hora (tiempo de espera de latido). También hay un tiempo de espera global que especifica la cantidad máxima de tiempo que se puede mantener una instancia en estado de espera. El tiempo de espera global es de 48 horas, o 100 veces el tiempo de espera de latido, el que sea más corto.

Cuando cree enlaces de ciclo de vida, tenga en cuenta los siguientes puntos:

  • Puede configurar un enlace de ciclo de vida de inicio para abandonar el lanzamiento si se produce un error inesperado; en cuyo caso, Amazon EC2 Auto Scaling se termina automáticamente y reemplaza la instancia.

  • Amazon EC2 Auto Scaling limita la velocidad a la que permite el lanzamiento de instancias si los enlaces de ciclo de vida fallan de forma constante, de modo que asegúrese de probar y corregir cualquier error permanente en las acciones de ciclo de vida.

  • Crear y actualizar enlaces de ciclo de vida mediante la AWS CLI, AWS CloudFormation o un SDK proporciona opciones que no están disponibles cuando se crea un enlace de ciclo de vida desde la AWS Management Console. Por ejemplo, el campo para especificar el ARN de un tema de SNS o una cola de SQS no aparece en la consola, porque Amazon EC2 Auto Scaling ya envía eventos a Amazon EventBridge. Estos eventos se pueden filtrar y redirigir a servicios de AWS tales como Lambda, Amazon SNS y Amazon SQS, según sea necesario.

  • Puede agregar varios enlaces de ciclo de vida a un grupo de Auto Scaling mientras lo crea, llamando a la API CreateAutoScalingGroup con la AWS CLI, AWS CloudFormation o un SDK. No obstante, cada enlace debe tener el mismo destino de notificación y rol de IAM, si se especifica. Para crear enlaces de ciclo de vida con destinos de notificación y roles diferentes, cree los enlaces de ciclo de vida uno a uno en llamadas separadas a la API PutLifecycleHook.

Disponibilidad de los enlaces de ciclo de vida

En la tabla siguiente se enumeran los enlaces de ciclo de vida disponibles para varias situaciones.

Evento Inicio o terminación de la instancia¹ Duración máxima de instancia: instancias de reemplazo Actualización de instancia: instancias de reemplazo Reequilibrio de capacidad: instancias de reemplazo Grupos de calentamiento: instancias que entran y salen del grupo de calentamiento
Lanzamiento de la instancia
Terminación de la instancia

¹ Se aplica a instancias iniciadas o terminadas cuando se crea o elimina el grupo, cuando el grupo se escala automáticamente o cuando se ajusta manualmente la capacidad deseada del grupo. No se aplica al adjuntar o desconectar instancias, al poner o sacar instancias del modo de espera, o al eliminar el grupo con la opción para forzar la eliminación.

Ejemplos

Proporcionamos algunos fragmentos de plantillas JSON y YAML que puede utilizar para comprender cómo declarar enlaces de ciclo de vida en sus plantillas de pila de AWS CloudFormation. Para obtener más información, consulte la referencia AWS::AutoScaling::LifecycleHook en la Guía del usuario de AWS CloudFormation.

Puede visitar nuestro Repositorio de GitHub para descargar plantillas de ejemplo y scripts de datos de usuario para los enlaces de ciclo de vida.

Para obtener otros ejemplos del uso de enlaces de ciclo de vida, consulte las siguientes entradas de blog: Building a Backup System for Scaled Instances using Lambda and Amazon EC2 Run Command y Run code before terminating an EC2 Auto Scaling instance.