Comment résoudre les problèmes d'échec des vérifications d'état des équilibreurs de charge d'application ?

Date de la dernière mise à jour : 15/01/2020

Les cibles enregistrées dans mon équilibreur de charge d'application ne sont pas saines. Comment déterminer la cause de l'échec des vérifications d'état des cibles ?

Résolution

Pour résoudre les problèmes d'échec des vérifications d'état de votre équilibreur de charge d'application :

1.    Vérifiez l'état de votre cible pour rechercher le code de la raison et la description du problème.

2.    Suivez les étapes de résolution ci-dessous correspondant au message d'erreur reçu.

Elb.InitialHealthChecking

Description : les vérifications d'état initiales sont en cours.

Résolution : pour qu'une cible puisse recevoir les demandes de l'équilibreur de charge, les vérifications d'état initiales de la cible doivent aboutir. Attendez que les vérifications d'état initiales aboutissent et vérifiez de nouveau l'état.

Elb.RegistrationInProgress

Description : l'enregistrement de la cible est en cours.

Résolution : l'équilibreur de charge commence à acheminer les demandes vers la cible dès que le processus d'enregistrement est terminé et que les vérifications d'état initiales ont abouti. 

Target.DeregistrationInProgress

Description : l'annulation de l'enregistrement de la cible est en cours.

Résolution : lorsque vous annulez l'enregistrement d'une cible, l'équilibreur de charge attend que les demandes en cours soient terminées. Cette période s'appelle le délai d'annulation d'enregistrement. Par défaut, Elastic Load Balancing attend 300 secondes avant de terminer le processus d'annulation d'enregistrement. Toutefois, vous pouvez personnaliser cette valeur.

Si une annulation d'enregistrement de cible n'a pas de demandes en cours et de connexions actives, Elastic Load Balancing annule l'enregistrement immédiatement, sans attendre que le délai d'annulation d'enregistrement soit écoulé. L'état initial d'une cible dont l'enregistrement est en cours d'annulation est Draining (Drainage). Une fois le délai d'annulation d'enregistrement écoulé, le processus d'annulation d'enregistrement se termine et l'état de la cible devient unused (inutilisée). Si la cible fait partie d'un groupe Auto Scaling, elle peut être résiliée et remplacée.

Target.FailedHealthChecks

Description : l'équilibreur de charge a reçu une erreur lors de l'établissement d'une connexion à la cible, ou la réponse de la cible était incorrecte.

Solution :

  • Vérifiez que votre application est en cours d'exécution. Utilisez la commande service pour vérifier l'état des services sur les cibles Linux. Pour les cibles Windows, consultez l'onglet Services du Gestionnaire des tâches de Windows. Si le service est arrêté, démarrez-le. Si le service n'est pas reconnu, vérifiez que le service requis est installé.
  • Vérifiez que la cible écoute le trafic sur le port de vérification de l'état. Vous pouvez utiliser la commande ss sur les cibles Linux pour identifier les ports qu'écoute le serveur. Pour les cibles Windows, vous pouvez utiliser la commande netstat.
  • Vérifiez que votre application répond aux demandes de vérification d'état de l'équilibreur de charge en conséquence. L'exemple suivant montre une demande type de vérification d'état de l'équilibreur de charge d'application à laquelle vos cibles doivent envoyer une réponse HTTP valide. La valeur d'en-tête Host (Hôte) contient l'adresse IP privée de la cible, suivie du port de vérification d'état. User-agent  a la valeur ELB-HealthChecker/2.0. La fin de ligne des champs d'en-tête de message est la séquence CRLF, et l'en-tête s'arrête à la première ligne vide suivie d'un CRLF. Si nécessaire, ajoutez un hôte virtuel par défaut à votre configuration de serveur Web pour recevoir les demandes de vérification d'état.
GET / HTTP/1.1
Host: 10.0.0.1:80
Connection: close
User-Agent: ELB-HealthChecker/2.0
Accept-Encoding: gzip, compressed
  • Le type de cible de votre groupe cible détermine l'interface réseau à laquelle l'équilibreur de charge envoie les vérifications d'état sur les cibles. Par exemple, vous pouvez enregistrer des ID d'instance, des adresses IP et des fonctions Lambda. Si le type de cible est l'ID d'instance, l'équilibreur de charge envoie les demandes de vérification d'état à l'interface réseau principale des cibles. Si le type de cible est l'adresse IP, l'équilibreur de charge envoie les demandes de vérification d'état à l'interface réseau associée à l'adresse IP correspondante. Si vos cibles ont plusieurs interfaces attachées, vérifiez que votre application écoute sur l'interface réseau correcte.
  • La stratégie de sécurité ELBSecurityPolicy-2016-08 est utilisée pour les connexions cibles et les vérifications d'état HTTPS. Vérifiez que la cible fournit un certificat de serveur et une clé dans le format spécifié dans la stratégie de sécurité. Vérifiez également que la cible prend en charge un ou plusieurs chiffrements correspondants et un protocole fourni par l'équilibreur de charge pour établir la liaison TLS.

Target.InvalidState

Description : la cible a l'état Stopped (Arrêtée) ou Terminated (Résiliée).

Résolution : si la cible est une instance EC2, ouvrez la console Amazon EC2 et vérifiez que l'instance est en cours d'exécution. Démarrez l'instance si nécessaire.

Target.IpUnusable

Description : l'adresse IP ne peut pas être utilisée en tant que cible, car elle est utilisée par un équilibreur de charge.

Résolution : lorsque vous créez un groupe cible, vous spécifiez son type de cible. Lorsque la cible est de type IP, ne choisissez pas une adresse IP qu'un équilibreur de charge utilise déjà.

Target.NotInUse

Description : le groupe cible n'est pas utilisé par un équilibreur de charge ou la cible est dans une zone de disponibilité qui n'est pas activée pour l'équilibreur de charge.

Solution :

  • Vérifiez le groupe cible et assurez-vous qu'il est configuré pour recevoir le trafic de l'équilibreur de charge.
  • Vérifiez que la zone de disponibilité de la cible est activée pour l'équilibreur de charge.

Target.NotRegistered

Description : la cible n'est pas enregistrée dans le groupe cible.

Résolution : vérifiez que la cible est enregistrée dans le groupe cible.

Target.ResponseCodeMismatch

Description : les vérifications d'état n'ont pas retourné un code HTTP attendu.

Solution :

  • Les codes de succès sont les codes HTTP à utiliser lors de la recherche d'une réponse de succès provenant d'une cible. Vous pouvez spécifier des valeurs ou des plages de valeurs entre 200 et 499. La valeur par défaut est 200. Vérifiez la configuration de la vérification d'état de votre équilibreur de charge pour identifier les codes de succès qu'il doit recevoir. Ensuite, examinez les journaux d'accès au serveur Web pour déterminer si les codes de succès attendus sont renvoyés. Modifiez la valeur de code de succès si nécessaire.
  • Vérifiez que le chemin ping est valide. Le chemin ping est la destination des vérifications d'état sur les cibles. Veillez à spécifier un URI (/path?query) valide. La valeur par défaut est /. Modifiez la valeur de chemin ping si nécessaire.

Target.Timeout

Description : délai d’attente de la demande dépassé.

Résolution : si vous pouvez vous connecter, la page cible peut ne pas répondre avant l'expiration de la vérification d'état. La plupart des serveurs Web, comme nginx et IIS, permettent de consigner le délai de réponse du serveur. Si vos demandes de vérification d'état prennent plus de temps que le délai configuré, vous pouvez :

Si vous ne pouvez pas vous connecter :


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

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


Vous avez besoin d’aide ?