Répartissez la charge de votre site web avec HAProxy !


Technique

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 1
  • NOM_FRONT_2 : le nom du front 2
  • IP_FRONT_1 : l’adresse IP du front 1
  • IP_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 !

Laisser un commentaire