Comment résoudre les problèmes liés à l’échec de la surveillance de l’état des Application Load Balancers ?

Lecture de 8 minute(s)
0

Je souhaite savoir pourquoi les cibles enregistrées dans mon Application Load Balancer ne sont pas saines.

Résolution

Pour résoudre les problèmes liés à l'échec de la surveillance de l'état de votre Application Load Balancer, recherchez le code de motif et la description du problème rencontré. Suivez ensuite ces instructions pour résoudre le problème.

identification du code de motif et de la description du problème

Utilisez le mappage des ressources au lieu de la console du groupe cible pour afficher les ressources de l'équilibreur de charge et identifier les cibles défectueuses. Le mappage des ressources affiche toutes les ressources de l'Application Load Balancer sur une seule page.

Remarque : si la réponse HTTP cible de l'Application Load Balancer n'est pas la réponse attendue, vérifiez la réponse de votre application. Vérifiez que l'application envoie la bonne réponse à l'équilibreur de charge.

Résolution du problème en fonction du code de motif

Effectuez les tâches suivantes pour résoudre le problème, en fonction du code de motif de la surveillance de l'état identifié.

Elb.InitialHealthChecking

La cible doit passer la phase initiale de la surveillance de l’état avant de pouvoir recevoir des demandes de l’équilibreur de charge. Patientez jusqu’à ce que votre cible ait passé la phase initiale de la surveillance de l’état, puis vérifiez à nouveau son état.

Elb.RegistrationInProgress

L’équilibreur de charge entame l’acheminement des demandes vers la cible une fois que le processus d’enregistrement est terminé, et que la cible a passé la phase initiale de la surveillance de l’état.

Target.DeregistrationInProgress

Lorsque vous désenregistrez une cible, l'équilibreur de charge n'envoie plus de demandes à la cible. Elastic Load Balancing attend 300 secondes avant de terminer la désinscription. Vous pouvez toutefois utiliser la console Amazon EC2 ou l'interface de la ligne de commande AWS (AWS CLI) pour mettre à jour la valeur du délai. Pour en savoir plus, consultez la page Délai de désenregistrement.

**Remarque :**Si des erreurs surviennent lorsque vous exécutez des commandes AWS CLI, consultez l’article Résoudre les erreurs AWS CLI. Vérifiez également que vous utilisez bien la version la plus récente de l’AWS CLI.

Target.FailedHealthChecks

Pour résoudre ce problème, procédez comme suit :

  • 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 de tâches Windows. Si le service est arrêté, démarrez-le. Si le service n'est pas reconnu, vérifiez s'il est installé.

  • Vérifiez que la cible écoute bien le trafic sur le port de la surveillance de l’état. Vous pouvez exécuter la commande ss sur les cibles Linux pour connaître les ports d’écoute de votre serveur. Pour les cibles Windows, vous pouvez exécuter la commande netstat.

  • Lancez ou utilisez une instance existante dans le même cloud privé virtuel (VPC) que l'instance cible. Vérifiez que vous avez bien accès à cette instance. Si la cible est accessible au public, vous pouvez également envoyer une demande de surveillance de l'état directement à l'adresse IP publique de la cible.

    Utilisez la commande CURL suivante :

    $curl -vkso /dev/null <HealthCheck_protocol>://<Target_IP>:<HealthCheck_port>/<HealthCheck_path>

    Remarque : vous pouvez utiliser cette méthode pour contourner l'Application Load Balancer et vérifier si la cible répond correctement aux demandes de surveillance de l'état de l'équilibreur de charge.

  • Vérifiez que votre application répond aux demandes de surveillance de l’état de l’équilibreur de charge. L’exemple suivant présente 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 :

    GET / HTTP/1.1Host: 10.0.0.1:80
    Connection: close
    User-Agent: ELB-HealthChecker/2.0
    Accept-Encoding: gzip, compressed

    Remarque : dans l'exemple présenté ci-dessus, la valeur d'en-tête « Host » contient l'adresse IP privée de la cible, suivie du port de la 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. Vous devrez peut-être ajouter un hôte virtuel par défaut à la configuration de votre serveur Web pour pouvoir recevoir les demandes de surveillance de l'état.

  • Si plusieurs interfaces sont connectées à votre cible, vérifiez que votre application écoute sur la bonne interface réseau. Pour en savoir plus, consultez la page Type de cible.

  • Vérifiez que la cible fournit un certificat de serveur et une clé au format spécifié dans la stratégie de sécurité d’Elastic Load Balancing. Vérifiez également que la cible prend en charge les chiffrements correspondants et le protocole fourni par l'équilibreur de charge pour établir la liaison TLS.

Target.InvalidState

Si la cible est une instance Amazon EC2, utilisez la console Amazon EC2 pour vérifier que l'instance est en cours d'exécution. Si l'instance n'est pas en cours d'exécution, démarrez-la manuellement.

Target.IpUnusable

Si votre cible est de type ip, vous ne devez pas choisir une adresse IP déjà utilisée par un équilibreur de charge.

Target.NotInUse

Pour résoudre ce problème, procédez comme suit :

  • Examinez le groupe cible pour vérifier qu’il est configuré pour recevoir le trafic de l’équilibreur de charge.
  • Assurez-vous que la Zone de disponibilité de la cible est activée pour l'équilibreur de charge.

Target.NotRegistered

Vérifiez que la cible est bien enregistrée dans le groupe cible.

Target.ResponseCodeMismatch

Pour résoudre ce problème, procédez comme suit :

  • Passez en revue la configuration de la surveillance de l'état pour identifier les codes de réussite que l'équilibreur de charge s'attend à recevoir. Par défaut, le code de réussite est 200, mais vous pouvez spécifier des valeurs comprises entre 200 et 499. Ensuite, examinez les journaux d’accès au serveur Web pour voir si les codes de réussite attendus sont renvoyés.
  • Vérifiez que le chemin ping est valide. Vous devez spécifier un URI valide. La valeur par défaut est /.

Pour modifier la valeur du code de réussite ou le chemin ping, consultez la page Modifier les paramètres de surveillance de l'état d'un groupe cible.

Target.Timeout

Si vous parvenez à vous connecter, il est possible que la page cible ne réponde pas avant le délai imparti pour la surveillance de l’état. La plupart des serveurs Web, tels que NGINX et IIS vous permettent d’enregistrer le temps de réponse du serveur. Pour en savoir plus, consultez les pages Configuring logging sur le site Web de NGINX et Configurer la journalisation dans IIS sur le site Web de Microsoft.

Si vos demandes de surveillance de l'état dépassent le délai imparti, procédez ainsi :

Si vous ne parvenez pas à vous connecter, effectuez les tâches suivantes :

  • Utilisez le port de la surveillance de l'état et le protocole de la surveillance de l'état pour vérifier que le groupe de sécurité associé à la cible autorise le trafic provenant de l'équilibreur de charge. 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 la liste de contrôle d'accès au réseau (ACL réseau) associée aux sous-réseaux de votre cible autorise le trafic entrant sur le port de la surveillance de l'état. L'ACL réseau doit également autoriser le trafic sortant sur les ports éphémères (1024-65535).
  • Vérifiez que l'ACL réseau associée aux sous-réseaux de vos nœuds autorise le trafic entrant sur les ports éphémères. L'ACL réseau doit également autoriser le trafic sortant sur les ports de la surveillance de l'état et éphémères.
  • Vérifiez que les pare-feux 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 de 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 la capacité d'utilisation de la mémoire et du processeur de votre cible est acceptable. Si l’utilisation de la mémoire ou du processeur est trop élevée, vous pouvez ajouter des cibles ou augmenter la capacité de votre groupe Auto Scaling. Si votre cible est une instance EC2, remplacez-la par un type d'instance plus important.

Informations connexes

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

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