Comment puis-je résoudre les problèmes et corriger les défaillances de surveillance de l’état des Application Load Balancers ?

Lecture de 8 minute(s)
0

Les cibles enregistrées dans mon Application Load Balancer ne sont pas en bon état. Comment puis-je identifier les causes de la défaillance de surveillance de l’état de mes cibles ?

Résolution

Pour résoudre les problèmes et corriger les défaillances de surveillance de l’état de votre Application Load Balancer, procédez comme suit :

  1. Pour trouver le code raison et la description de votre problème, Vérifiez l’état de vos cibles .
  2. Suivez les étapes de résolution ci-dessous pour corriger l’erreur détectée.

Elb.InitialHealthChecking

Description : la phase initiale de surveillance de l’état est en cours.

Résolution : la cible doit au préalable passer la phase initiale de surveillance de l’état avant de pouvoir recevoir des requêtes de l’équilibreur de charge. Patientez jusqu’à ce que votre cible ait passé la phase initiale de surveillance de l’état, puis vérifiez à nouveau le niveau de son état.

Elb.RegistrationInProgress

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

Résolution : l’équilibreur de charge entame l’acheminement des requêtes vers la cible une fois que le processus d’enregistrement est terminé, et que la cible a parfaitement passé la phase initiale de surveillance de l’état.

Target.DeregistrationInProgress

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

Résolution : lorsque vous désinscrivez une cible, l’équilibreur de charge attend que les requêtes en cours de traitement aboutissent. Cette phase est appelée délai d’annulation de l’enregistrement. Par défaut, Elastic Load Balancing met 300 secondes avant de terminer le processus d’annulation de l’enregistrement. Vous pouvez toutefois personnaliser cette fréquence.

Lorsqu’une cible d’annulation de l’enregistrement n’a pas de demandes en cours de traitement ni de connexions actives, l’annulation de l’enregistrement d’Elastic Load Balancing se fait immédiatement sans attendre que le délai d’annulation de l’enregistrement soit écoulé. L’état initial d’une cible en cours de d’annulation de l’enregistrement est drainage. Une fois le délai d’annulation de l’enregistrement écoulé, le processus de d’annulation de l’enregistrement s’achève et l’état de la cible est non utilisé. Si la cible fait partie d’un groupe Auto Scaling, elle peut être supprimée et remplacée.

Target.FailedHealthChecks

Description : l’équilibreur de charge a détecté une erreur lors de l’établissement d’une connexion avec la cible ou la réponse de la cible a été mal formée.

Ré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 Windows. Si le service est en arrêt, démarrez-le. Si le service est inconnu, vérifiez que le service requis est installé.
  • Vérifiez que la cible est à l’écoute du trafic sur le port de surveillance de l’état. Vous pouvez utiliser la commande ss sur les cibles Linux pour vérifier les ports sur lesquels votre serveur écoute. Pour les cibles Windows, vous pouvez utiliser la commande netstat.
  • Vérifiez que votre application répond convenablement aux demandes de surveillance de l’état de l’équilibreur de charge. L’exemple suivant montre une demande typique de surveillance de l’état de l’Application Load Balancer qui doit être renvoyée par vos cibles avec une réponse HTTP valide. La valeur d’en-tête Hôte contient l’adresse IP privée de la cible, suivie du port de surveillance de l’état. User-agent est défini en tant que ELB-HealthChecker/2.0. La marque de fin de ligne pour les champs de l’en-tête du message est la séquence CRLF. Ainsi, l’en-tête se termine à la première ligne vide suivie d’un CRLF. Si nécessaire, ajoutez un hôte virtuel par défaut à la configuration de votre serveur Web pour recevoir les demandes de surveillance de l’é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 de cibles détermine l’interface réseau à laquelle l’équilibreur de charge envoie des surveillances de l’é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 enverra des demandes de surveillance de l’état à l’interface réseau principale des cibles. Si le type de cible est une adresse IP, l’équilibreur de charge enverra des demandes de surveillance de l’état à l’interface réseau associée à l’adresse IP correspondante. Lorsque plusieurs interfaces sont connectées à vos cibles, vérifiez que votre application écoute sur la bonne interface réseau.
  • La politique de sécurité ELBSecurityPolicy-2016-08 est utilisée pour les connexions cibles et les surveillance de l’état HTTPS. Vérifiez que la cible fournit un certificat de serveur et une clé au format spécifié dans la politique de sécurité. Vérifiez aussi 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 est dans l’état arrêté ou terminé.

Résolution : si la cible est une instance Amazon Elastic Compute Cloud (Amazon EC2), ouvrez la console Amazon EC2. Vérifiez ensuite 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 comme cible, car elle est utilisée par un équilibreur de charge.

Résolution : en créant un groupe cible, vous spécifiez son type de cible. Si le type de cible est IP, ne choisissez pas une adresse IP déjà utilisée par un équilibreur de charge.

Target.NotInUse

Description : le groupe cible n’est utilisé par aucun équilibreur de charge. Ou alors, la cible se trouve dans une zone de disponibilité qui n’est pas activée pour son équilibreur de charge.

Ré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 surveillances de l’état n’ont pas renvoyé le code HTTP attendu.

Résolution :

  • les codes de réussite sont les codes HTTP à utiliser pour vérifier si la réponse de la cible est satisfaisante. Vous pouvez spécifier des valeurs ou des plages de valeurs comprises entre 200 et 499. La valeur par défaut est de 200 %. Vérifiez la configuration de surveillance de l’état de votre équilibreur de charge pour détecter les codes de réussite qu’il s’attend à recevoir. Ensuite, examinez les journaux d’accès de votre serveur Web pour voir si les codes de réussite attendus sont renvoyés. Modifiez la valeur du code de réussite si nécessaire.
  • Vérifiez que le chemin ping est valide. Le chemin ping est la destination des cibles pour les surveillances de l’état. Veillez à spécifier un URI valide (/path?query). La valeur par défaut est /. Modifiez la valeur du chemin ping si nécessaire.

Target.Timeout

Description : La demande a expiré.

Résolution : Si vous parvenez à vous connecter, il se peut que la page cible ne réponde pas avant l’expiration du délai de surveillance de l’état de la page. La plupart des serveurs Web, tels que NGINX et IIS vous permettent d’enregistrer le temps de réponse du serveur. Si votre demande de surveillance de l’état prend plus de temps que le délai d’expiration configuré, vous pouvez :

Si vous ne parvenez pas à vous connecter :

  • Vérifiez que le groupe de sécurité associé à la cible autorise le trafic provenant de l’équilibreur de charge à l’aide du port de surveillance de l’état et du protocole de surveillance de l’état. Vous pouvez ajouter une règle au groupe de sécurité pour autoriser tout le trafic provenant du groupe de sécurité de l’équilibreur de charge. De plus, le groupe de sécurité de votre équilibreur de charge doit autoriser le trafic vers les cibles.
  • Vérifiez que les ACL réseau associés aux sous-réseaux de votre cible autorisent le trafic entrant sur le port de surveillance de l’état. Vérifiez qu’il autorise également le trafic sortant sur les ports éphémères (1024-65535).
  • Vérifiez que les ACL réseau associés aux sous-réseaux de vos nœuds de l’équilibreur de charge autorisent le trafic entrant sur les ports éphémères. Vérifiez que ces ACL autorisent également le trafic sortant sur la surveillance de l’état et les ports éphémères.
  • Vérifiez que les pare-feu au niveau du système d’exploitation de la cible autorisent l’entrée et la sortie du trafic de la surveillance de l’état.
  • Vérifiez que la table de routage des sous-réseaux associés à la cible contient une entrée qui permet au trafic de surveillance de l’état de revenir vers l’équilibreur de charge.
  • Vérifiez que l’utilisation de la mémoire et de l’unité centrale de vos cibles se situe dans des limites acceptables. Si l’utilisation de la mémoire ou de l’unité centrale est trop élevée, ajoutez des cibles supplémentaires ou augmentez la capacité de votre groupe Auto Scaling. Si votre cible est une instance EC2, vous pouvez également la mettre à niveau vers un type d’instance plus développé.

Informations connexes

Résoudre les problèmes liés à vos Application Load Balancers

AWS OFFICIEL
AWS OFFICIELA mis à jour il y a un an