Comment puis-je résoudre les problèmes liés aux échecs de vérification de l'état du Network Load Balancer pour les tâches Amazon ECS sur Fargate ?

Lecture de 8 minute(s)
0

La vérification de l’état du Network Load Balancer échoue lorsque j'exécute des tâches Amazon Elastic Container Service (Amazon ECS) sur AWS Fargate.

Brève description

Pour les vérifications de l'état HTTP et HTTPS, consultez la section Comment puis-je résoudre les échecs de vérification de l'état de l’Application Load Balancer pour les tâches Amazon ECS sur Fargate ?

Lorsque vos tâches Amazon ECS échouent à une vérification de l’état du Network Load Balancer, vous recevez des erreurs dans vos messages d'événements de service similaires aux exemples suivants :

  • « Health checks failed error - (service AWS-service) (port 80) is unhealthy in (target-group arn:aws:elasticloadbalancing:us-east-1:111111111111:targetgroup/aws-targetgroup/123456789) due to (raison de l’échec des vérifications de l’état) »
  • « Target is in an Availability Zone that is not turned on for the load balancer error - (service AWS-service) (port 80) is unhealthy in (target-group arn:aws:elasticloadbalancing:us-east-1:111111111111:targetgroup/aws-targetgroup/123456789) due to (raison pour laquelle la cible se trouve dans une zone de disponibilité qui n'est pas activée pour l'équilibreur de charge) »
  • « Health checks requests getting timed out - (service AWS-service) (port 8443) is unhealthy in (target-group arn:aws:elasticloadbalancing:us-east-1:111111111111:targetgroup/aws-targetgroup/123456789) due to (raison de l’expiration de la requête). »

Si vous recevez des échecs de vérification de l'état du conteneur, consultez la section Comment puis-je résoudre les problèmes liés aux échecs de vérification de l'état du conteneur pour les tâches Amazon ECS ?

Si vos tâches Amazon ECS sont arrêtées, consultez la section Affichage des erreurs liées aux tâches arrêtées par Amazon ECS.

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.

Échec des vérifications de l’état

Pour résoudre les problèmes liés aux échecs de vérification de l’état de l'équilibreur de charge sur vos tâches Fargate, effectuez les actions suivantes.

Vérifier la connectivité entre votre équilibreur de charge et la tâche Amazon ECS

Pour permettre à l'équilibreur de charge d'effectuer des vérifications de l'état de vos tâches Amazon ECS, confirmez les configurations suivantes :

  • Si votre conteneur est mappé au port 80, votre groupe de sécurité de tâches autorise le trafic entrant sur le port 80.
  • L'application peut s'exécuter sur le port qui est mappé à l'instance de conteneur dans la définition de tâche.
  • Le groupe de sécurité de l’interface réseau Elastic autorise le trafic sur la plage CIDR Amazon Virtual Private Cloud (Amazon VPC). Pour plus d'informations, consultez la section Groupes de sécurité cibles.
  • Les règles du groupe de sécurité du Network Load Balancer autorisent le trafic sortant vers le groupe de sécurité du service Amazon ECS sur le port de conteneur requis.
  • Les listes de contrôle d'accès réseau (ACL réseau) des sous-réseaux de l'interface réseau correspondant à votre tâche autorisent le trafic entrant sur le port de vérification de l’état.
  • L'ACL réseau autorise le trafic sortant sur les ports éphémères.

Vérifier que vos tâches répondent correctement aux vérifications manuelles au sein de votre connexion Amazon VPC

Vérifiez que les tâches d’instance Amazon Elastic Compute Cloud (Amazon EC2) au sein de votre VPC répondent correctement aux vérifications manuelles.

Remarque : Vous pouvez créer un cluster pour le type de lancement Amazon EC2 ou lancer une nouvelle instance Amazon EC2. Si vous ne souhaitez pas lancer d'instance Amazon EC2, vous pouvez utiliser ECS Exec.

Pour vérifier la réponse de votre tâche, utilisez SSH pour vous connecter à une instance EC2 au sein de votre connexion Amazon VPC. Puis, exécutez l'une des commandes suivantes pour tester la configuration de votre groupe cible.

Vérifications de l’état HTTP :

curl -Iv http://example-task-private-ip:example-port/healthcheck_path

Remarque : Remplacez example-task-private-ip par l'adresse IP de votre tâche et example-port par votre port. La sortie de la commande affiche les codes de statut réussis compris entre 200 et 399 pour les configurations de vérification de l’état HTTP sur le groupe cible.

Exemple de sortie :

HTTP/1.1 200 OK

Pour les vérifications de l’état TCP qui n'utilisent pas le protocole SSL avec les cibles :

nc -z -v -w10 example-task-private-ip example-port

Remarque : Remplacez example-task-private-ip par l'adresse IP de votre tâche et example-port par votre port.

Exemple de sortie :

nc -z -v -w10 10.x.x.x 80Connection to 10.x.x.x port 80 [tcp/http] succeeded!

Les vérifications de l’état TCP qui requièrent le protocole SSL pour les vérifications de l’état du backend :

nc -z -v -w10 --ssl example-task-private-ip example-port

Remarque : Remplacez example-task-private-ip par l'adresse IP de votre tâche et example-port par votre port.

Exemple de sortie :

nc -z -v -w10 10.x.x.x 443Connection to 10.x.x.x port 443 [tcp/https] succeeded!

Vérifier le statut et la configuration de l'application dans votre instance de conteneur Amazon ECS

Effectuez les opérations suivantes :

Si votre tâche nécessite une période de grâce plus longue pour la vérification de l’état, exécutez la commande update-service de l'AWS CLI suivante pour augmenter healthCheckGracePeriodSeconds :

aws ecs update-service --cluster example-cluster --service example-service --region example-region --health-check-grace-period-seconds example-value --force-new-deployment

Remarque : Remplacez example-cluster par le nom de votre cluster, example-service par le nom de votre service, example-region par votre région AWS et example-value par le délai de grâce de votre vérification d’état en secondes.

Vérifiez si les cibles de votre groupe cible échouent aux vérifications de l’état car elles mettent plus de temps à répondre que le délai d'attente par défaut. Pour résoudre ce problème, exécutez la commande modify-target-group suivante afin d'augmenter le délai d'attente du groupe cible en secondes :

aws elbv2 modify-target-group --target-group-arn Target-Group-ARN --health-check-timeout-seconds Timeout-Value

Remarque : Remplacez Target-Group-ARN par l'ARN de votre groupe cible et Timeout-Value par la valeur du délai d'expiration de votre groupe en secondes.

Vérifiez vos journaux d’application pour repérer les erreurs d’application.

Assurez-vous que le code de réponse envoyé par votre application sur HealthCheckPath correspond au code de réponse indiqué dans les paramètres de vérification de l’état de votre groupe cible. Si vous avez configuré la journalisation des accès sur votre application, utilisez le mot-clé ELB-HealthChecker/2.0 pour vérifier la réponse journalisée. Si vous utilisez AWS CloudWatch Logs, utilisez CloudWatch Logs Insights pour exécuter la requête suivante :

fields @timestamp, @message| sort @timestamp desc
| filter @message like /ELB-HealthChecker/

La sortie de la requête indique les requêtes de vérification d’état envoyées par le Network Load Balancer, le code de réponse et les erreurs.

La cible se trouve dans une zone de disponibilité qui n'est pas activée pour l'équilibreur de charge

Si vous enregistrez des cibles dans une zone de disponibilité, vous devez activer cette zone de disponibilité pour que les cibles enregistrées reçoivent du trafic.

Important : Vous ne pouvez pas désactiver les zones de disponibilité pour un Network Load Balancer après avoir créé l'équilibreur de charge. Cependant, vous pouvez activer des zones de disponibilité supplémentaires.

Pour identifier les zones de disponibilité pour lesquelles votre équilibreur de charge est configuré, exécutez la commande describe-load-balancers suivante :

aws elbv2 describe-load-balancers --load-balancer-arn example-arn-load-balancer --region example-region --query "LoadBalancers[].AvailabilityZones[].ZoneName"

Remarque : Remplacez example-arn-load-balancer par l'ARN de votre équilibreur de charge et example-region par votre région.

Pour identifier les zones de disponibilité pour lesquelles votre tâche Fargate est configurée, exécutez la commande describe-services suivante :

aws ecs describe-services --cluster example-cluster-name --services example-service-name --region example-region --query "services[].networkConfiguration.awsvpcConfiguration.subnets"

Remarque : Remplacez example-cluster-name par le nom de votre cluster, example-service-name par le nom de votre service et example-region par votre région. La sortie de la commande affiche les ID des sous-réseaux de votre service.

Pour identifier les zones de disponibilité des sous-réseaux de votre tâche, exécutez la commande describe-subnets suivante :

aws ec2 describe-subnets --subnet-ids example-subnet-ids --region example-region --query "Subnets[].AvailabilityZone"

Remarque : Remplacez example-subnet-ids par l’ID de votre sous-réseau et example-region par votre région. La sortie de la commande indique les zones de disponibilité pour lesquelles votre service est configuré.

Pour modifier la configuration de sous-réseau d'un service Amazon ECS, exécutez la commande update-service suivante :

aws ecs update-service --cluster cluster-name --service service-name --network-configuration "awsvpcConfiguration={subnets=[subnet-xxxxx,subnet-yyyyy]}"

Remarque : Remplacez cluster-name par le nom de votre cluster et service-name par le nom de votre service.

Dépendance du backend

Si le chemin de vérification de l'état de l'application communique avec un service en amont ou en aval, tel qu'une base de données, assurez-vous que les services sont disponibles. Des problèmes liés aux services peuvent entraîner l'échec de la vérification de l’état.

Les tâches Amazon ECS peuvent être à l’état Non sain pour plusieurs raisons. 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

Vérifications de l’état pour les groupes cibles du Network Load Balancer

Configuration du réseau

AWS OFFICIEL
AWS OFFICIELA mis à jour il y a 4 mois