Elastic Load Balancing
Equilibreurs de charge classiques

Dépanner un Classic Load Balancer : vérifications de l'état de santé

Votre équilibreur de charge vérifie l'état de santé de ses instances enregistrées à l'aide de la configuration de vérification de l'état par défaut fournie par Elastic Load Balancing ou d'une vérification de l'état personnalisée que vous spécifiez. La configuration de la vérification de l'état contient des informations comme le protocole, le port de ping, le chemin de ping, le délai de réponse et l'intervalle de vérification de l'état. Une instance est considérée comme saine si elle retourne un code de réponse 200 dans l'intervalle de vérification de l'état. Pour plus d'informations, consultez Configurer les vérifications de l'état pour votre Classic Load Balancer.

Si l'état actuel de tout ou partie de vos instances est OutOfService et que le champ de description affiche le message Instance has failed at least the Unhealthy Threshold number of health checks consecutively, les instances n'ont pas réussi la vérification de l'état de l'équilibreur de charge. Voici les problèmes à rechercher, les causes potentielles et les étapes que vous pouvez suivre pour résoudre les problèmes.

Erreur de page cible de vérification de l'état

Problème : une demande HTTP GET envoyée à l'instance sur le port de ping et le chemin de ping spécifiés (par exemple, HTTP:80/index.html) reçoit un code de réponse autre que 200.

Cause 1 : aucune page cible n'est configurée sur l'instance.

Solution 1 : créez une page cible (par exemple, index.html) sur chaque instance enregistrée et spécifiez son chemin comme chemin de ping.

Cause 2 : la valeur de l'en-tête Content-Length dans la réponse n'est pas définie.

Solution 2 : si la réponse inclut un corps, définissez la valeur de l'en-tête Content-Length sur une valeur supérieure ou égale à zéro, ou définissez la valeur de Transfer-Encoding sur « chunked ».

Cause 3 : l'application n'est pas configurée pour recevoir des demandes de l'équilibreur de charge ou pour renvoyer un code de réponse 200.

Solution 3 : vérifiez l'application sur votre instance pour enquêter sur la cause.

La connexion aux instances a expiré

Problème : des demandes de vérification de l'état de votre équilibreur de charge à vos instances EC2 dépassent le délai imparti, ou échouent par intermittence.

Tout d'abord, vérifiez le problème en vous connectant directement à l'instance. Nous vous recommandons de vous connecter à votre instance à partir du réseau en utilisant l'adresse IP privée de l'instance.

Utilisez la commande suivante pour une connexion TCP :

telnet private-IP-address-of-the-instance port

Utilisez la commande suivante pour une connexion HTTP ou HTTPS :

curl –I private-IP-address-of-the-instance:port/health-check-target-page

Si vous utilisez une connexion HTTP/HTTPS et obtenez une réponse autre que 200, consultez Erreur de page cible de vérification de l'état. Si vous pouvez vous connecter directement à l'instance, vérifiez les points suivants :

Cause 1 : l'instance ne peut pas répondre dans le délai de réponse configuré.

Solution 1 : ajustez les paramètres de délai de réponse dans la configuration de vérification de l'état de votre équilibreur de charge.

Cause 2 : l'instance est soumise à une charge importante et dépasse votre délai de réponse configuré pour répondre.

Solution 2 :

  • Vérifiez dans le graphique de surveillance si l'UC est sur-utilisée. Pour obtenir des informations, consultez Obtenir les statistiques d'une instance EC2 spécifique dans le Amazon EC2 Guide de l'utilisateur pour les instances Linux.

  • Vérifiez l'utilisation d'autres ressources d'application, comme la mémoire ou les limites en vous connectant à vos instances EC2.

  • Si nécessaire, ajoutez des instances supplémentaires ou activez Auto Scaling. Pour plus d'informations, consultez la Amazon EC2 Auto Scaling Guide de l'utilisateur.

Cause 3 : si vous utilisez une connexion HTTP ou HTTPS et que la vérification de l'État est effectuée sur une page cible spécifiée dans le champ de chemin de ping (par exemple, HTTP:80/index.html), la page cible peut prendre plus de temps pour répondre que votre délai d'attente configuré.

Solution 3 : utilisez une page cible de vérification de l'état plus simple ou ajustez les paramètres d'intervalle de vérification de l'état.

L'authentification par clé publique échoue

Problème : un équilibreur de charge configuré pour utiliser le protocole HTTPS ou SSL avec l'authentification principale activée ne réussit pas l'authentification par clé publique.

Cause : la clé publique sur le certificat SSL ne correspond pas à la clé publique configurée sur l'équilibreur de charge. Utilisez la commande s_client pour afficher la liste des certificats de serveur dans la chaîne de certificats. Pour plus d'informations, consultez s_client dans la documentation OpenSSL.

Solution : vous devez peut-être mettre à jour votre certificat SSL. Si votre certificat SSL est à jour, essayez de le réinstaller sur votre équilibreur de charge. Pour plus d'informations, consultez Remplacer le certificat SSL pour votre Classic Load Balancer.

L'instance ne reçoit pas le trafic provenant de l'équilibreur de charge

Problème : le groupe de sécurité pour l'instance bloque le trafic provenant de l'équilibreur de charge.

Effectuez une capture de paquet sur l'instance pour vérifier le problème. Utilisez la commande suivante:

# tcpdump port health-check-port

Cause 1 : le groupe de sécurité associé à l'instance n'autorise pas le trafic provenant de l'équilibreur de charge.

Solution 1 : modifiez le groupe de sécurité de l'instance pour autoriser le trafic provenant de l'équilibreur de charge. Ajoutez une règle pour autoriser tout le trafic à partir du groupe de sécurité de l'équilibreur de charge.

Cause 2 : le groupe de sécurité de votre équilibreur de charge dans un VPC n'autorise pas le trafic vers les instances EC2.

Solution 2 : modifiez le groupe de sécurité de votre équilibreur de charge pour autoriser le trafic vers les sous-réseaux et les instances EC2.

Pour plus d'informations sur la gestion des groupes de sécurité pour EC2-Classic, consultez Groupes de sécurité pour des instances dans EC2-Classic.

Pour plus d'informations sur la gestion des groupes de sécurité pour un VPC, consultez Groupes de sécurité pour les équilibreurs de charge dans un VPC.

Des ports sur l'instance ne sont pas ouverts

Problème : la vérification de l'état envoyée à l'instance EC2 par l'équilibreur de charge est bloquée par le port ou un pare-feu.

Vérifiez le problème en utilisant la commande suivante :

netstat –ant

Cause : le port de vérification de l'état ou le port d'écouteur spécifié (s'ils sont configurés différemment) n'est pas ouvert. Les ports spécifiés pour la vérification de l'état et le port d'écoute doivent être ouverts et à l'écoute.

Solution : ouvrez le port d'écoute et le port spécifié dans votre configuration de vérification de l'état (s'ils sont configurés différemment) sur vos instances pour recevoir le trafic de l'équilibreur de charge.

Les instances d'un groupe Auto Scaling ne réussissent pas la vérification de l'état ELB

Problème : les instances de votre groupe Auto Scaling réussissent la vérification de l'état Auto Scaling par défaut, mais pas la vérification de l'état ELB.

Cause : Auto Scaling utilise des contrôles de statut EC2 afin de détecter les problèmes matériels et logiciels liés aux instances, mais l'équilibreur de charge effectue des vérifications de l'état en envoyant une demande à l'instance et en attendant un code de réponse 200 ou en établissant une connexion TCP (pour une vérification de l'état basée sur TCP) avec l'instance.

Une instance peut ne pas réussir la vérification de l'état ELB, parce qu'une application s'exécutant sur l'instance connaît des problèmes faisant que l'équilibreur de charge considère l'instance comme étant hors service. Cette instance peut réussir la vérification de l'état Auto Scaling. Elle ne sera pas remplacée par la stratégie Auto Scaling car elle est considérée comme saine selon le contrôle de statut EC2.

Solution : utilisez la vérification de l'état ELB pour votre groupe Auto Scaling. Lorsque vous utilisez la vérification de l'état ELB, Auto Scaling détermine l'état de santé de vos instances en vérifiant les résultats de la vérification de l'état de l'instance et de la vérification de l'état ELB. Pour plus d'informations, consultez Ajout des vérifications de l'état au groupe Auto Scaling dans le Amazon EC2 Auto Scaling Guide de l'utilisateur.