

# Administración automática de la capacidad de Amazon ECS con el escalado automático de clústeres
<a name="cluster-auto-scaling"></a>

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](https://aws.amazon.com/blogs/containers/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 a `targetCapacity`**  
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 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 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 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 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](managed-termination-protection.md). 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](https://docs.aws.amazon.com/autoscaling/ec2/userguide/ec2-auto-scaling-instance-protection.html) 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](using-service-linked-roles.md).
+ 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 %, 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
<a name="cluster-auto-scale-use"></a>

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 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 cargas de trabajo de Amazon EC2](create-ec2-cluster-console-v2.md).

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](update-capacity-provider-console-v2.md).

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 escalado automático. Para obtener más información, consulte [Grupos de escalado automático](https://docs.aws.amazon.com/autoscaling/ec2/userguide/auto-scaling-groups.html) en la *Guía del usuario de Amazon EC2 Auto Scaling*.

1. 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](turn-on-cluster-auto-scaling.md).