Wiki [Tuto/HowTo] HaProxy - bloquer les serveurs renvoyant des erreurs HTTP

0
29
août
2018

Introduction

Par défaut HaProxy ne vérifie que la présence en ligne ou non des serveurs web, pas les erreurs renvoyées dans les en-têtes.
Ainsi, un serveur backend non fonctionnel suite à un problème de montage ou d'accès à la base de données, sera quand même considéré comme "UP" et les requêtes réseaux continueront d'y être acheminées, provoquant moult mécontentements chez vos utilisateurs qui pourraient se retrouver spammer de notification d'erreur sur leur smartphone chéri.
Néanmoins, HaProxy permet, via des paramètres côté Backend, de résoudre ce problème et de bloquer les serveurs Backend en fonction des headers HTTP qu'ils renvoient lors des checks. Ainsi si un serveur renvoi une erreur à un client lambda, HaProxy ne bronchera pas. Il faut que l'erreur soit renvoyée durant le check de HaProxy pour que le changement de status soit pris en compte.

Bloquer toutes les erreurs 5xx

La ligne suivante, à ajouter dans la section backend, acceptera tout les serveurs sauf ceux renvoyant une erreur HTTP comprise entre 500 et 599.
Note : ce paramètre est fortement conseillé pour éliminer les nœuds qui plantent dans des grappes de cluster web.

http-check expect ! rstatus ^5

Par exemple :

backend serveur_web
        mode http
        balance roundrobin
        option forwardfor
        option httpchk HEAD /haproxycheck.txt HTTP/1.0
        cookie SERVERID insert indirect nocache
        http-check expect ! rstatus ^5
        server serverOne serverOne:80 cookie serverOne check
        server serverTwo serverTwo:80 cookie serverTwo check

Envoyer un commentaire

Suivre le flux des commentaires

Note : les commentaires appartiennent à ceux qui les ont postés. Nous n'en sommes pas responsables.