Comment puis-je faire en sorte que mon instance Amazon EC2 réussisse la vérification de l’état de l’équilibreur de charge d’application dans Amazon ECS ?

Date de la dernière mise à jour : 22/04/2020

Une vérification conduite par l'équilibreur de charge d'application révèle que l'état d'une instance Amazon Elastic Compute Cloud (Amazon EC2), dans Amazon Elastic Container Service (Amazon ECS), est non valide. Comment puis-je faire en sorte que mon instance EC2 réussissent la vérification de l’état ?

Brève description

Pour que la vérification conduite par l'équilibreur de charge d'application s'effectue avec succès, assurez-vous que les conditions suivantes sont réunies :

  • L'application de votre conteneur ECS renvoie le bon code de réponse.
  • Les groupes de sécurité reliés à votre équilibreur de charge et à votre instance de conteneur sont correctement configurés.
  • Les paramètres de vérification avancés de votre groupe cible sont correctement configurés.

Remarque : une tâche ECS peut renvoyer un état non sain pour de nombreuses raisons. Si les étapes suivantes ne permettent pas de résoudre votre problème, consultez Dépannage des équilibreurs de charge du service.

Conseil : pour savoir ce qui a arrêté votre tâche ECS, consultez Recherche d’erreurs dans les tâches arrêtées.

Solution

Vérification du code de réponse renvoyé par l’application de votre conteneur ECS

Lorsque l'équilibreur de charge transmet une demande GET HTTP, l'application de votre conteneur ECS doit renvoyer le code de réponse 200 OK par défaut.

Remarque : si vous utilisez un équilibreur de charge d'application, vous pouvez modifier le paramètre Concordeur afin de spécifier un code de réponse autre que 200. Pour obtenir des informations supplémentaires, consultez la section Vérifications de l'état de vos groupes cibles.

1.    Connectez-vous à votre instance de conteneur avec SSH.

2.    Facultatif : Installez l'outil curl à l'aide de la commande appropriée à votre système.

Avec Amazon Linux et les autres distributions RPM, exécutez la commande suivante :

sudo yum –y install curl

Avec les systèmes basés sur Debian (comme Ubuntu), exécutez la commande suivante :

sudo apt-get install curl

3.    Pour obtenir l'ID du conteneur, exécutez la commande suivante :

docker ps

Remarque : le port de l'écouteur local est indiqué dans le résultat de la commande, sous PORTS, à la fin de la séquence et après le chevron.

4.    Pour obtenir l'adresse IP du conteneur, utilisez la commande docker inspect. Reportez-vous à l'exemple suivant :

$ IPADDR=$(docker inspect --format='{{.NetworkSettings.IPAddress}}' aabbccddeeff)

Remarque : l'adresse IP du conteneur est enregistrée dans la bibliothèque IPADDR.

5.    Pour obtenir le code d'état, exécutez une commande curl incluant la bibliothèque IPADDR et le port de l'écouteur local.

Reportez-vous à l'exemple suivant, applicable à un conteneur d'écoute au niveau du port 8080 avec le chemin de vérification étant /health :

curl -v http://${IPADDR}:8080/health

La commande doit renvoyer le code 200 OK.

Si vous recevez un message d'erreur non HTTP, votre application n'écoute pas le trafic HTTP. Si vous recevez un code d'état HTTP différent de la valeur que vous avez spécifiée pour le paramètre Concordeur, votre application écoute le trafic mais aucune cible saine n'est relevée.

Configuration correcte des groupes de sécurité associés à votre équilibreur de charge et à votre instance de conteneur

Configurez un groupe de sécurité pour votre équilibreur de charge et un autre pour votre instance de conteneur. En procédant ainsi, vous autorisez tout le trafic entre vos équilibreurs de charge et les instances de conteneur. En outre, faites en sorte que vos instances de conteneur acceptent le trafic au niveau de la plage de ports éphémères utilisée pour le mappage de port hôte dynamique.

1.    Vérifiez que le groupe de sécurité associé à votre équilibreur de charge autorise tout le trafic sortant en direction du groupe de sécurité associé à votre instance de conteneur.

2.    Vérifiez que le groupe de sécurité associé à votre instance de conteneur autorise tout le trafic entrant au niveau de la plage de ports éphémères (il s'agit généralement des ports 32768-65535) et à partir du groupe de sécurité associé à votre équilibreur de charge.

Important : si vous spécifiez le port hôte lors de la définition de la tâche, le service est exposé sur celui-ci, et non au niveau de la plage de ports éphémères. Pour cette raison, assurez-vous que votre groupe de sécurité réflète le port hôte spécifié, et non à la plage de ports éphémères.

Pour savoir comment vérifier le groupe de sécurité associé à votre équilibreur de charge, consultez la section Groupes de sécurité associés à votre équilibreur de charge d'application.

Configuration correcte des paramètres de vérification avancés de votre groupe cible

Pour savoir comment configurer correctement les paramètres de vérification avancés, consultez la section Vérifications de l'état pour vos groupes cibles. Lorsque vous configurez les paramètres de vérification avancés, assurez-vous d'effectuer les étapes suivantes :

1.    Ouvrez la console Amazon EC2, choisissez Groupes cibles, puis votre groupe cible.

Important : veillez à employer un nouveau groupe cible. Évitez d'ajouter manuellement des cibles au groupe, Amazon ECS enregistrant et annulant automatiquement l'enregistrement des conteneurs auprès du groupe cible.

2.    Sélectionnez la vue Vérifications de l'état.

3.    Dans la section Port, choisissez Port de trafic.

Remarque : si vous sélectionnez l'option Ignorer, le trafic ne sera pas acheminé correctement.


Cet article vous a-t-il été utile ?

Cette page peut-elle être améliorée ?


Vous avez besoin d'aide ?