Administración automática de la capacidad de Amazon ECS con el escalado automático de clústeres - Amazon Elastic Container Service

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. Active el escalado administrado al crear el proveedor de capacidad del grupo de Amazon EC2 Auto Scaling de Amazon ECS. A continuación, establezca un porcentaje de destino (targetCapacity) para la utilización de instancias en este grupo de Amazon EC2 Auto Scaling. Amazon ECS crea dos métricas personalizadas de CloudWatch y una política de escalado de seguimiento de destino para el grupo de Amazon EC2 Auto Scaling. 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 Amazon EC2 Auto Scaling 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 Amazon EC2 Auto Scaling. 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 Amazon EC2 Auto Scaling. 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 Amazon EC2 Auto Scaling. 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 a targetCapacity

El grupo de Amazon EC2 Auto Scaling no necesita escalarse ni reducirse horizontalmente. Se alcanzó el porcentaje de utilización objetivo.

El valor CapacityProviderReservation es superior a targetCapacity

Hay más tareas que utilizan un porcentaje de capacidad superior a su porcentaje de targetCapacity. El aumento del valor de la métrica CapacityProviderReservation hace que la alarma de CloudWatch asociada se active. Esta alarma actualiza el valor DesiredCapacity del grupo de Amazon EC2 Auto Scaling. El grupo de Amazon EC2 Auto Scaling utiliza este valor para lanzar instancias de 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 estado PENDING 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 a targetCapacity

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 de CapacityProviderReservation hace que la alarma de CloudWatch asociada se active. Esta alarma actualiza el valor DesiredCapacity del grupo de Amazon EC2 Auto Scaling. El grupo de Amazon EC2 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 Amazon EC2 Auto Scaling 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 Amazon EC2 Auto Scaling terminan instancias, consulte Controlar qué instancias de Amazon EC2 Auto Scaling terminan durante la reducción 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 Amazon EC2 Auto Scaling 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 Amazon EC2 Auto Scaling, 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 Amazon EC2 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 Amazon EC2 Auto Scaling. 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 Amazon EC2 Auto Scaling (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 %, dentro de la estrategia de colocación, la estrategia de binpack debe tener un orden superior que la estrategia de spread. 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 crea un clúster que usa proveedores de capacidad de EC2 que utilizan la consola, Amazon ECS crea un grupo de Amazon EC2 Auto Scaling 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 cargas de trabajo de Amazon EC2.

También puede crear un grupo de Amazon EC2 Auto Scaling 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

  1. Antes de crear el proveedor de capacidad, debe crear un grupo de Amazon EC2 Auto Scaling. Para obtener más información, consulte Grupos de Amazon EC2 Auto Scaling en la Guía del usuario de Amazon EC2 Auto Scaling de Amazon EC2.

  2. 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.