Administración automática de la capacidad de Amazon ECS con el escalado automático de clústeres
Amazon ECS puede administrar el escalado de las instancias de Amazon EC2 registradas en el clúster. A esto se lo conoce como escalado automático de clústeres de Amazon ECS. Activa el escalado administrado al crear el proveedor de capacidad del grupo de escalado automático de Amazon ECS. A continuación, establece un porcentaje objetivo (targetCapacity
) para la utilización de instancias en este grupo de escalado automático. Amazon ECS crea dos métricas personalizadas de CloudWatch y una política de escalado de seguimiento de destino para el grupo de escalado automático. A continuación, Amazon ECS administra las acciones de escalado y reducción horizontal en función de la utilización de recursos que usan las tareas.
Para cada proveedor de capacidad de grupo de escalado automático asociado a un clúster, Amazon ECS crea y administra los siguientes recursos:
-
Una alarma CloudWatch de bajo valor métrico
-
Una alarma CloudWatch de alto valor métrico
-
Una política de escalado de seguimiento de destino
nota
Amazon ECS crea la política de escalado de seguimiento de destino y la asocia al grupo de escalado automático. Para actualizar la política de escalado de seguimiento de destino, debe actualizar la configuración de escalado administrada por el proveedor de capacidad en lugar de actualizar la política de escalado directamente.
Cuando se desactiva el escalado administrado o se desasocia el proveedor de capacidad de un clúster, Amazon ECS elimina tanto las métricas de CloudWatch como los recursos de política de escalado de seguimiento de destino.
Amazon ECS utiliza las siguientes métricas para determinar qué acciones se deben llevar a cabo:
CapacityProviderReservation
-
El porcentaje de instancias de contenedores que se utilizan para un proveedor de capacidad específico. Amazon ECS genera esta métrica.
Amazon ECS establece el valor
CapacityProviderReservation
en un número entre 0 y 100. Amazon ECS utiliza la siguiente fórmula para representar la proporción de la capacidad que queda en el grupo de escalado automático. A continuación, Amazon ECS publica la métrica en CloudWatch. Para obtener más información sobre cómo se calcula la métrica, consulte Deep Dive on Amazon ECS Cluster Auto Scaling. CapacityProviderReservation = (number of instances needed) / (number of running instances) x 100
DesiredCapacity
-
La cantidad de capacidad del grupo de escalado automático. Esta métrica no se publica en CloudWatch.
Amazon ECS publica la métrica CapacityProviderReservation
en CloudWatch en el espacio de nombres AWS/ECS/ManagedScaling
. La métrica CapacityProviderReservation
hace que se produzca una de las siguientes acciones:
- El valor
CapacityProviderReservation
es igual atargetCapacity
-
El grupo de escalado automático no necesita escalar ni reducirse horizontalmente. Se alcanzó el porcentaje de utilización objetivo.
- El valor
CapacityProviderReservation
es superior atargetCapacity
-
Hay más tareas que utilizan un porcentaje de capacidad superior a su porcentaje de
targetCapacity
. El aumento del valor de la métricaCapacityProviderReservation
hace que la alarma de CloudWatch asociada se active. Esta alarma actualiza el valorDesiredCapacity
del grupo de Auto Scaling. El grupo de Auto Scaling utiliza este valor para lanzar instancias EC2 y, a continuación, registrarlas en el clúster.Cuando la
targetCapacity
es el valor predeterminado del 100 %, las nuevas tareas permanecen en el estadoPENDING
durante el escalado horizontal porque no hay capacidad disponible en las instancias para ejecutarlas. Una vez que las nuevas instancias se registren en ECS, estas tareas comenzarán en las nuevas instancias. - El valor
CapacityProviderReservation
es inferior atargetCapacity
-
Hay menos tareas que utilizan un porcentaje de la capacidad inferior al porcentaje de
targetCapacity
y hay, al menos, una instancia que se puede terminar. El aumento del valor de la métrica deCapacityProviderReservation
hace que la alarma de CloudWatch asociada se active. Esta alarma actualiza el valorDesiredCapacity
del grupo de Auto Scaling. El grupo de Auto Scaling utiliza este valor para terminar las instancias de contenedor de EC2 y, a continuación, anularlas del registro del clúster.El grupo de escalado automático utiliza políticas de terminación de grupos para determinar qué instancias termina primero durante los eventos de reducción horizontal. Además, evita las instancias con la configuración de protección de reducción horizontal de instancias activada. El escalado automático de clústeres puede administrar qué instancias tienen la configuración de protección de escalado horizontal si activa la protección de terminación administrada. Para obtener más información sobre la protección de terminación administrada, consulte Control de las instancias que Amazon ECS termina. Para obtener más información sobre cómo los grupos de escalado automático terminan instancias, consulte Controlar qué instancias de escalado automático terminan durante el escalado horizontal en la guía del usuario de Amazon EC2 Auto Scaling.
Cuando se utiliza el escalado automático de clústeres, se debe tener en cuenta lo siguiente:
-
No cambie ni administre la capacidad deseada para el grupo de escalado automático asociado a un proveedor de capacidad con una política de escalado que no sea la que Amazon ECS administra.
-
Cuando Amazon ECS se escala horizontalmente desde 0 instancias, lanza automáticamente 2 instancias.
-
Amazon ECS utiliza el rol de IAM vinculado al servicio
AWSServiceRoleForECS
para los permisos que necesita para llamar a AWS Auto Scaling en su nombre. Para obtener más información, consulte Uso de roles vinculados al servicio para Amazon ECS. -
Cuando se utilizan proveedores de capacidad con grupos de escalado automático, el usuario, grupo o rol que crea el proveedor de capacidad necesita el permiso
autoscaling:CreateOrUpdateTags
. Esto se debe a que Amazon ECS agrega una etiqueta al grupo de Auto Scaling cuando lo asocia al proveedor de capacidad.importante
Asegúrese de que las herramientas que utilice no eliminen la etiqueta
AmazonECSManaged
del grupo de escalado automático. Si se elimina esta etiqueta, Amazon ECS no podrá administrar el escalado. -
El escalado automático de clústeres no modifica MinimumCapacity ni MaximumCapacity para el grupo. Para que el grupo escale horizontalmente, el valor de MaximumCapacity (Capacidad máxima) debe ser mayor o igual que 0.
-
Un proveedor de capacidad solo se puede conectar a un clúster al mismo tiempo cuando el escalado automático (escalado administrado) está activado. Si el proveedor de capacidad ha desactivado el escalado administrado, puede asociarlo a varios clústeres.
-
Cuando se desactiva el escalado administrado, el proveedor de capacidad no realiza operaciones de reducción horizontal ni escalado horizontal. Puede utilizar una estrategia de proveedores de capacidad para equilibrar las tareas entre los proveedores de capacidad.
-
La estrategia de
binpack
es la más eficiente en términos de capacidad. -
Cuando la capacidad de destino es inferior al 100 %, la estrategia de colocación debe utilizar la estrategia de
binpack
sin que la estrategia despread
tenga un orden superior. Esto evita que el proveedor de capacidad se escale horizontalmente hasta que cada tarea tenga una instancia dedicada o se alcance el límite.
Active el escalado automático de clústeres
Puede activar el escalado automático de clústeres con la consola o la AWS CLI.
Cuando el servicio crea un clúster para el tipo de lanzamiento de EC2 con la consola, Amazon ECS crea un grupo de escalado automático en su nombre y establece la capacidad de destino. Para obtener más información, consulte Creación de un clúster de Amazon ECS para el tipo de lanzamiento de Amazon EC2.
También puede crear un grupo de escalado automático y, luego, asignarlo a un clúster. Para obtener más información, consulte Actualización de un proveedor de capacidad de Amazon ECS.
Al utilizar la AWS CLI, después de crear el clúster
-
Antes de crear el proveedor de capacidad, debe crear un grupo de escalado automático. Para obtener más información, consulte Grupos de escalado automático en la Guía del usuario de Amazon EC2 Auto Scaling.
-
Utilice
put-cluster-capacity-providers
para modificar el proveedor de capacidad del clúster. Para obtener más información, consulte Activación del escalado automático de clústeres de Amazon ECS.