Pourquoi le nombre de tâches en cours d'exécution a-t-il changé dans mon Amazon ECS service ?

Lecture de 7 minute(s)
0

Le nombre de tâches en cours dans mon service Amazon Elastic Container Service (Amazon ECS) a augmenté ou diminué.

Brève description

Le nombre de tâches en cours dans votre Amazon ECS service peut augmenter ou diminuer pour plusieurs raisons. Voici quelques-unes des causes les plus fréquentes :

  • Vos tâches Amazon ECS échouent aux contrôles de l’état.
  • AWS CloudFormation ou AWS Cloud Development Kit (AWS CDK) a mis à jour le nombre souhaité dans le service ECS.
  • Vous avez mis à jour manuellement le nombre souhaité pour votre service ECS.
  • La scalabilité automatique Amazon ECS Service a mis à jour le nombre de tâches en fonction de la stratégie de mise à l’échelle.
  • Vous avez mis à jour le nombre minimum ou maximum dans la scalabilité automatique de l’application à l'aide de l'API RegisterScalableTarget.
  • La configuration du déploiement de votre service ECS a modifié le nombre de tâches en cours pendant le déploiement.

Résolution

Vos tâches ECS échouent aux contrôles de l’état

CloudFormation ou AWS CDK a mis à jour le nombre souhaité dans votre service ECS

Si vous avez créé votre service ECS avec CloudFormation ou CDK sans spécifier le champ DesiredCount, alors le nombre souhaité est défini sur une valeur par défaut de 1. Cependant, lorsque le même service est mis à jour via 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.

Pour résoudre ce problème, consultez les événements AWS CloudTrail pour vérifier si l'appel d'API UpdateService a été effectué par CloudFormation. Vous pouvez vérifier cela en vérifiant que le champ userAgent de la section Registre d'événement spécifie les éléments suivants :

"userAgent": "cloudformation.amazonaws.com"

Pour résoudre ce problème, supprimez le paramètre desiredCount du code CloudFormation ou CDK lors de la mise à jour.

Vous avez mis à jour manuellement le nombre souhaité pour votre service ECS

Si vous avez mis à jour manuellement le service ECS à l'aide de l'API UpdateService, de la console Amazon ECS ou de l'AWS Command Line Interface (AWS CLI), mettez à nouveau à jour le service pour changer le nombre souhaité en une valeur appropriée. Pour plus d'informations, voir Mise à jour d'un service et service de mise à jour.

Pour résoudre ce problème, examinez les événements CloudTrail pour vérifier si l'appel d'API UpdateService a été effectué à partir de la console Amazon ECS ou de l'AWS CLI. Vous pouvez voir ces informations dans le champ userAgent du registre CloudTrail.

Exemple :

"userAgent": "console.amazonaws.com"

La scalabilité automatique Amazon ECS Service a mis à jour le nombre de tâches en fonction de la stratégie de dimensionnement

La scalabilité automatique Amazon ECS Service peut avoir augmenté ou diminué le nombre souhaité en fonction de la stratégie de dimensionnement. Passez en revue le service et recherchez toute activité de mise à l’échelle récente.

Pour afficher les activités de mise à l’échelle, procédez comme suit :

  1. Ouvrez la console Amazon ECS.
  2. Au niveau du panneau de navigation, choisissez Clusters.
  3. Choisissez le cluster que vous voulez vérifier.
  4. Choisissez l'onglet Services.
  5. Choisissez le service que vous souhaitez vérifier.
  6. Choisissez l'onglet Evénements.

S'il y a eu un événement de mise à l’échelle, vous pourrez afficher des messages d'information, tels que ceux qui suivent, dans la colonne Message :

Successfully set desired count to 1. Change successfully fulfilled by ecs. Cause: monitor alarm TargetTracking-service/service-autoscaling/sample-webapp-AlarmLow-fcd80aef-5161-4890-aeb4-35dde11ff42c in state ALARM triggered policy TargetTrackingPolicy.

Si les tâches sont arrêtées en raison d'une activité de mise à l’échelle, passez en revue les stratégies de suivi des cibles ou de mise à l’échelle des étapes. Ensuite, mettez à jour le nombre souhaité selon les exigences de votre application.

Pour afficher la configuration de scalabilité automatique de l’application, procédez comme suit :

  1. Ouvrez la console Amazon ECS.
  2. Au niveau du panneau de navigation, choisissez Clusters.
  3. Choisissez le cluster que vous voulez vérifier.
  4. Choisissez l'onglet Services.
  5. Choisissez le service que vous souhaitez vérifier.
  6. Choisissez l'onglet Scalabilité Automatique.
    Remarque : Si vous utilisez la nouvelle console Amazon ECS, choisissez Configuration et tâches, puis affichez les informations dans Configuration des services.

Vous avez mis à jour le nombre minimum et maximum dans Scalabilité Automatique de l’Application à l'aide de l'API RegisterScalableTarget

Si vous avez utilisé l'API RegisterScalableTarget pour mettre à jour la cible évolutive, vérifiez la valeur de la propriété MinCapacity spécifiée dans l'API. Si vous avez spécifié une nouvelle valeur minimale, Scalabilité Automatique de l’Application utilise cette valeur comme nouvelle valeur minimale à laquelle les tâches peuvent être réduites.

Remarque : La scalabilité automatique de l'application ne réduit pas le nombre souhaité à un niveau inférieur à la valeur minimale spécifiée.

La configuration du déploiement de votre service ECS a modifié le nombre de tâches en cours pendant le déploiement

Consultez les événements CloudTrail pour vérifier si l'API UpdateService a été appelée récemment. Vous pouvez voir la configuration de déploiement de votre service ECS en vérifiant le paramètre de requête deploymentConfigration dans l'API UpdateService.

-ou-

Vérifiez la configuration du déploiement de votre service ECS dans la console Amazon ECS en procédant comme suit :

  1. Ouvrez la console Amazon ECS.
  2. Au niveau du panneau de navigation, choisissez Clusters.
  3. Choisissez le cluster que vous voulez vérifier.
  4. Choisissez l'onglet Services.
  5. Choisissez le service que vous souhaitez vérifier.
  6. Choisissez l'onglet Déploiements.

Les paramètres de configuration du déploiement contrôlent le nombre de tâches exécutées pendant un déploiement et la séquence d'arrêt et de démarrage des tâches. Si la configuration du déploiement n'est pas définie correctement, le nombre de tâches en cours d'exécution pendant le déploiement est réduit. Ainsi, il est recommandé de configurer la valeur du paramètre minimumHealthyPercent sur une valeur supérieure à 0 %.

Le paramètre minimumHealthyPercent représente la limite inférieure de l'un des éléments suivants en pourcentage du nombre de tâches souhaité pour le service :

  • Nombre de tâches devant être exécutées pour un service au cours d'un déploiement
  • Nombre de tâches devant être exécutées lorsqu'une instance de conteneur est en train d’être vidée.

La valeur de ce paramètre est arrondie au chiffre supérieur. Par exemple, si minimumHealthyPercent est de 50 % et que le nombre de tâches souhaité est de quatre, le planificateur peut arrêter deux tâches existantes avant de démarrer deux nouvelles tâches. Si minimumHealthyPercent est de 75 % et que le nombre de tâches souhaité est de deux, le planificateur ne peut arrêter aucune tâche car la valeur qui en résulte est également de deux.

Le paramètre maximumPercent représente la limite supérieure de l'un des éléments suivants en pourcentage du nombre de tâches souhaité pour un service :

  • Nombre de tâches devant être exécutées pour un service au cours d'un déploiement
  • Nombre de tâches devant être exécutées lorsqu'une instance de conteneur est en train d’être vidée.

La valeur de ce paramètre est arrondie au chiffre inférieur. Par exemple, si maximumPercent est de 200 % et que le nombre de tâches souhaité est de quatre, le planificateur peut démarrer quatre nouvelles tâches avant d'arrêter quatre tâches existantes. Si maximumPercent est de 125 % et que le nombre de tâches souhaité est de trois, le planificateur ne peut démarrer aucune tâche car la valeur qui en résulte est également de trois.

Pour plus d'informations, consultez la section Mise à jour progressive.


Informations connexes

Scalabilité automatique du service

Comment éliminer l'erreur « [AWS service] was unable to place a task because no container instance met all of its requirements » ([Service AWS] n'a pas pu placer une tâche parce qu'aucune instance de conteneur ne répondait à toutes ses exigences) dans Amazon ECS ?

AWS OFFICIEL
AWS OFFICIELA mis à jour il y a 2 ans