Recuperaciones de escalado para Amazon EC2 Auto Scaling - Amazon EC2 Auto Scaling

Recuperaciones de escalado para Amazon EC2 Auto Scaling

Una recuperación de escalado contribuye a evitar que el grupo de Auto Scaling lance o termine instancias adicionales antes de que los efectos de las actividades anteriores sean visibles.

Cuando se utiliza el escalado sencillo, después de que el grupo de Auto Scaling se escale mediante una política de escalado sencillo, se espera a que finalice un periodo de recuperación antes de que puedan comenzar otras actividades de escalado iniciadas por políticas de escalado sencillo. Un periodo de recuperación adecuado ayuda a prevenir el inicio de una actividad de escalado adicional basada en métricas obsoletas. De forma predeterminada, todas las políticas de escalado sencillo utilizan el periodo de recuperación predeterminado asociado al grupo de Auto Scaling, pero puede configurar un periodo de recuperación diferente para determinadas políticas, como se describe en las secciones siguientes. Para obtener más información acerca del escalado simple, consulte Políticas de escalado sencillo y por pasos.

importante

En la mayoría de los casos, una política de escalado de seguimiento de destino o una política de escalado por pasos es mejor para escalar el rendimiento que esperar a que transcurra un período de tiempo fijo después de una actividad de escalado. Para una política de escalado que cambie el tamaño del grupo proporcionalmente a medida que el valor de la métrica de escalado disminuya o aumente, recomendamos el seguimiento de destino en lugar del escalado sencillo o por pasos.

Durante un período de recuperación, cuando una acción programada comienza a la hora programada o cuando se inician las actividades de escalado debido al seguimiento de destino o las políticas de escalado de pasos, pueden desencadenar una actividad de escalado inmediatamente sin esperar a que finalice el período de recuperación. Si una instancia adopta un estado incorrecto, Amazon EC2 Auto Scaling tampoco espera a que se complete el periodo de recuperación antes de reemplazar la instancia en mal estado.

Cuando escala manualmente el grupo de Auto Scaling, la opción predeterminada no es esperar a que finalice el periodo de recuperación, pero puede invalidar este comportamiento y respetar el periodo de recuperación cuando hace una llamada a la API.

Periodo de recuperación predeterminado

Un periodo de recuperación predeterminado se aplica automáticamente a todas las actividades de escalado para las políticas de escalado sencillo y puede solicitar, si lo desea, que se aplique a las actividades de escalado manual. Puede configurar el periodo de tiempo en función del periodo de preparación de las instancias u otras necesidades de la aplicación.


                        Un diagrama de flujo que muestra cómo un periodo de recuperación afecta a las acciones de escalado.

Cuando utiliza la AWS Management Console para actualizar un grupo de Auto Scaling, o cuando utiliza la AWS CLI o un SDK para crear o actualizar un grupo de Auto Scaling, puede establecer el parámetro de periodo de recuperación predeterminado opcional. Si no se proporciona un valor para el periodo de recuperación predeterminado, su valor predeterminado es de 300 segundos.

Para modificar un periodo de recuperación predeterminado (consola)

Cree el grupo de Auto Scaling de la manera habitual. Después de crear el grupo de Auto Scaling, edite el grupo para especificar el periodo de recuperación predeterminado.

Para modificar un periodo de recuperación predeterminado (AWS CLI)

Utilice uno de los siguientes comandos:

Periodo de recuperación específico del escalado

Además de especificar el periodo de recuperación predeterminado para su grupo de Auto Scaling, puede crear periodos de recuperación que se apliquen a una política de escalado sencillo. Un período de recuperación específico del escalado invalida el periodo de recuperación predeterminado.

Un uso común para un periodo de recuperación específico del escalado es con una política de escalado descendente. Como esta política termina instancias, Amazon EC2 Auto Scaling necesita menos tiempo para determinar si debe terminar instancias adicionales. La terminación de instancias debe ser una operación mucho más rápida que el lanzamiento de instancias. Por lo tanto, el periodo de recuperación predeterminado de 300 segundos es demasiado largo. En este caso, un periodo de recuperación específico del escalado con un valor inferior de 180 segundos para su política de escalado descendente puede ayudarle a reducir los costos al permitir que el grupo se escale más rápido.

Para especificar un periodo de recuperación específico del escalado, utilice el parámetro de recuperación opcional al crear o actualizar una política de escalado sencillo. Para obtener más información, consulte Políticas de escalado sencillo y por pasos.

Ejemplo de escenario de recuperación de escalado sencillo

Considere el siguiente escenario: dispone de una aplicación web que se ejecuta en AWS. Esta aplicación web se compone de tres niveles básicos: web, aplicación y base de datos. Si desea asegurarse de que la aplicación siempre tiene recursos para satisfacer la demanda de tráfico, debe crear dos grupos de Auto Scaling: uno para la capa web y otro para la capa de aplicación.


                        Una arquitectura de red básica con una capa web y una capa de aplicación.

Para garantizar que el grupo de la capa de aplicación tenga el número adecuado de instancias EC2, cree una política de escalado sencillo que realice un escalado horizontal cada vez que el valor de la métrica de CloudWatch asociada a la política de escalado supere un umbral especificado durante periodos consecutivos especificados. Cuando la alarma de CloudWatch desencadena la política de escalado, el grupo de Auto Scaling lanza y configura otra instancia.

Estas instancias utilizan un script de configuración para instalar y configurar el software antes de que la instancia se ponga en servicio. Por tanto, transcurren alrededor de dos o tres minutos desde el momento en que se lanza la instancia hasta que está completamente en servicio. El tiempo real depende de varios factores, como el tamaño de la instancia y si hay scripts de inicio que deben completarse.

Ahora se produce un pico de tráfico, que hace que se active la alarma de CloudWatch. Cuando sucede esto, el grupo de Auto Scaling lanza una instancia para ayudar con el aumento de la demanda. Sin embargo, hay un problema: la instancia tarda un par de minutos en lanzarse. Durante ese tiempo, la alarma de CloudWatch podría continuar activándose cada minuto para cualquier alarma de resolución estándar, lo que haría que el grupo de Auto Scaling lanzase otra instancia cada vez que se activase la alarma.


                        Ejemplo de cómo funciona una alarma de CloudWatch con una política de escalado

Sin embargo, si se dispone de un periodo de recuperación, el grupo de Auto Scaling lanza una instancia y, a continuación, bloquea las actividades de escalado debidas a las políticas de escalado sencillo hasta que transcurre el tiempo especificado. (El valor predeterminado es de 300 segundos). De este modo, se da tiempo a las instancias recién lanzadas para que empiecen a controlar el tráfico de la aplicación. Una vez que finalice el período de recuperación, las actividades de escalado que se activan después del período de recuperación pueden reanudarse. Si la alarma de CloudWatch se vuelve a activar, el grupo de Auto Scaling lanza otra instancia y vuelve a aplicarse el periodo de recuperación. Sin embargo, si la instancia adicional fue suficiente para reducir la métrica, el grupo permanecerá con su tamaño actual.

Periodos de recuperación y varias instancias

En las secciones anteriores se han proporcionado ejemplos que ilustran cómo afectan los periodos de recuperación a los grupos de Auto Scaling cuando se lanza o se termina una sola instancia. Sin embargo, es habitual que los grupos de Auto Scaling lancen más de una instancia al mismo tiempo. Por ejemplo, puede elegir que el grupo de Auto Scaling lance tres instancias cuando se alcance el umbral de una métrica específica.

Con varias instancias, el periodo de recuperación (tanto el predeterminado como el específico del escalado) surte efecto a partir del momento en que finaliza el lanzamiento o la terminación de la última instancia.

Periodos de recuperación y enlaces de ciclo de vida

Tiene la opción de agregar enlaces de ciclo de vida a los grupos de Auto Scaling. Estos enlaces le permiten controlar la forma en que las instancias se lanzan y terminan dentro de un grupo de Auto Scaling para que pueda realizar acciones personalizadas en una instancia antes de que entre en servicio o antes de que termine. 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. Para obtener más información, consulte Enlaces de ciclo de vida de Amazon EC2 Auto Scaling.

Los enlaces de ciclo de vida pueden afectar al tiempo de inicio de los periodos de recuperación configurados para el grupo de Auto Scaling. Por ejemplo, suponga que tiene un grupo de Auto Scaling con un enlace de ciclo de vida que admite una acción personalizada cuando se lanza una instancia. Cuando la aplicación experimenta un aumento de la demanda debido a una política de escalado sencillo, el grupo lanza una instancia para agregar capacidad. Como hay un enlace de ciclo de vida, la instancia se pone en estado Pending:Wait, lo que significa que aún no está disponible para controlar el tráfico. Cuando la instancia entra en el estado de espera, se detienen las actividades de escalado debido a las políticas de escalado sencillo. Cuando la instancia pasa a tener el estado InService, se inicia el periodo de recuperación. Cuando finaliza el periodo de recuperación, las actividades de escalado que se activan después del periodo de recuperación pueden reanudarse.

No todos los tiempos de reutilización se aplican después de la ejecución de los enlaces del ciclo de vida

Normalmente, cuando una instancia está finalizando, el período de recuperación no comienza hasta después de que la instancia salga del estado Terminating:Wait (una vez finalizada la ejecución del enlace del ciclo de vida).

Sin embargo, con Elastic Load Balancing, el grupo de Auto Scaling inicia el periodo de recuperación cuando la instancia de terminación finaliza Connection Draining (demora por anulación de registro) por el balanceador de carga y no espera al enlace del ciclo de vida. Esto es útil para grupos que tienen políticas de escalado simples tanto para escalar como para desescalar. La intención de un período de recuperación es permitir que la siguiente actividad de escalado ocurra tan pronto como los efectos de las actividades anteriores sean visibles. Si una instancia está finalizando y, a continuación, la demanda de la aplicación aumenta repentinamente, cualquier actividad de escalado debido a políticas de escalado simples que estén en pausa puede reanudarse una vez que se haya agotado el connection draining y finalice el período de recuperación. De lo contrario, esperar a que se completen las tres actividades (Connection Draining, gancho de ciclo de vida y periodo de recuperación) aumenta significativamente la cantidad de tiempo que el grupo de Auto Scaling necesita pausar el escalado.