Passer au contenu

Comment puis-je configurer l’autoscaling du service Amazon ECS sur Fargate ?

Lecture de 5 minute(s)
0

Je souhaite configurer l’autoscaling du service Amazon Elastic Container Service (Amazon ECS) pour AWS Fargate.

Résolution

Remarque : Si des erreurs surviennent lorsque vous exécutez des commandes de l'interface de la ligne de commande AWS (AWS CLI), consultez la section Résoudre des erreurs liées à l’AWS CLI. Vérifiez également que vous utilisez bien la version la plus récente de l’AWS CLI.

Lorsqu'une alarme Amazon CloudWatch déclenche un autoscaling, Application Auto Scaling utilise votre politique de mise à l’échelle pour déterminer le nouveau nombre souhaité. Application Auto Scaling lance ensuite l'appel d'API UpdateService sur Amazon ECS avec la nouvelle valeur pour le paramètre desiredCount. Le planificateur de services Amazon ECS lance ou arrête les tâches en fonction du nouveau nombre souhaité. Votre activité de mise à l’échelle demeure à l’état En cours jusqu’à ce que le nouveau nombre souhaité corresponde au nombre en cours d’exécution.

Vous pouvez utiliser la console Amazon ECS ou l'AWS CLI pour configurer l’autoscaling d'Amazon ECS sur Fargate. L’utilisateur de Gestion des identités et des accès AWS (AWS IAM) qui accède aux paramètres d’autoscaling des services doit disposer des autorisations appropriées pour les services qui prennent en charge la mise à l’échelle dynamique. Pour en savoir plus, consultez la section Autorisations IAM requises pour l’autoscaling des services Amazon ECS.

Utiliser la console Amazon ECS

Procédez comme suit :

  1. Ouvrez la console Amazon ECS.
  2. Choisissez Autoscaling des services, puis sélectionnez l'option Utiliser l’autoscaling des services.
  3. Saisissez les valeurs suivantes pour l’autoscaling des services :
    Dans Nombre minimum de tâches, entrez le plus petit nombre de tâches.
    Dans Nombre maximum de tâches, entrez le plus grand nombre de tâches.
    Remarque : Le nombre souhaité ne doit pas être inférieur au nombre minimum ni supérieur au nombre maximum.
  4. Créez une politique mise à l’échelle de suivi des cibles ou créez une politique de mise à l’échelle par étapes à ajouter à Amazon ECS.

Utiliser l’AWS CLI

Exécutez la commande registre-scalable-target suivante pour enregistrer Fargate en tant que cible évolutive avec Application Auto Scaling :

aws application-autoscaling register-scalable-target \
--service-namespace ecs \
--scalable-dimension ecs:service:DesiredCount \
--resource-id service/CLUSTER_NAME/SERVICE_NAME \
--min-capacity 1 --max-capacity 10 --region REGION

Remarque : Remplacez CLUSTER_NAME par le nom de votre cluster, SERVICE_NAME par le nom de votre service et REGION par votre région AWS.

Puis, exécutez la politique put-scaling-policy pour créer la politique de mise à l’échelle de suivi des cibles ou la politique de mise à l’échelle par étapes pour Fargate en tant que cible évolutive. Dans la commande, incluez le fichier JSON que vous avez créé.

Exemple de commande pour la politique de mise à l’échelle de suivi des cibles :

aws application-autoscaling put-scaling-policy \
--service-namespace ecs \
--scalable-dimension ecs:service:DesiredCount \
--resource-id service/CLUSTER_NAME/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}'

Remarque : Remplacez CLUSTER_NAME par le nom de votre cluster, SERVICE_NAME par le nom de votre service et REGION par votre région. Application Auto Scaling crée des alarmes CloudWatch pour la mise à l'échelle en fonction de vos valeurs cibles.

Exemple de commande pour la politique de mise à l’échelle par étapes :

aws application-autoscaling put-scaling-policy \
--service-namespace ecs \
--scalable-dimension ecs:service:DesiredCount \
--resource-id service/CLUSTER_NAME/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"}'

Remarque : Remplacez CLUSTER_NAME par le nom de votre cluster, SERVICE_NAME par le nom de votre service et REGION par votre région.

Si vous avez créé une politique de mise à l’échelle par étapes, exécutez la commande put-metric-alarm suivante pour ajouter votre politique de mise à l’échelle à une alarme CloudWatch. Répétez ensuite l'étape précédente pour créer une deuxième étape, une politique de mise á l’échelle et une alarme CloudWatch pour l'activité de mise à l’échelle :

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=CLUSTER_NAME Name=ServiceName,Value=SERVICE_NAME --unit Percent \
--alarm-actions "arn:aws:autoscaling:us-east-1:xxxxxxx:scalingPolicy:xxxxxx/Test-Step-scaling-policy-ScaleOut"

Remarque : Remplacez CLUSTER_NAME par le nom de votre cluster, SERVICE_NAME par le nom de votre service et REGION par votre région.

Application Auto Scaling bloque toutes les activités de mise à l’échelle pendant les activités d’augmentation horizontale jusqu'à la fin de l’augmentation horizontale. S'il n'atteint pas le nombre que vous avez configuré, Amazon ECS met fin à l'activité d’augmentation horizontale en cours. Les problèmes d’image ou de mise en réseau font partie des raisons qui expliquent un délai d’expiration. Si les métriques CloudWatch sont prises en compte pendant le temps de stabilisation et que l'activité d’augmentation horizontale est terminée, Application Auto Scaling exécute l'activité de réduction horizontale.

Informations connexes

Résolution de problèmes liés à l’autoscaling de services dans Amazon ECS

Mettre automatiquement à l’échelle votre service Amazon ECS

DescribeScalingActivities

autoscaling d’application