Comment résoudre les problèmes liés à la scalabilité automatique du service dans Amazon ECS ?

Dernière mise à jour: 30/03/2022

La scalabilité automatique du service configuré pour mon service Amazon Elastic Container Service (Amazon ECS) n'effectue la mise à l'échelle ou l'évolutivité horizontale du nombre de tâches souhaité, selon les besoins.

Brève description

Vous pouvez mettre à jour automatiquement le nombre de tâches souhaité pour votre service Amazon ECS en intégrant votre service ECS au service Application Auto Scaling et aux alarmes Amazon CloudWatch.

La scalabilité automatique du service peut ne pas être en mesure d'ajouter ou de supprimer des tâches comme prévu pour une ou plusieurs des raisons suivantes :

  • Les politiques de mise à l'échelle ne sont pas configurées correctement.
  • L'alarme CloudWatch qui déclenche les politiques de mise à l'échelle sont éliminées ou modifiées.
  • Le format d'expression cron n'est pas correctement spécifié dans l'action programmée.
  • Vous avez mis à jour le nombre de tâches souhaité manuellement ou à travers AWS CloudFormation ou AWS Cloud Development Kit (AWS CDK) à une valeur inférieure à la valeur minimale ou supérieure à la valeur maximale définie dans la scalabilité automatique du service.
  • Votre cluster ECS ne dispose pas de ressources ou de capacités suffisantes pour exécuter de nouvelles tâches.

Résolution

Dépannage des alarmes CloudWatch et politiques de mise à l'échelle

Cible évolutive

  • Assurez-vous que le service ECS est enregistré en tant que cible évolutive avec Application Auto Scaling. Si le service n'est pas enregistré, enregistrez-le à l'aide de la commande suivante. Configurez ensuite les politiques de mise à l'échelle et les alarmes CloudWatch en conséquence. Pour plus d'informations, consultez Comment puis-je configurer Auto Scaling Amazon ECS Service sur Fargate ?
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 example-region
  • Utilisez les commandes suivantes pour récupérer des informations sur la scalabilité automatique du service de votre service ECS :
aws application-autoscaling describe-scalable-targets --service-namespace ecs --region example-region 
aws application-autoscaling describe-scaling-policies --service-namespace ecs --region example-region
aws application-autoscaling describe-scaling-activities --service-namespace ecs \ 
--scalable-dimension ecs:service:DesiredCount --resource-id service/your-cluster/your-service-name --region example-region
  • Lorsque vous créez ou mettez à jour les alarmes CloudWatch pour la scalabilité automatique de votre service ECS, assurez-vous que les métriques, les dimensions, les statistiques, les périodes, les conditions, et les valeurs de seuil sont correctement spécifiées. Dans le cas contraire, l'alarme n'est pas déclenchée pour mettre à jour la politique de mise à l'échelle associée.

Remarque : En cas d'erreurs lors de l'exécution des commandes AWS CLI, vérifiez que vous utilisez la version la plus récente d'AWS CLI.

Mise à l'échelle des étapes

  • Vérifiez si les alarmes CloudWatch associées aux politiques de mise à l'échelle sont déclenchées. Vérifiez s'il y a eu des erreurs en affichant l'historique des alarmes CloudWatch.
  • Pour les politiques de mise à l'échelle d'étapes, vérifiez si les valeurs de violation du seuil, les ajustements des étapes et le type d'ajustement de la mise à l'échelle sont configurés dans l'alarme CloudWatch. S'il n'y a pas d'étape d'ajustement correspondant aux valeurs de violation du seuil delta ; c'est-à-dire, un seuil soustrait de la valeur de métrique, le message d'erreur suivant s'affiche dans l'historique des alarmes : Impossible d'exécuter l'action AutoScaling : aucun ajustement d'étape n'a été trouvé pour la valeur de métrique [xx, xx] et les valeurs de violation du seuil delta xx
    Par conséquent, assurez-vous que tous les ajustements d'étape ; c'est-à-dire, de -infini à 0 pour la mise à l'échelle horizontale et de 0 à +infini pour la montée en puissance, sont couverts par vos politiques.
    Remarque : En règle générale, pour une politique de montée en puissance, dans les ajustements d'étape, seule la limite supérieure peut être nulle (infini positif). Pour une politique de mise à l'échelle horizontale, seule la limite inférieure peut être nulle (infini négatif). Pour plus d'informations, consultez Ajustements des étapes.

Mise à l'échelle du suivi de cible

  • Étant donné que les politiques de mise à l'échelle du suivi de cible sont gérées par AWS, Application Auto Scaling crée des alarmes CloudWatch pour l'augmentation ou la réduction de la mise à l'échelle en fonction de la valeur cible ou du seuil spécifié lors de la création de ces politiques. Par conséquent, ne modifiez pas ni supprimez ces alarmes. La modification ou la suppression de ces alarmes affecte le comportement de la mise à l'échelle. Si vous avez modifié ou supprimé ces alarmes, recréez la politique de suivi de cible.
  • Vous pouvez avoir plusieurs politiques de mise à l'échelle du suivi de cible pour un service ECS à condition que chaque politique utilise une métrique différente. L'objectif d'Application Auto Scaling est de donner la priorité à la disponibilité. Par conséquent, le comportement de ces politiques diffère selon que les politiques de suivi de cible sont prêtes pour la montée en puissance ou la mise à l'échelle horizontale. Application Auto Scaling fait monter en puissance les tâches si l'une des politiques de suivi de cible est prête pour la montée en puissance, mais n'effectue la mise à l'échelle horizontale que si toutes les politiques de suivi de cible (avec la partie de mise à l'échelle horizontale) sont prêtes pour une mise à l'échelle horizontale.
  • Lorsque plusieurs politiques de mise à l'échelle, y compris les politiques de suivi de cible et de mise à l'échelle des étapes, sont configurées pour un service ECS, assurez-vous qu'elles n'entrent pas en conflit. Ces conflits peuvent entraîner des comportements indésirables, tels que des mises à l'échelle horizontales et des montées en puissance consécutives, entraînant une oscillation inutile du nombre de tâches.

Pour plus d'informations, consultez Politiques de mise à l'échelle du suivi de cible pour Application Auto Scaling.

Dépannage d'une expression cron incorrecte

Assurez-vous que l'expression cron spécifiée dans la planification est correcte dans la configuration des actions programmées pour Application Auto Scaling. Le format cron pris en charge par Application Auto Scaling se compose de six champs séparés par des espaces vides : [Minutes] [Hours] [Day_of_Month] [Month] [Day_of_Week] [Year].

Pour plus d'informations, consultez Exemples d'actions programmées pour Application Auto Scaling.

Dépannage de la mise à jour souhaitée du nombre de tâches souhaité

Gardez à l'esprit les points suivants lorsque vous mettez à jour manuellement le nombre de tâches souhaité pour votre service ECS ou que vous utilisez CloudFormation ou AWS CDK pour le faire :

  • Si vous avez mis à jour le nombre de tâches souhaité pour votre service ECS à une valeur inférieure à la valeur de capacité minimale et qu'une alarme déclenche une activité de montée en puissance, la scalabilité automatique du service met à l'échelle le nombre souhaité jusqu'à la valeur de capacité minimale. Ensuite, la scalabilité automatique du service poursuit la montée en puissance, selon les besoins, en fonction de la politique de mise à l'échelle associée à l'alarme. Cependant, une activité de mise à l'échelle horizontale n'ajuste pas le nombre souhaité, car celui-ci est déjà inférieur à la valeur de capacité minimale.
  • Si vous avez mis à jour le nombre de tâches souhaité pour votre service ECS à une valeur supérieure à la valeur de capacité maximale et qu'une alarme déclenche une activité de mise à l'échelle horizontale, la scalabilité automatique du service met à l'échelle le nombre souhaité jusqu'à la valeur de capacité maximale. Ensuite, la scalabilité automatique du service continue avec la mise à l'échelle horizontale, selon les besoins, en fonction de la politique de scalabilité associée à l'alarme. Cependant, une activité de montée en puissance n'ajuste pas le nombre souhaité, car celui-ci est déjà supérieur à la valeur de capacité maximale.
  • Si vous avez créé votre service ECS avec CloudFormation ou CDK sans spécifier le champ DesiredCount, alors le nombre souhaité est configuré à une valeur par défaut de 1. Cependant, lorsque le même service est mis à jour à travers CloudFormation ou CDK sans spécifier le champ DesiredCount, alors le nombre souhaité existant dans le déploiement actuel est utilisé pour le nouveau déploiement. Par conséquent, lorsque la valeur du nombre souhaité est spécifiée dans la pile CloudFormation ou AWS CDK, assurez-vous que la valeur se situe entre les valeurs minimale et maximale lors de la mise à jour du service.

Résolution des problèmes de capacité de cluster

Lorsque votre cluster ECS ne dispose pas de suffisamment de ressources pour exécuter des tâches, comme les instances de conteneur Amazon Elastic Compute Cloud (Amazon EC2), l'activité de mise à l'échelle lancée par les politiques de mise à l'échelle ne s'effectue pas. Dans ce cas, un message d'erreur est journalisée dans les événements de service. Pour éviter ces problèmes de capacité Amazon EC2 et lancer les tâches correctement, utilisez les fournisseurs de capacité Amazon ECS pour allouer des instances EC2 automatiquement, selon les besoins.

Remarque : Au cours des activités de mise à l'échelle, la scalabilité automatique du service utilise le nombre réel de tâches en cours d'exécution dans un service, comme point de départ, par opposition au nombre souhaité. Cela évite une mise à l'échelle excessive qui pourrait ne pas être satisfaite, par exemple, si les ressources d'instances de conteneur sont insuffisantes pour placer les tâches supplémentaires. Si la capacité de l'instance de conteneur est disponible ultérieurement, l'activité de mise à l'échelle en attente peut s'effectuer correctement. Ensuite, d'autres activités de mise à l'échelle se poursuivent après la temps de stabilisation.


Cet article vous a-t-il été utile ?


Besoin d'aide pour une question technique ou de facturation ?