HAProxy est un puissant *load balancer* pour les protocoles TCP/HTTP/HTTPS. Il gère la répartition de charge et la tolérance de panne. Son principal auteur est Willy Tarreau, un développeur actif du noyau Linux. HAProxy est écrit en langage C, il est optimisé pour Linux, mais tourne également sous BSD. Des sites web mondiaux l'utilisent (Twitter, Github, Reddit, Airbnb, etc.)/
## Installation
@ -11,13 +13,36 @@ category: web HA
# apt install haproxy
~~~
Sous Debian Jessie, la version est la 1.5.8, si nécessaire une version plus récente est disponible via les backports.
## Configuration
La configuration se passe dans le fichier `haproxy.cfg` se trouvant dans `/etc/haproxy` sous Debian.
La configuration se passe dans le fichier `/etc/haproxy/haproxy.cfg` :
* Gestion de différents backend en fonction du domaine
* Association d'un serveur à un utilisateur à l'aide d'un cookie (« sticky session »)
### Exemple avec plusieurs backends et du « sticky session »
~~~
global
@ -135,6 +148,81 @@ backend domain2
server web02 192.0.2.2:80 cookie web02 check
~~~
### Exemple en mode TCP
~~~
listen memcached 127.0.0.1:11211
option tcp-check
server nosql00 192.0.2.3:11211 check
server nosql01 192.0.2.4:11211 check backup
~~~
### Exemple pour MySQL
~~~
listen mysql 127.0.0.1:3306
option httpchk
server sql00 192.0.2.1:3306 check port 8306
server sql01 192.0.2.2:3306 check port 8306 backup
~~~
On note l'option **httpchk** qui va permettre de faire un check en HTTP et vérifier des conditions avancées (réplication OK, etc.) grâce à différents scripts (inspirés de ce [vieux blog post](http://sysbible.org/2008/12/04/having-haproxy-check-mysql-status-through-a-xinetd-script/)).
Pour mettre en place une authentification HTTP basique au niveau d'HAProxy, définir dans la section globale une liste d'utilisateur, soit avec un mot de passe en clair soit avec un mot de passe chiffré :