Comment mettre en œuvre des contrôles de santé efficaces dans HAProxy

Comment Mettre En Oeuvre Des Controles De Sante Efficaces Dans Haproxy



La configuration de votre HAProxy pour agir en tant qu'équilibreur de charge est incomplète si vous n'envisagez pas des vérifications efficaces de l'état du serveur. La mise en œuvre des contrôles de santé contribue à améliorer la fiabilité et la disponibilité de l'application. HAProxy prend en charge la mise en œuvre de contrôles de santé qui vérifient les serveurs backend pour s'assurer que leur état de santé est adapté à l'utilisation.

Seuls les serveurs qui réussissent les contrôles de santé sont ajoutés à la rotation. De cette façon, un serveur ne sera pas sélectionné pour être utilisé s’il ne réussit pas le contrôle de santé, minimisant ainsi les risques de temps d’arrêt. Tout au long de cet article, nous approfondirons la compréhension du fonctionnement des vérifications de l'état dans HAProxy et ce qu'il faut pour mettre en œuvre une vérification de l'état efficace. Commençons!

Que sont les contrôles de santé dans HAProxy

Lors de la configuration de HAProxy, une tâche consiste à spécifier les serveurs backend à utiliser pour votre application. De cette façon, le trafic sera distribué aux serveurs pour éviter de surcharger les serveurs. Cependant, les contrôles de santé permettent de garantir qu'un serveur n'est sélectionné pour gérer le trafic que s'il est correct.







Des contrôles de santé sont effectués sur chaque serveur, et seuls ceux qui réussissent sont ajoutés à la rotation pour être utilisés dans l'équilibrage de charge. Les vérifications de l'état sont effectuées en envoyant des requêtes, telles que TCP ou HTTP, à un point de terminaison prédéfini sur votre serveur backend. Les résultats d'intégrité renvoyés par le serveur principal déterminent son état. Par exemple, l'état du serveur peut afficher UP ou DOWN ou envoyer un état OK 200 qui confirme que le serveur est sain.



Lors de la configuration des vérifications de l'état, assurez-vous que vous disposez d'un point de terminaison prédéfini à utiliser pour les vérifications de l'état. Il existe différentes options que vous pouvez utiliser pour configurer votre point de terminaison. Par exemple, vous pouvez renvoyer un code d'état ou un message en fonction de l'état du serveur. Toutes les vérifications de l'état sont définies dans la section backend de votre fichier de configuration HAProxy. Ouvrez le fichier de configuration et créez votre section frontend.



$ sudo nano /etc/haproxy/haproxy.cfg

Voici un exemple de base d'une section frontend qui lie le port 80, définit une page de statistiques et spécifie le backend par défaut.





L'étape suivante consiste à créer la section backend. Voici différents exemples sur la façon de mettre en œuvre un contrôle de santé efficace dans HAProxy.



Exemple 1 : Mise en œuvre de bilans de santé actifs efficaces

Un moyen simple de mettre en œuvre les vérifications de l’état dans HAProxy consiste à définir les vérifications de l’état actives. Avec cette option, HAProxy tentera de se connecter au serveur. Si aucune réponse n'est envoyée, il considère le serveur en mauvais état et le supprime de la rotation. La manière par défaut d'implémenter les vérifications de l'état actives consiste à ajouter le mot-clé « check » sur chaque ligne du serveur pour que HAProxy puisse toutes les vérifier.

Bien que ce premier exemple fonctionne, ce n’est pas la meilleure façon de mettre en œuvre les contrôles de santé. De plus, il utilise les paramètres par défaut. Par exemple, l'intervalle entre les contrôles, marqué comme inter, est fixé à deux secondes. La baisse, le nombre de contrôles échoués autorisés, est fixée à trois. Pour ajuster ces paramètres, spécifiez le temps intermédiaire préféré et le nombre de vérifications, comme indiqué dans l'exemple suivant :

Exemple 2 : implémentation d'un bilan de santé HTTP

Avec un bilan de santé HTTP, HAProxy enverra une requête HTTP à tous les serveurs avec le mot-clé « check ». Sur la base de la réponse, il conclut l’état du serveur. Les exemples de réponses réussies du serveur se situent dans la plage 2xx ou 3xx. Une réponse telle que 200 OK signifie que le serveur est en bon état.

Pour cet exemple, ajoutez la ligne « option httpchk » dans votre backend.

Exemple 3 : Travailler avec une requête GET

HAProxy envoie une requête GET au chemin «/» lors d'une requête HTTP. Cependant, si votre point de terminaison est configuré dans un autre chemin, vous pouvez spécifier le chemin de l'URL tel que « /health », et HAProxy lui enverra la requête GET.

En fonction de votre point de terminaison, le serveur utilisera la réponse pour déterminer l'état du serveur. Voici comment le mettre en œuvre :

Exemple 4 : Spécification d'un chemin de requête GET et d'un statut de réponse

Avec un point de terminaison, vous pouvez spécifier la réponse réussie à attendre de la requête GET du point de terminaison pour déterminer l'état du serveur. Pour cet exemple, notre chemin de requête GET est « /health » et nous attendons un état de réponse de 200 pour confirmer que le serveur est en bonne santé pour gérer l'équilibrage de charge et d'autres tâches.

Une fois que vous avez modifié votre fichier de configuration HAProxy, redémarrez HAProxy pour que les modifications prennent effet.

C'est ça! Vous avez mis en œuvre des contrôles de santé efficaces sur votre HAProxy. Vous pouvez accéder à la page de statistiques ou consulter le fichier journal avec la commande suivante pour confirmer que les vérifications de l'état fonctionnent comme prévu :

$ tail -f /var/log/haproxy.log

Conclusion

Vous pouvez mettre en œuvre un bilan de santé efficace dans HAProxy de différentes manières. Les vérifications de l'état sont implémentées dans la section backend du fichier de configuration HAProxy, et cet article a donné différents exemples sur la façon de procéder. Vérifiez votre méthode idéale et mettez en œuvre confortablement un bilan de santé efficace dans HAProxy.