Comment puis-je résoudre les problèmes d’auto scaling dans Amazon ECS ?
L’auto scaling que j'ai configuré pour Amazon Elastic Container Service (Amazon ECS) ne permet pas de mise à l’échelle horizontale descendante ou ascendante du nombre de tâches souhaité.
Brève description
Pour mettre à jour automatiquement le nombre de tâches souhaité, configurez les alarmes AWS Application Auto Scaling et Amazon CloudWatch pour Amazon ECS.
Application Auto Scaling peut ne pas ajouter ou supprimer des tâches comme prévu pour les raisons suivantes :
- Vous n'avez pas correctement configuré les politiques de mise à l’échelle.
- Vous avez supprimé ou modifié l'alarme CloudWatch qui invoque les politiques de mise à l’échelle.
- L’auto scaling est suspendu.
- Vous avez incorrectement spécifié le format d'expression cron dans l'action planifiée.
- Vous avez utilisé AWS CloudFormation ou AWS Cloud Development Kit (AWS CDK) pour mettre à jour manuellement le nombre de tâches souhaité et vous avez saisi une valeur incorrecte.
- Le nombre de tâches souhaité n'est pas configuré correctement.
- Votre cluster Amazon ECS ne dispose pas de ressources ou de capacités suffisantes pour exécuter de nouvelles tâches.
- Vous rencontrez des problèmes de réseau.
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'interface.
Résoudre les problèmes liés aux alarmes CloudWatch et aux politiques de mise à l’échelle
Pour résoudre les problèmes liés aux alarmes et aux politiques de mise à l’échelle CloudWatch, effectuez les tâches suivantes en fonction de la politique de mise à l’échelle que vous utilisez.
Cible évolutive
Pour vérifier si le service est enregistré en tant que cible évolutive avec Application Auto Scaling, exécutez la commande describe-scalable-targets :
aws application-autoscaling describe-scalable-targets --service-namespace ecs --region example-region
Remarque : Remplacez example-region par votre région AWS.
Si le service n'est pas enregistré, exécutez la commande register-scalable-target pour enregistrer le service :
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
Remarque : Remplacez your-cluster par le nom de votre cluster Amazon ECS, your-service-name par le nom de votre service et example-region par votre région.
Dans la sortie de la commande précédente, vérifiez la valeur de DynamicScalingInSuspended, de DynamicScalingOutSuspended et de ScheduledScalingSuspended. Lorsque DynamicScalingInSuspended ou DynamicScalingOutSuspended est défini sur vrai, Application Auto Scaling ne met pas à jour la capacité lorsque vous initiez une politique de mise à l’échelle. Lorsque ScheduledScalingSuspended est défini sur vrai, Application Auto Scaling ne lance pas les actions de mise à l’échelle que vous avez prévues d'exécuter pendant la période de suspension. Pour plus d'informations sur la reprise de l’auto scaling suspendu, consultez la section Suspendre et reprendre la mise à l'échelle pour Application Auto Scaling.
Après avoir enregistré le service, configurez les politiques de mise à l’échelle et les alarmes CloudWatch.
Mise à l'échelle à étapes
Vérifiez si CloudWatch déclenche les alarmes associées aux politiques de mise à l’échelle. Vous pouvez trouver des erreurs dans l'historique de l'alarme CloudWatch. Si aucun ajustement d'étape n’est effectué pour le delta de déclenchement, l'erreur suivante s'affiche : « Failed to execute AutoScaling action: No step adjustment found for metric value [xx, xx] and breach delta xx. » Pour résoudre ce problème, assurez-vous de définir le seuil, les ajustements d’étape et le type de réglage de mise à l’échelle dans l'alarme CloudWatch. Spécifiez également tous les ajustements à étapes dans vos politiques. Dans mise à l'échelle horizontale descendante, saisissez \de l’infini- à 0 et dans mise à l'échelle horizontale ascendante, saisissez de 0 à l’infini+.
Remarque : Si vous utilisez des fournisseurs de capacité Amazon ECS, assurez-vous qu'il existe des instances de conteneur suffisantes afin que les tâches puissent être exécutées.
Mise à l’échelle du suivi des cibles
Étant donné que les politiques de mise à l’échelle du suivi des cibles peuvent affecter le comportement de mise à l’échelle, ne modifiez ni ne supprimez pas les alarmes CloudWatch associées. Si vous modifiez ou supprimez ces alarmes, vous devez recréer la politique de suivi des cibles.
Lorsque vous configurez plusieurs politiques de mise à l’échelle, celles-ci peuvent entrer en conflit et entraîner des activités consécutives de mise à l'échelle horizontale descendante et de mise à l'échelle horizontale ascendante. Chaque politique doit utiliser une métrique différente si vous souhaitez disposer de plusieurs politiques de mise à l’échelle du suivi des cibles pour un service Amazon ECS.
Résoudre les problèmes liés à une expression cron incorrecte
Assurez-vous que l'expression cron dans la configuration des actions planifiées pour Application Auto Scaling utilise le format suivant : [Minutes] [Heures] [Jour_du_Mois] [Mois] [Jour_de_la_Semaine] [Année]. Les six champs doivent être séparés par un espace vide.
Pour un exemple d'action utilisant l'expression cron, consultez la section Créer une action planifiée qui s'exécute selon une planification récurrente.
Résoudre les problèmes liés à la mise à jour du nombre de tâches souhaitée
Lorsque vous mettez à jour le nombre de tâches souhaité pour un service Amazon ECS, vous pouvez invoquer un événement de mise à l'échelle. En cas de mise à l'échelle horizontale ascendante, Application Auto Scaling augmente le nombre souhaité jusqu'à la capacité minimale. En cas de mise à l'échelle horizontale descendante, Application Auto Scaling augmente le nombre souhaité jusqu'à la capacité maximale. Dans les deux cas, Application Auto Scaling continue à effectuer la mise à l’échelle en fonction de la politique de mise à l’échelle, mais ne modifie pas le nombre souhaité.
Si vous créez votre service Amazon ECS avec CloudFormation ou AWS CDK, la valeur par défaut de DesiredCount est 1. Si vous mettez à jour votre service Amazon ECS avec CloudFormation ou AWS CDK, l'application utilise le paramètre DesiredCount existant pour les nouveaux déploiements.
Pour la valeur de comptage souhaitée dans la pile CloudFormation ou AWS CDK, spécifiez une valeur comprise entre les valeurs minimale et maximale lors de la mise à jour du service.
Remarque : Assurez-vous que le nombre souhaité répond aux besoins de la configuration de déploiement du service, en particulier en ce qui concerne les paramètres de pourcentage minimal et maximal.
Résoudre les problèmes de capacité du cluster
Pour éviter les problèmes de capacité, utilisez les fournisseurs de capacité Amazon ECS pour provisionner automatiquement les instances Amazon Elastic Compute Cloud (Amazon EC2).
Pour éviter toute mise à l'échelle excessive, l’auto scaling utilise le nombre réel de tâches en cours d'exécution dans un service comme point de départ, et non le nombre souhaité. Si les ressources d'instance de conteneur sont insuffisantes pour effectuer les tâches supplémentaires, l’auto scaling ne peut pas terminer la mise à l'échelle. Pour résoudre ce problème, utilisez des fournisseurs de capacité pour mettre automatiquement à l’échelle la capacité de l'instance de conteneur. Sinon, vous devez augmenter manuellement la capacité de l'instance de conteneur.
Après le temps de stabilisation, l’auto scaling poursuit ses activités de mise à l’échelle. Pour les tâches AWS Fargate, utilisez les fournisseurs de capacité Fargate pour gérer la capacité de calcul.
L’auto scaling utilise le nombre réel de tâches en cours d'exécution, et non le nombre souhaité, comme point de départ de la mise à l'échelle. Si les ressources d'instance de conteneur sont insuffisantes pour effectuer les tâches supplémentaires, l’auto scaling ne peut pas terminer l'activité de mise à l’échelle. Cependant, pour éviter les tentatives excessives de mise à l’échelle qui ne peuvent pas être réalisées, l’auto scaling essaie toujours d’opérer autant que possible en fonction des ressources disponibles.
Résoudre les problèmes de mise à l’échelle liés au réseau
Vérifier la configuration des tâches en mode réseau awsvpc
Lorsque l’auto scaling augmente le nombre de tâches, chaque tâche en mode réseau awsvpc requiert sa propre adresse IP. Si les sous-réseaux de votre cloud privé virtuel (VPC) ne disposent pas d'un nombre suffisant d'adresses IP disponibles, le nombre de tâches n'augmente pas. Surveillez régulièrement l'utilisation des adresses IP de votre VPC. Si votre configuration est proche des limites de capacité, utilisez des blocs CIDR de plus grande taille ou créez de nouveaux sous-réseaux.
Les tâches Amazon ECS en mode réseau awsvpc utilisent des interfaces réseau élastiques. Il existe un quota maximum pour le nombre total d'interfaces réseau dans chaque type d'instance de chaque VPC. Si vous dépassez ce quota, vos tâches ne seront pas lancées. Pour vérifier l'utilisation de votre interface réseau, procédez comme suit :
- Ouvrez la console Amazon EC2.
- Dans le volet de navigation, sélectionnez Interfaces réseau.
- Utilisez la colonne ID d’instance pour afficher les instances auxquelles chaque interface réseau est attachée. Pour afficher de plus amples informations sur l'interface réseau, telles que les adresses IP et les groupes de sécurité, choisissez l'interface réseau.
Vérifier que votre configuration ne bloque pas le trafic requis
Les groupes de sécurité ou les règles de liste de contrôle d'accès réseau (ACL réseau) peuvent bloquer le trafic requis et provoquer des échecs de vérification de l'état qui entraînent des événements de mise à l’échelle inutiles. Assurez-vous que vos groupes de sécurité autorisent le trafic entrant vers les ports de votre application. Assurez-vous également que les ACL de votre réseau autorisent le trafic entrant et sortant entre votre application et Amazon ECS.
Informations connexes
- Sujets
- Containers
- Langue
- Français

Contenus pertinents
- demandé il y a 10 mois
- demandé il y a 9 mois
- demandé il y a 8 mois
- demandé il y a 2 ans
AWS OFFICIELA mis à jour il y a un an