Visualiser une révision

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

voxdemonix : révision n°3 (01 septembre 2018 01:40:47)

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](https://en.wikipedia.org/wiki/List_of_HTTP_header_fields) 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](https://en.wikipedia.org/wiki/List_of_HTTP_status_codes#5xx_Server_errors)
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
```
Farm Link
=========
* [HaProxy - Documentatoin - Performing Health Checks](https://www.haproxy.com/documentation/aloha/10-0/traffic-management/lb-layer7/health-checks/)