¿Cómo puedo configurar el escalado automático de servicios de Amazon ECS en Fargate?

6 minutos de lectura
0

Quiero configurar el escalado automático de servicios de Amazon Elastic Container Service (Amazon ECS) en AWS Fargate.

Breve descripción

Puede aumentar o reducir el número de tareas deseado al integrar Amazon ECS en Fargate con las alarmas de Amazon CloudWatch y Auto Scaling de aplicaciones. A continuación, puede usar las métricas de CloudWatch para configurar las alarmas de CloudWatch.

Cuando las alarmas de CloudWatch activan una política de escalamiento automático, el Auto Scaling de aplicaciones decide el nuevo recuento deseado en función de la política de escalamiento configurada. A continuación, Auto Scaling de aplicaciones realiza la llamada de la API UpdateService a Amazon ECS con el nuevo valor de recuento deseado. El programador de servicio de Amazon ECS inicia o cierra las tareas para cumplir con el nuevo recuento deseado. La actividad de escalado permanece en estado InProgress hasta que el recuento deseado y en curso coincidan.

Nota: Si se muestran errores mientras ejecuta comandos de la Interfaz de la línea de comandos de AWS (AWS CLI), asegúrese de que utiliza la versión más reciente de AWS CLI.

Resolución

Nota: El usuario de IAM que accede a la configuración del escalado automático de servicios debe tener los permisos adecuados para los servicios que admiten el escalado dinámico. Para obtener más información, consulte IAM permissions required for service auto scaling.

Configuración del escalado automático de servicios para su servicio Fargate

Al crear o actualizar un servicio en la consola de Amazon ECS, elija lo siguiente en la página Establecer el escalado automático:

1.    Elija Configuración de escalado automático de servicios para ajustar el número deseado de su servicio.

2.    En Cantidad mínima de tareas, introduzca el número mínimo de tareas que quiera que utilice el escalado automático de servicios.

3.    En Cantidad deseada de tareas, introduzca el número de tareas que desea que utilice el escalado automático de servicios.

Nota: El número deseado de tareas debe estar dentro del rango del recuento mínimo y máximo de estas.

4.    En Cantidad máxima de tareas, introduzca el número máximo de tareas que quiera que utilice el escalado automático de servicios.

Nota: El número mínimo y máximo de tareas son límites estrictos para su servicio.

5.    Para Rol de IAM para el escalado automático de servicios, elija ecsAutoscaleRole.

6.    En el apartado Políticas de escalado automático de tareas, elija Política de escalado automático.

7.    Complete los pasos restantes del asistente de configuración para crear o actualizar el servicio.

Elección de una política de escalado

Elija una política de seguimiento de objetivos o una política de escalado por pasos en función de sus requisitos y de las consideraciones siguientes:

Para las políticas de seguimiento de objetivos:

  • Debe definir el valor del objetivo (umbral) para la métrica especificada. Auto Scaling de aplicaciones crea y administra las alarmas de CloudWatch que activan la política de escalado.
  • Puede utilizar las métricas de servicios de Amazon ECS ECSServiceAverageCPUUtilization, ECSServiceAverageMemoryUtilization y ALBRequestCountPerTarget para el seguimiento de objetivos.
  • Una política de seguimiento de objetivos calcula el ajuste de escalado (es decir, el número de tareas deseado) en función de la métrica y el valor del objetivo que defina. No necesita configurar la acción de escalado como lo haría con una política de escalado por pasos. Esto se debe a que una política de seguimiento de objetivos añade o elimina capacidad según sea necesario para mantener la métrica en el valor del objetivo especificado o cerca de él.
  • Debe elegir un periodo de recuperación de escalado ascendente y descendente.

Para las políticas de escalado por pasos:

  • Puede crear o utilizar las alarmas de CloudWatch existentes para cualquier métrica de escalado por pasos.
  • Debe elegir acciones de escalado o ajustes de pasos, como ScalingAdjustment, MetricIntervalUpperBound y MetricIntervalLowerBound.
  • Puede especificar el tipo de ajuste de escalado como un porcentaje de la capacidad actual del destino escalable o mediante números absolutos.
  • Puede aumentar o reducir el número de tareas deseado al crear políticas de escalado para gestionar la actividad de escalado descendente y ascendente.

Nota: Para obtener más información, consulte Step 5: Configuring your service to use Service Auto Scaling.

Configuración del escalado automático de servicios mediante AWS CLI

1.    Registre su servicio de Fargate como objetivo escalable con Auto Scaling de aplicaciones:

aws application-autoscaling register-scalable-target \
--service-namespace ecs --scalable-dimension ecs:service:DesiredCount \
--resource-id service/your-cluster/your-service-name \
--min-capacity 1 --max-capacity 10 --region us-east-1

2.    Cree una política de seguimiento de objetivos o de escalado por pasos para el objetivo escalable (es decir, su servicio de Fargate).

Política de seguimiento de objetivos:

Cree una política de seguimiento de objetivos:

aws application-autoscaling put-scaling-policy \
--service-namespace ecs --scalable-dimension ecs:service:DesiredCount \
--resource-id service/<cluster>/<service-name> \
--policy-name Test-target-tracking-scaling-policy --policy-type TargetTrackingScaling \
--target-tracking-scaling-policy-configuration '{ "TargetValue": 75.0, "PredefinedMetricSpecification": {"PredefinedMetricType": "ECSServiceAverageCPUUtilization" }, "ScaleOutCooldown": 60,"ScaleInCooldown": 60}'

Nota: Al crear su política de seguimiento de objetivos, Auto Scaling de aplicaciones crea alarmas de CloudWatch para realizar el escalado y desescalado horizontal en función del valor de destino (umbral) que elija.

Política de escalado por pasos:

1.    Cree una política de escalado por pasos con los ajustes necesarios:

aws application-autoscaling put-scaling-policy \
--service-namespace ecs --scalable-dimension ecs:service:DesiredCount \
--resource-id service/your-cluster/your-service-name \
--policy-name Test-Step-scaling-policy-ScaleOut --policy-type StepScaling \
--step-scaling-policy-configuration '{"AdjustmentType": "ExactCapacity","StepAdjustments": [ { "MetricIntervalLowerBound": 20, "ScalingAdjustment": 10}, { "MetricIntervalLowerBound": 0, "MetricIntervalUpperBound": 20,"ScalingAdjustment": 5}],"Cooldown": 60, "MetricAggregationType": "Average"}'

2.    Asocie la política de escalado del paso 1 como acción de alarma a su alarma de CloudWatch nueva o existente:

aws cloudwatch put-metric-alarm \
--alarm-name Test-ScaleOut --metric-name MemoryUtilization \
--namespace AWS/ECS --statistic Average --period 60 --threshold 60 \
--comparison-operator GreaterThanOrEqualToThreshold --evaluation-periods 1 --datapoints-to-alarm 1 \
--dimensions Name=ClusterName,Value=your-cluster Name=ServiceName,Value=your-service-name --unit Percent \
--alarm-actions "arn:aws:autoscaling:us-east-1:xxxxxxx:scalingPolicy:xxxxxx/Test-Step-scaling-policy-ScaleOut"

3.    Cree otra política de escalado por pasos y una alarma de CloudWatch para la actividad de escalado descendente.

Nota: Cuando la actividad de escalado ascendente de su servicio está en curso, cualquier actividad de escalado descendente que active CloudWatch se bloquea hasta que se completa la actividad de escalado ascendente. El tiempo de espera de la actividad de escalado ascendente en curso (](https://docs.aws.amazon.com/autoscaling/application/APIReference/API_ScalingActivity.html)InProgress [) se agota cuando Amazon ECS no cumple el recuento deseado definido por el escalamiento automático. El tiempo de espera puede deberse a varias causas, como problemas de imagen o de red. Si las métricas de CloudWatch activan una actividad de escalado descendente durante el periodo de recuperación del escalado ascendente, pero se completa una actividad de escalado ascendente, se ejecuta una actividad de escalado descendente.


Información relacionada

Troubleshooting service auto scaling

Service auto scaling

DescribeScalingActivities

AWS CLI command reference for application-autoscaling

OFICIAL DE AWS
OFICIAL DE AWSActualizada hace 2 años