Optimización del escalado automático de clústeres de Amazon ECS - Amazon Elastic Container Service

Optimización del escalado automático de clústeres de Amazon ECS

Los clientes que ejecutan Amazon ECS en Amazon EC2 pueden aprovechar el escalado automático de clústeres para administrar el escalado de los grupos de Amazon EC2 Auto Scaling. Con el escalado automático de clústeres, puede configurar Amazon ECS para escalar automáticamente el grupo de escalado automático y centrarse únicamente en ejecutar las tareas. Amazon ECS garantizará que el grupo de escalado automático escale en forma ascendente y descendente según sea necesario, sin necesidad de ninguna otra intervención. Los proveedores de capacidad de Amazon ECS están acostumbrados a administrar la infraestructura del clúster al garantizar que haya instancias de contenedor suficientes para satisfacer las exigencias de la aplicación. Para obtener información sobre cómo funciona el escalado automático de clústeres, consulte Deep Dive on Amazon ECS Cluster Auto Scaling.

El escalado automático de clústeres se basa en una integración que se respalda en CloudWatch con el grupo de escalado automático para ajustar la capacidad del clúster. Por lo tanto, cuenta con una latencia inherente asociada.

  • Publicación de las métricas de CloudWatch

  • El tiempo que tardó la métrica CapacityProviderReservation en vulnerar las alarmas de CloudWatch (tanto altas como bajas).

  • El tiempo que tardó una instancia de Amazon EC2 recién lanzada en calentarse. Puede realizar las siguientes acciones para que el escalado automático de clústeres responda mejor y, de este modo, las implementaciones sean más rápidas:

Tamaños de escalado por pasos del proveedor de capacidad

Los proveedores de capacidad de Amazon ECS aumentarán o reducirán las instancias de contenedor para satisfacer las demandas de la aplicación. La cantidad mínima de instancias que Amazon ECS lanzará se establece en 1 de forma predeterminada. Esto puede agregar tiempo adicional a las implementaciones si se necesitan varias instancias para realizar las tareas pendientes. Puede aumentar el valor de minimumScalingStepSize a través de la API de Amazon ECS para aumentar el número mínimo de instancias que Amazon ECS escala o reduce horizontalmente cada vez. Un valor de maximumScalingStepSize demasiado bajo puede limitar el número de instancias de contenedor que se escalan o reducen horizontalmente cada vez, lo que puede ralentizar las implementaciones.

nota

Actualmente, esta configuración solo está disponible a través de las API CreateCapacityProvider o UpdateCapacityProvider.

Periodo de preparación de instancias

El periodo de preparación de instancias es el periodo de tiempo después del que una instancia de Amazon EC2 recién lanzada puede contribuir a las métricas de CloudWatch para el grupo de escalado automático. Una vez que finaliza el periodo de preparación especificado, la instancia se cuenta para las métricas agregadas del grupo de escalado automático y el escalado automático de clústeres continúa con su siguiente iteración de cálculos para estimar el número de instancias necesarias.

El valor predeterminado de instanceWarmupPeriod es de 300 segundos, que puede configurar con un valor inferior a través de las API CreateCapacityProvider o UpdateCapacityProvider para lograr un escalado con mayor capacidad de respuesta.

Capacidad sobrante

Si su proveedor de capacidad no tiene instancias de contenedor disponibles para colocar tareas, debe aumentar (escalar horizontalmente) la capacidad del clúster mediante el lanzamiento de instancias de Amazon EC2 sobre la marcha y esperar a que se inicien antes de poder lanzar contenedores en ellas. Esto puede reducir considerablemente la frecuencia de lanzamiento de las tareas. Dispone de dos opciones aquí.

En este caso, disponer de capacidad sobrante de Amazon EC2 ya lanzada y lista para ejecutar tareas aumentará la frecuencia efectiva de lanzamiento de tareas. Puede usar la configuración Target Capacity para indicar que desea mantener la capacidad sobrante en sus clústeres. Por ejemplo, si se establece el valor de Target Capacity en un 80 %, indica que el clúster necesita un 20 % de capacidad sobrante en todo momento. Esta capacidad sobrante puede permitir que cualquier tarea independiente se inicie inmediatamente, lo que garantiza que el lanzamiento de las tareas no se limite. La desventaja de este enfoque es el posible aumento de los costos derivados de mantener la capacidad sobrante de los clústeres.

Un enfoque alternativo que puede considerar es agregar margen de maniobra a su servicio, no al proveedor de capacidad. Esto significa que, en lugar de reducir la configuración Target Capacity para lanzar la capacidad sobrante, puede aumentar la cantidad de réplicas de su servicio al modificar la métrica de escalado de seguimiento de destino o los umbrales de escalado por pasos del escalado automático del servicio. Tenga en cuenta que este enfoque solo será útil para cargas de trabajo con picos de actividad, pero no tendrá ningún efecto cuando implemente nuevos servicios y pase de 0 a N tareas por primera vez. Para obtener más información sobre las políticas de escalado relacionadas, consulte Políticas de escalado de seguimiento de destino o Políticas de escalado por pasos en la Guía para desarrolladores de Amazon Elastic Container Service.