Comment résoudre les échecs de vérification de l'état des tâches Amazon ECS sur Fargate ?

Dernière mise à jour : 08-01-2021

Je reçois des échecs de vérification de l'état de mes tâches Amazon Elastic Container Service (Amazon ECS) sur AWS Fargate.

Solution

Résoudre les erreurs de l’équilibreur de charge les plus courantes

Si vous recevez l'une des erreurs suivantes :

  • (service AWS-service) (port 8080) is unhealthy in (target-grouparn:uxyztargetgroup/aws-targetgroup/123456789) due to (reason Health checks failed with these codes: [502]) or [request timeout]
  • (service AWS-Service) (port 8080) is unhealthy in target-group tf-20190411170 due to (reason Health checks failed)

Essayez ces étapes de dépannage :

  • Si votre conteneur est mappé au port 80, vérifiez que votre groupe de sécurité conteneur autorise le trafic entrant sur le port 80 pour l'équilibreur de charge.
  • Assurez-vous que la valeur du port ping pour l'état de votre équilibreur de charge est correctement configurée. Si ce port n'est pas bien configuré, votre équilibreur de charge pourrait annuler l'enregistrement du conteneur de lui-même.
  • Définissez une période de grâce minimale pour la vérification de l'état. Celle-ci demande au planificateur de service d'ignorer les vérifications de l'état d'Elastic Load Balancing pendant une période prédéfinie après l'instanciation d'une tâche.
  • Surveillez les métriques du processeur et de la mémoire du service. Par exemple, un processeur élevé peut empêcher votre application de répondre et entraîner une erreur 502.
  • Vérifiez les erreurs d'application dans vos journaux d'application.
  • Vérifiez si le port ping et le chemin de vérification de l'état sont correctement configurés.
  • Assurez-vous que votre base de données backend est correctement connectée. Cela suppose que votre application est exécutée sous la forme d'un ensemble de tâches lancées par Amazon Elastic Container Service (Amazon ECS) sur des instances Amazon Elastic Compute Cloud (Amazon EC2). Cela suppose également que votre application ne peut pas communiquer avec la base de données Amazon Relational Database Service (Amazon RDS).

Résoudre les erreurs 504

Vous pouvez recevoir une erreur 504 pour l'une des raisons suivantes :

  • Votre équilibreur de charge n'a pas pu établir une connexion à la cible avant l'expiration du délai de connexion (10 secondes).
  • Votre équilibreur de charge a établi une connexion avec la cible, mais la cible n'a pas répondu avant l'expiration du délai d'inactivité.
  • La liste de contrôle d'accès réseau de votre sous-réseau n'a pas autorisé le trafic depuis les cibles vers les nœuds de l'équilibreur de charge sur les ports éphémères (1024-65535).

Si vous recevez une erreur 504 comme celle-ci :

  • (service AWS-Service) (port 8080) is unhealthy in target-group due to (reason Health checks failed with these codes:[504]

Essayez ces étapes de dépannage :

  • Vérifiez que le backend répond avec succès sans retard.
  • Définissez correctement la valeur du délai de réponse.
    Remarque : le délai de réponse est le délai pendant lequel votre conteneur doit renvoyer une réponse au ping de vérification de l'état. Si cette valeur est inférieure au temps requis pour une réponse, la vérification de l'état échoue.
  • Pour plus d'informations sur les erreurs, consultez les journaux d'accès de votre équilibreur de charge.

Résoudre les échecs de vérification de l'état des conteneurs

Si vous recevez l'erreur suivante, votre service n'est pas intégré à votre équilibreur de charge, mais les conteneurs de votre tâche utilisent des vérifications d'état que votre service ne peut pas réaliser :

  • (service AWS-Service) (task ff3e71a4-d7e5-428b-9232-2345657889) failed container health checks

Essayez les étapes de dépannage suivantes :

  • Vérifiez que la commande que vous passez au conteneur est correcte et possède la bonne syntaxe.
  • Vérifiez vos journaux d'application et les journaux Amazon CloudWatch logs si la tâche est en cours d'exécution depuis un certain temps.

Remarque : vous ne pouvez pas accéder à l'hôte sous-jacent car Fargate est géré par AWS. Pour obtenir plus de solutions de dépannage, lancez vos tâches Amazon ECS dans Amazon EC2. Connectez-vous ensuite à vos instances EC2 en utilisant SSH.