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

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

Enganches de ciclo de vida de Amazon EC2 Auto Scaling

Amazon EC2 Auto Scaling ofrece la posibilidad de añadir enlaces del ciclo de vida a sus grupos de Auto Scaling. Estos enlaces permiten que un grupo de Auto Scaling tenga en cuenta los eventos del ciclo de vida de la instancia Auto Scaling y, a continuación, realice una acción personalizada cuando se produzca el evento del ciclo de vida correspondiente. Un enlace del ciclo de vida proporciona una cantidad de tiempo especificada (una hora de forma predeterminada) para completar la acción del ciclo de vida antes de que la instancia pase al siguiente estado.

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

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

  • Cuando ocurre un evento de escalado descendente, un enlace de ciclo de vida pausa la instancia antes de que termine y le envía una notificación a través de Amazon EventBridge. Mientras la instancia se encuentra en estado de espera, puede invocar unAWS LambdaConéctese a la instancia para descargar registros u otros datos antes de que la instancia se termine por completo.

Un uso popular de los ganchos del ciclo de vida es controlar cuándo se registran instancias con Elastic Load Balancing. Al agregar un enlace del ciclo de vida de lanzamiento al grupo Auto Scaling, puede asegurarse de que las aplicaciones de las instancias estén listas para aceptar tráfico antes de registrarse en el equilibrador de carga al final del enlace del ciclo de vida.

nota

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

Cómo funcionan los enlaces de ciclo de vida

Después de agregar enlaces de ciclo de vida al grupo de Auto Scaling, estos funcionan de la manera siguiente:

  1. Auto Scaling (Scaling automático) responde a un evento de escalado ascendente y comienza a lanzar una instancia.

  2. El enlace de ciclo de vida cambia la instancia a un estado de espera (Pending:Wait) y, a continuación, realiza una acción personalizada.

    La instancia permanece en un estado de espera hasta que complete la acción del ciclo de vida mediante la herramientaacción del ciclo de vida completoo el comando de la CLICompleteLifecycleActiono hasta que finalice el periodo de tiempo de espera. De forma predeterminada, la instancia permanece en estado de espera durante una hora y, a continuación, el grupo de Auto Scaling continúa con el proceso de lanzamiento (Pending:Proceed). Si necesita más tiempo, puede reiniciar el periodo de tiempo de espera registrando un latido. Si completa la acción del ciclo de vida antes de que expire el período de tiempo de espera, el período finaliza y el grupo Auto Scaling continúa con el proceso de lanzamiento.

  3. La instancia ingresa a la propiedadInServiceSe inicia el periodo de gracia para la comprobación de estado. Si el grupo de Auto Scaling está asociado a un balanceador de carga de Elastic Load Balancing, la instancia se registra en el balanceador de carga y el balanceador de carga comienza a comprobar su estado. Cuando termina el periodo de gracia de la comprobación de estado, Amazon EC2 Auto Scaling comienza a comprobar el estado de la instancia.

  4. Auto Scaling (Scaling automático) responde a un evento de escalado descendente y comienza a terminar una instancia. En caso de que el grupo de Auto Scaling se utilice con Elastic Load Balancing, primero se anula el registro de la instancia que terminará en el balanceador de carga. Si el drenaje de conexiones está habilitado para el equilibrador de carga, la instancia deja de aceptar nuevas conexiones y espera a que las conexiones existentes se agoten antes de completar el proceso de anulación del registro.

  5. El enlace de ciclo de vida cambia la instancia a un estado de espera (Terminating:Wait) y, a continuación, realiza una acción personalizada.

    La instancia permanece en estado de espera hasta que se completa la acción del ciclo de vida o hasta que finalice el periodo de tiempo de espera (que, de forma predeterminada, es de una hora). Después de completar el enlace del ciclo de vida o expirar el período de tiempo de espera, la instancia pasa al siguiente estado (Terminating:Proceed).

  6. La instancia de ha finalizado.

En la siguiente ilustración se muestran las transiciones entre los estados de la instancia Auto Scaling en este proceso.


                El ciclo de vida de instancias que usan enlaces de ciclo de vida.

Condiciones y limitaciones

Al utilizar enlaces de ciclo de vida, tenga en cuenta las siguientes consideraciones y limitaciones:

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

  • Amazon EC2 Auto Scaling limita la velocidad a la que permite que las instancias se inicien si los enlaces del ciclo de vida fallan de forma coherente.

  • Puede utilizar enlaces de ciclo de vida con instancias de spot. Sin embargo, un enlace de ciclo de vida no impide que se termine una instancia en caso de que ya no esté disponible la capacidad, lo que puede ocurrir en cualquier momento con un aviso de interrupción de dos minutos. Para obtener más información, consulteInterrupciones de instancias de spoten laGuía del usuario de Amazon EC2 para instancias de Linux.

  • Al escalar hacia fuera, Amazon EC2 Auto Scaling no cuenta una nueva instancia para las métricas agregadas de CloudWatch del grupo Auto Scaling hasta que finalice el gancho del ciclo de vida de lanzamiento (y se complete el tiempo de calentamiento de la política de escalado). Al escalar en, la instancia de terminación continúa contando como parte de las métricas agregadas del grupo hasta que finalice el enlace del ciclo de vida de terminación.

  • Cuando un grupo de Auto Scaling lanza o termina una instancia debido a políticas de escalado sencillas, se aplica un periodo de recuperación. El período de recuperación ayuda a garantizar que el grupo de Auto Scaling no lance ni termine más instancias de las necesarias antes de que los efectos de las actividades de escalado sencillo anteriores sean visibles. Cuando se produce una acción del ciclo de vida y una instancia entra en estado de espera, se detienen las actividades de escalado a causa de las políticas de escalado sencillo. Cuando terminan las acciones del ciclo de vida, comienza el periodo de recuperación. Si establece un intervalo largo para el período de recuperación, el escalado tardará más tiempo en reanudarse. Para obtener más información, consulte Reutilización de escalado descendente de Amazon EC2 Auto Scaling.

  • Existe una cuota que especifica el número máximo de enlaces de ciclo de vida que puede crear por grupo de Auto Scaling. Para obtener más información, consulte Cuotas de servicio de Amazon EC2 Auto Scaling.

  • Para obtener ejemplos del uso de enlaces de ciclo de vida, consulte las siguientes entradas de blog: Creación de un sistema de copia de seguridad para instancias escaladas mediante el comando Lambda y Amazon EC2 RunyEjecutar código antes de finalizar una instancia de EC2 Auto Scaling.

Mantener las instancias en un estado de espera

Las instancias pueden permanecer en un estado de espera durante un periodo de tiempo limitado. El valor predeterminado es una hora (3600 segundos).

Puede ajustar la duración del periodo de tiempo de espera de las siguientes formas:

  • Establezca el tiempo de espera del latido del enlace de ciclo de vida cuando cree dicho enlace. Con laput-ciclo de vida de gancho, utilice el comando--heartbeat-timeoutopción.

  • Continúe hasta el siguiente estado si termina antes de que finalice el periodo de tiempo de espera mediante elacción del ciclo de vida completocomando.

  • Posponga el final del periodo de tiempo de espera registrando un latido con el botónrécord, ciclo de vida, acción-latido del corazóncomando. De esta forma, se incrementa el tiempo de espera en el valor especificado cuando creó el enlace de ciclo de vida. Por ejemplo, si el valor de tiempo de espera es de una hora y llama a este comando después de 30 minutos, la instancia permanece en estado de espera durante una hora adicional o un total de 90 minutos.

El tiempo máximo que puede mantener una instancia en estado de espera es de 48 horas o 100 veces el tiempo de espera del latido, lo que sea menor.

Recepción de notificaciones de enlace de ciclo de vida

Puede configurar varias reglas de EventBridge para invocar una función Lambda o enviar una notificación cuando una instancia entra en un estado de espera y Amazon EC2 Auto Scaling envía un evento para una acción del ciclo de vida a EventBridge. El evento contiene información sobre la instancia que se va a lanzar o terminar, y un token que puede utilizar para controlar la acción del ciclo de vida. Para obtener una guía introductoria de estilo de aprendizaje para crear vínculos de ciclo de vida, consulteTutorial: Para configurar un enlace de ciclo de vida que invoca a una función Lambda. Para obtener ejemplos de los eventos que se emiten cuando se produce una acción del ciclo de vida, consulteEventos Auto Scaling.

Sin embargo, si tiene datos de usuario o script de cloud-init que configura las instancias después de lanzarlas, no es necesario configurar una notificación. El script puede controlar la acción del ciclo de vida usando el ID de la instancia en la que se ejecuta. Si aún no lo ha hecho, actualice el script para recuperar el ID de instancia de la instancia de los metadatos de la instancia. Para obtener más información, consulteRecuperación de metadatos de instanciaen laGuía del usuario de Amazon EC2 para instancias de Linux. Puede hacer que el script señale el gancho del ciclo de vida cuando se complete el script de configuración, para permitir que la instancia continúe al siguiente estado.

nota

La consola Amazon EC2 Auto Scaling no ofrece la opción de definir un destino de notificación de Amazon SNS o Amazon SQS para el gancho del ciclo de vida. Estos ganchos del ciclo de vida se deben agregar mediante el comandoAWS CLIo uno de los SDK. Para obtener más información, consulte Configuración de notificaciones.

Repositorio GitHub

Puedes visitar nuestraRepositorio GitHubPara descargar plantillas y secuencias de comandos para enlaces de ciclo de vida.

Disponibilidad de enlaces de ciclo de vida

En la tabla siguiente se indican los enlaces de ciclo de vida disponibles para varios escenarios.

Evento Inicio o terminación de la instancia¹ Duración de la instancia máxima: Instancias de reemplazo Actualizaciones de instancias: Instancias de reemplazo Reequilibrio de la capacidad: Instancias de reemplazo Piscinas calientes: Instancias que entran y salen de la piscina caliente
Lanzamiento de instancias
Terminación de instancias

¹ 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 enlazar o separar instancias, mover instancias dentro y fuera del modo de espera o eliminar el grupo con la opción Forzar eliminación.