Knowledge Center Monthly Newsletter - March 2025
Stay up to date with the latest from the Knowledge Center. See all new and updated Knowledge Center articles published in the last month and re:Post’s top contributors.
Comment faire en sorte que mes tâches Amazon ECS qui utilisent le type de lancement Amazon EC2 réussissent la surveillance de l’état de l'Application Load Balancer ?
Je souhaite dépanner et résoudre les problèmes liés aux vérification de l’état de l'Application Load Balancer pour les tâches Amazon Elastic Container Service (Amazon ECS) qui s'exécutent sur mes instances Amazon Elastic Compute Cloud (Amazon EC2).
Brève description
Lorsque votre tâche Amazon ECS échoue la surveillance de l’état de l’équilibreur de charge, vous recevez l’un des messages d’erreur suivants dans le message d’événement de votre service Amazon ECS :
- « (service AWS-service) (port 8080) is unhealthy in (target-group arn:aws:elasticloadbalancing:us-east-1:111111111111:targetgroup/aws-targetgroup/123456789) due to (reason Health checks failed with these codes: [502 or 504]) or (request timeout) »
- « (service AWS-Service) (port 8080) is unhealthy in target-group tf-20190411170 due to (reason Health checks failed) »
- « (service AWS-Service) (instance i-1234567890abcdefg) (port 443) is unhealthy in (target-group arn:aws:elasticloadbalancing:us-east-1:111111111111:targetgroup/aws-targetgroup/123456789) due to (reason Health checks failed) »
Vous pouvez recevoir le message d’erreur suivant depuis votre console de tâches Amazon ECS :
« Task failed ELB health checks in (target-group arn:aws:elasticloadbalancing:us-east-1:111111111111:targetgroup/aws-targetgroup/123456789) »
Pour en savoir plus sur les vérifications de l’état du conteneur, consultez la section Comment puis-je résoudre les échecs de surveillance de l’état du conteneur pour les tâches Amazon ECS ?
Pour déterminer pourquoi votre tâche Amazon ECS s'est arrêtée, consultez les sections Affichage des erreurs relatives aux tâches interrompues par Amazon ECS et Pourquoi ma tâche Amazon ECS a-t-elle été interrompue ?
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.
Configurer différents groupes de sécurité
Il est recommandé de configurer différents groupes de sécurité pour autoriser tout le trafic entre vos équilibreurs de charge et les instances de conteneur ou l'interface réseau Elastic des tâches. Vous pouvez également configurer vos instances de conteneur afin qu’elles acceptent le trafic sur le port spécifié pour la tâche.
Dans votre configuration, vérifiez les paramètres suivants :
- Le groupe de sécurité associé à votre équilibreur de charge autorise le trafic sortant vers vos instances de conteneur ou votre interface réseau Elastic de tâches sur le port enregistré. Autorisez également le trafic sortant vers vos instances de conteneur sur le port de surveillance de l’état.
- Autorisez le trafic entrant sur la plage de ports de l'hôte de la tâche à partir du groupe de sécurité associé à votre équilibreur de charge.
Activer la zone de disponibilité pour votre équilibreur de charge
Lorsque vous configurez une zone de disponibilité pour votre équilibreur de charge, Elastic Load Balancing crée un nœud d’équilibreur de charge dans la zone de disponibilité. Si vous enregistrez des cibles dans une zone de disponibilité, mais que vous ne l’activez pas, les cibles enregistrées ne reçoivent pas de trafic. Pour en savoir plus, consultez la section Zones de disponibilité et nœuds d’équilibreur de charge.
Pour déterminer les zones de disponibilité pour lesquelles votre équilibreur de charge est configuré, procédez comme suit :
- Ouvrez la console Amazon EC2.
- Dans le volet de navigation, sous Équilibrage de charge, choisissez Équilibreurs de charge.
- Sélectionnez l’équilibreur de charge que vous utilisez pour votre service Amazon ECS.
- Dans l'onglet Description, vous pouvez consulter les zones de disponibilité.
Vous pouvez également exécuter la commande describe-load-balancers de l'interface de ligne de commande AWS :
aws elbv2 describe-load-balancers --load-balancer-arns EXAMPLE-ALB-ARN --query 'LoadBalancers[*].AvailabilityZones[].{Subnet:SubnetId}'
Remarque : Remplacez EXAMPLE-ALB-ARN de l’ARN de votre Application Load Balancer.
Pour déterminer les zones de disponibilité pour lesquelles vos instances de conteneur sont configurées, procédez comme suit :
- Ouvrez la console Amazon EC2.
- Dans le volet de navigation, sous Auto Scaling, choisissez Groupes Auto Scaling.
- Sélectionnez le groupe Auto Scaling de l’instance de conteneur associé à votre cluster.
- Dans l’onglet Détails, sous Réseau, vérifiez que les zones de disponibilité correspondent aux zones de disponibilité de votre équilibreur de charge.
Vous pouvez également exécuter la commande describe-auto-scaling-groups de l'interface de ligne de commande AWS :
aws autoscaling describe-auto-scaling-groups --auto-scaling-group-names EXAMPLE-ASG-NAME --query 'AutoScalingGroups[*].{Subnets:VPCZoneIdentifier}' --output text
Remarque : Remplacez EXAMPLE-ASG-NAME par le nom de votre groupe Auto Scaling.
Pour modifier les zones de disponibilité de votre cluster, procédez comme suit :
- Ouvrez la console AWS CloudFormation.
- Sélectionnez la pile CloudFormation de votre cluster.
- Mettez à jour la pile.
- Sur la page Spécifier les détails de la pile, mettez à jour la configuration de vos ID de sous-réseau.
Pour déterminer les zones de disponibilité pour lesquelles votre tâche est configurée, procédez comme suit :
-
Ouvrez la console Amazon ECS.
-
Dans le volet de navigation, choisissez Clusters, puis sélectionnez le cluster qui contient votre service.
-
Dans la colonne Nom du service de l’onglet Services de la page de votre cluster, sélectionnez le service à vérifier.
-
Choisissez l'onglet Configuration et mise en réseau.
-
Sous Configuration réseau, affichez les sous-réseaux configurés.
-
Ouvrez la console Amazon Virtual Private Cloud (Amazon VPC) pour afficher des informations supplémentaires qui ne sont pas disponibles dans la console ECS.
-
Exécutez la commande describe-services pour vérifier que les zones de disponibilité de vos sous-réseaux correspondent aux zones de disponibilité de votre équilibreur de charge :
aws ecs describe-services --cluster EXAMPLE-CLUSTER-NAME --service EXAMPLE-SERVICE-NAME --query 'services[*].deployments[].networkConfiguration[].awsvpcConfiguration.{Subnets:subnets}'
Remarque : Remplacez EXAMPLE-CLUSTER-NAME par le nom de votre cluster et EXAMPLE-SERVICE-NAME par le nom de votre service.
Vous ne pouvez pas utiliser la console Amazon ECS pour modifier la configuration des sous-réseaux d’un service Amazon ECS. À la place, exécutez la commande update-service de l'interface de ligne de commande AWS.
Configurer votre ACL réseau pour autoriser le trafic entre les sous-réseaux
Les sous-réseaux de votre équilibreur de charge et de votre instance de conteneur ou de votre interface réseau Elastic de tâches peuvent être différents.
Pour autoriser le trafic entre les sous-réseaux, utilisez les configurations de liste de contrôle d'accès réseau (ACL réseau) suivantes :
- L'ACL réseau associée aux sous-réseaux de votre équilibreur de charge doit autoriser le trafic entrant sur les ports éphémères (1024-65535) et le port d'écoute.
- L'ACL réseau doit également autoriser le trafic sortant sur les ports de la surveillance de l'état et éphémères.
- L'ACL réseau associée aux sous-réseaux de votre instance de conteneur ou à l'interface réseau de tâches pour awsvpc doit autoriser le trafic entrant sur le port de surveillance de l’état.
- L'ACL réseau doit également autoriser le trafic sortant sur les ports éphémères (1024-65535).
Pour plus d'informations sur les ACL réseau, consultez la section Contrôler le trafic des sous-réseaux à l'aide de listes de contrôle d'accès réseau.
Vérifier les paramètres de surveillance de l’état de votre groupe cible
Pour vous assurer que vous avez correctement configuré les paramètres de surveillance de l’état de votre groupe cible, procédez comme suit :
- Ouvrez la console Amazon EC2.
- Dans le volet de navigation, sous Équilibrage de charge, choisissez Groupes cibles.
- Sélectionnez votre groupe cible.
Important : Utilisez un nouveau groupe cible. Étant donné qu'Amazon ECS enregistre et annule l’enregistrement de façon automatique de la tâche ECS auprès du groupe cible, n'ajoutez pas manuellement de cibles au groupe cible. - Dans l'onglet Vérifications de l’état, effectuez les actions suivantes :
Vérifiez que vous avez correctement configuré les champs Port et Chemin.
Remarque : Si vous ne configurez pas correctement les champs, Amazon ECS peut demander à votre équilibreur de charge d’annuler l’enregistrement de la tâche en raison de l'échec des vérifications de l’état.
Dans le champ Port, choisissez le port du trafic.
Remarque : Si vous choisissez Remplacer, vérifiez que le port correspond au port de l’hôte de la tâche.
Dans Délais d’expiration, vérifiez que la valeur du délai de réponse avant expiration est correcte.
Remarque : Si la valeur est inférieure au temps requis pour fournir une réponse, la surveillance de l’état échoue.
Vérifier l’état et la configuration de l’application dans votre conteneur ECS
Vérifier que l'application répond à la surveillance de l’état de votre équilibreur de charge
Effectuez les opérations suivantes :
- Vérifiez que vous avez configuré correctement le port ping et le chemin de surveillance de l’état de votre groupe cible.
- Surveillez les métriques d'utilisation du processeur et de la mémoire pour le service Amazon ECS. Si votre application est lente ou expire, augmentez les quotas de ressources pour les tâches, développez le service, optimisez votre application ou utilisez un type d'instance plus important.
- Définissez une période de grâce minimale pour les vérifications de l’état afin que le planificateur de services ignore les vérifications de l’état pendant une période prédéfinie après le lancement d'une tâche.
Remarque : Votre tâche Amazon ECS peut nécessiter une période de grâce de vérification d’état plus longue pour enregistrer l'Application Load Balancer. - Vérifiez vos journaux d’application pour repérer les erreurs d’application. Pour plus d'informations, consultez la section Envoyer les journaux Amazon ECS à CloudWatch.
Vérifier que l'application renvoie le code de statut correct
Lorsque l’équilibreur de charge envoie une requête HTTP GET au chemin de surveillance de l’état, l’application de votre conteneur ECS renvoie le code de statut 200 OK par défaut. Si vous recevez un message d’erreur non HTTP, cela signifie que votre application n’écoute pas le trafic HTTP. Il se peut que vous receviez un code de statut HTTP différent de celui que vous avez spécifié dans le paramètre Comparateur. Si vous recevez un autre code de statut, cela signifie que votre application écoute le trafic HTTP mais ne renvoie pas de code de statut pour une cible saine.
Remarque : Si vous utilisez un Application Load Balancer, vous pouvez mettre à jour le paramètre Comparateur avec un code de statut autre que 200. Pour plus d'informations, consultez la section Vérifications de l’état des groupes cibles d'Application Load Balancer.
Pour vérifier que l'application de votre conteneur ECS renvoie le code de statut correct, procédez comme suit :
-
Utilisez SSH, Session Manager, une fonctionnalité d'AWS Systems Manager ou EC2 Instance Connect pour vous connecter à votre instance de conteneur.
-
(Facultatif) Exécutez la commande suivante pour votre système d'exploitation (OS) afin d'installer curl.
Amazon Linux et autres distributions basées sur RPM :sudo yum -y install curl
Systèmes basés sur Debian, tels qu'Ubuntu :
sudo apt-get install curl
-
Pour obtenir l’ID de conteneur, exécutez la commande suivante :
docker ps
Remarque : Le port d’écoute local s’affiche dans la sortie de commande sous PORTS à la fin de la séquence.
-
Si vous utilisez le mode réseau BRIDGE, exécutez la commande docker inspect pour obtenir l'adresse IP du conteneur :
IPADDR=$(docker inspect --format='{{.NetworkSettings.IPAddress}}' 112233445566)
Remarque : L'adresse IP du conteneur est enregistrée dans IPADDR. Remplacez 112233445566 par le numéro d’ID du conteneur figurant dans la sortie de la commande docker ps. Si vous utilisez awsvpc, utilisez l'adresse IP de la tâche attribuée à l'interface réseau des tâches. Si vous utilisez le mode réseau HOST, utilisez l’adresse IP de l’instance de conteneur d’hôte via lequel la tâche est exposée.
-
Pour obtenir le code de statut, exécutez une commande curl incluant IPADDR et le port d’écoute local :
curl -I http://${IPADDR}:8080/health
Remarque : Dans l'exemple de commande précédent, remplacez 8080 le port de votre écouteur.
Vérifier le statut de votre instance de conteneur
Si vous recevez le message d'événement suivant lors de votre événement de service Amazon ECS, vérifiez le statut de votre instance de conteneur :
« (service AWS-Service) (instance i-1234567890abcdefg) (port 443) is unhealthy in (target-group arn:aws:elasticloadbalancing:us-east-1:111111111111:targetgroup/aws-targetgroup/123456789) due to (reason Health checks failed) »
Vérifiez le statut de votre instance de conteneur sur la console Amazon EC2. Si votre instance échoue aux vérifications de statut du système, arrêtez-la et redémarrez-la.
Activer temporairement les journaux d'accès à l'Application Load Balancer
Activez temporairement les journaux d'accès à l’Application Load Balancer pour vérifier les problèmes suivants :
- Déterminez si l'Application Load Balancer envoie des vérifications de l’état au chemin ou au port approprié et si les cibles répondent correctement.
- Analysez les codes de statut HTTP renvoyés par les cibles pour identifier les problèmes au niveau de l'application, tels que des routes mal configurées ou des erreurs côté serveur.
- Vérifiez que les vérifications de l’état ont atteint la cible pour déterminer s'il existe des problèmes liés au réseau.
- Déterminez si le temps de réponse dépasse le délai d'expiration de la vérification de l’état configuré.
Résoudre les autres causes
Si la résolution précédente ne résout pas votre problème, consultez la section Résolution des problèmes liés aux équilibreurs de charge de service dans Amazon ECS.
Informations connexes
Créer un groupe cible pour votre Application Load Balancer
Utiliser l'équilibrage de charge pour répartir le trafic du service Amazon ECS
Vidéos associées


Contenus pertinents
- demandé il y a 2 anslg...
- demandé il y a un anlg...
- demandé il y a un moislg...
- demandé il y a 2 anslg...
- demandé il y a 8 moislg...
- Comment créer un Application Load Balancer, puis enregistrer automatiquement les tâches Amazon ECS ?AWS OFFICIELA mis à jour il y a 3 ans
- AWS OFFICIELA mis à jour il y a 3 mois
- AWS OFFICIELA mis à jour il y a 2 mois
- AWS OFFICIELA mis à jour il y a 2 ans