HAProxy est une application open source créée en 2000 par Willy Tarreau permettant de mettre en place de la haute disponibilité (load balancing) pour vos sites web.
HAProxy est réputée pour sa stabilité, sa fiabilité et ses performances en termes d’utilisation CPU et mémoire. Il est utilisé par des sites web à forte affluence tels que Tumblr, Twitter, Stack Overflow, Github, … (retrouvez la liste complète à cette adresse : https://haproxy.1wt.eu/they-use-it.html).
Installation
Sur un système Debian, l’installation est assez aisée. Il vous suffit d’exécuter la commande suivante :
apt-get install haproxy
Configuration
Une fois HAProxy installé, vous pouvez éditer le fichier de configuration
/etc/haproxy/haproxy.cfg.
L’exemple suivant vous présente une architecture avec deux frontaux en haute disponibilité.
global
log 127.0.0.1 local0
log 127.0.0.1 local1 notice
maxconn 4096
user haproxy
group haproxy
defaults
log global
mode http
option httplog
option dontlognull
retries 3
option redispatch
maxconn 2000
contimeout 5000
clitimeout 50000
srvtimeout 50000
listen zankh IP_LOAD_BALANCER:80
mode http
stats enable
stats auth USERNAME:PASSWORD
balance roundrobin
cookie SERVID prefix
option httpclose
option forwardfor
server NOM_FRONT_1 IP_FRONT_1:80 cookie A check
server NOM_FRONT_2 IP_FRONT_2:80 cookie B check
Les principaux éléments à modifier dans cette configuration sont :
IP_LOAD_BALANCER
: l’adresse IP du serveur où est installé HAProxy.USERNAME
: le nom d’utilisateur permettant d’accéder aux statistiques de HAProxy.PASSWORD
: le mot de passe permettant d’accéder aux statistiques de HAProxy.NOM_FRONT_1
: le nom du front 1NOM_FRONT_2
: le nom du front 2IP_FRONT_1
: l’adresse IP du front 1IP_FRONT_2
: l’adresse IP du front 2
Vous pouvez maintenant démarrer HAProxy via la commande suivante :
/etc/init.d/haproxy start
Vous pouvez consulter les statistiques du load balancer à l’adresse suivante et ainsi visualiser le bon fonctionnement :
https://IP_LOAD_BALANCER/haproxy?stats
Pour aller plus loin !
HAProxy a fait ses preuves depuis de nombreuses années ! Sa fiabilité et ses performances font de lui un atout majeur dans un cluster de serveurs.
Cet article présente uniquement une infime partie des possibilités de haute disponibilité. Il serait intéressant de coupler HAProxy avec Heartbeat qui permet de surveiller la disponibilité des programmes.
Avec ce type de systèmes, nous pourrions combiner de la haute disponibilité matériel ET logiciel et ainsi accroître les performances et la stabilité d’un site web !