Debian 10 : Créer un proxy load-balancer HAProxy HTTP

Debian 10 : Créer un proxy load-balancer HAProxy HTTP

10 novembre 2019 0 Par Mairien Anthony

Encore un article ! En forme le bougre ! Aujourd’hui nous allons rapidement voir ensemble comment installer HAProxy pour réaliser du load-balancing de plusieurs sites web Apache2.

Ces derniers temps, j’ai eut besoin de mettre en place un proxy pour réaliser du load-balancing comprenant 3-4 sites web classiques tournant sous Apache2, et étant donné que je ne l’avais encore jamais expérimenté avant, j’ai dû me dépatouiller là-dedans… et le moins qu’on puisse dire, c’est que les tutoriels en français parlant d’HAProxy ne sont pas légions (la plupart date d’il y a plusieurs années, et donc la config n’est pas forcément fonctionnelle, ou bien les autres tutos sont en anglais).

Me voilà donc ici : je vais vous expliquer rapidement comment installer un serveur HAProxy et réaliser du load-balancing de deux sites Apache2 en back-end. Alors, de prime abord tout ces termes ont l’air peut être compliqués, mais ne vous en faites pas, je vais vous résumer ça comme d’habitude 😉

1) Proxy, load-balancing, backend, frontend…

Tout d’abord, on va détailler chaque terme puis on verra ensuite pourquoi un load-balancer est utile et enfin pourquoi choisir HAProxy.

  • Proxy : je ne vais pas détailler ici car j’ai déjà fait un post qui en parle, juste ;
  • Load-balancing : répartition de charges en français, là c’est de suite plus parlant ! C’est un méchanisme permettant de distribuer la
    charge ;
  • Front-end : dans notre cas de figure, le back-end est composé des serveurs qui vont reçevoir les connexions en premier, typiquement notre ou nos load-balancer justement ;
  • Back-end : ce sont les serveurs qui vont reçevoir le trafic en second, typiquement les serveurs web ;

Un peu plus clair du coup ? Et donc, l’avantage d’avoir un load-balancer, c’est de justement faire du load-balancing, et oui ! Imaginez que vous avez un site à forte affluence, et que vous n’avez qu’un seul serveur… bonne channce car celui-ci risque de flancher assez vite ! Avec un load-balancer, celui-ci va récupérer tout le trafic et le dispatcher sur plusieurs serveurs web, où votre site sera hébergé. De cette manière, la charge est moins lourde.

Vient ensuite la question d’HAProx. Pourquoi lui ? Car c’est tout simplement le plus connu (rien de foufou ici). Pour reprendre un article de linuxfr.org :

HAProxy est une solution libre, fiable et très performante de répartition de charge de niveau 4 (TCP) et 7 (HTTP). Elle est particulièrement adaptée aux sites web fortement chargés qui nécessitent de la persistance ou du traitement au niveau 7.

La fiabilité est l’un, sinon le point fort d’HAProxy. Il est par exemple utilisé par des sociétés apparaissant au classement Fortune 500 pour servir des millions de pages chaque jour.

Cette fiabilité ne s’est pas faite au détriment des performances : HAProxy requiert peu de ressources, et son architecture évènementielle mono-processus lui permet facilement de gérer plusieurs milliers de connexions simultanées sur plusieurs relais sans effondrer le système.

Bien, désormais vu que tout est clair pour vous, un rapide schéma puis on s’attèle à l’installation (rapide et simple) de tout ça !

2) Installation des deux serveurs web Apache

Ici rien d’incroyable, il nous suffit de l’installer via un petit apt install apache et le tour est joué. Vous pouvez éventuellement modifier le fichier /var/www/html/index.html pour renseigner par exemple « SRV-01 / SRV-02 » selon le serveur et ainsi voir par la suite si le load-balancing est fonctionnel.

Dans mon cas, je vais simplement modifier mon fichier hosts pour y renseigner l’adresse IP de mon proxy, car tout ceci est fait dans mon réseau local :

On fait de même pour le serveur web-02.

3) Installation du load-balancer HAProxy

Ici, on installe haproxy via un classique apt install haproxy, puis on se rend dans /etc/haproxy/ pour modifier le fichier de config de base comme suit :

Donc concrètement, on rajoute simplement un bout de config en fin du fichier de config, et il ne vous reste plus qu’à lire les commentaires 😁

Une fois fait, un petit /etc/init.d/haproxy restart et on peut directement tester la chose !

Un petit coup de F5 :

Et bien voilà, vous avez installé et configuré votre premier load-balancer via HAProxy ! Alors bien entendu tout cela est très sommaire, nous n’avons pas vu comment rajouter certaines règles précises ou encore comment forwarder le trafic HTTPS, mais tout ceci sera l’objet d’un prochain article !