HAProxy – Répartiteur de charge (Debian/Ubuntu)
Hello ! Nous allons voir comment mettre en place HAProxy qui nous permet de faire du load balancing (répartition de charge entre plusieurs serveurs WEB). Cette solution est très populaire dans le monde de l’open source. HAProxy est une solution fiable et pérenne pour votre infrastructure. Pour rendre utile ce mécanisme, il faudra mettre en place une solution de réplication (ex : gluster-fs) qui permet de fusionner des répertoires entre deux serveurs ou plus et donc de garantir l’intégrité des données.
Prérequis :
Apache2 doit être installé sur deb1 et deb2
Mes serveurs auront les paramètres IP suivants :
- Serveur WEB deb1.local (IP : 192.168.128.141/24)
- Serveur WEB deb2.local (IP : 192.168.128.142/24)
- Serveur haproxy.local (IP : 192.168.128.150/24)
Fixer le nom de domaine de vos 3 serveurs :
hostnamectl set-hostname deb1.local
hostnamectl set-hostname deb2.local
hostnamectl set-hostname haproxy.local
Modification du fichier /etc/hosts
nano /etc/hosts
# à effectuer sur les trois serveurs
192.168.128.141 deb1.local deb1
192.168.128.142 deb2.local deb2
192.168.128.150 haproxy.local haproxy
Redémarrez vos trois machines pour que les modifications s’appliquent définitivement.
Essayez de joindre les machines avec leurs DNS :
Depuis la machine haproxy : ping deb1 && ping deb2
Installation et configuration – Haproxy
Sur la machine qui va héberger la solution haproxy, tapez les commandes suivantes :
apt update
apt install haproxy
Fichier de configuration haproxy.cfg
Rajoutez à la fin du fichier haproxy.cfg les directives suivantes :
frontend http_front
bind *:80
stats uri /haproxy?stats
default_backend webservers
backend webservers
mode http
balance roundrobin
cookie LBN insert indirect nocache
option httpclose
option forwardfor
server deb1* 192.168.128.141:80 check inter 1s
server deb2* 192.168.128.142:80 check inter 1s
Modifiez les deux dernières lignes (IPs) et le(s) ports 80 en fonction de votre configuration
Une fois que vous avez effectué les modifications, enregistrez le fichier, puis redémarrez le service haproxy
# su -
service haproxy restart
service haproxy status
# ou
systemctl restart haproxy
systemctl status haproxy
Si vous n’obtenez pas d’erreur au redémarrage d’Haproxy, les étapes suivantes devraient bien se dérouler 🙂
Accédez à l’interface web de Haproxy, via un navigateur web :
http://iphaproxy/haproxy?stats
Vérification du fonctionnement de Haproxy
Les modifications des fichiers ci-dessous sont faites à titre d' »exemple afin de vérifier que le load balancing fonctionne réellement.
Ouvrez de nouveau un terminal SSH sur deb1 et deb2 , puis dirigez vous à la racine du serveur WEB (pour rappel :
cd /var/www/html/
Éditez le fichier de base d’apache 2 (“index.html”), sur les deux serveurs web, et modifiez le titre de la page (voir la partie en jaune ci-dessous)
nano index.html
Web server is running on 2
Puis exécutez la même action sur le serveur deb1 , en changeant légèrement l’intitulé.
Web server running on 1
La preuve en image
HAProxy, se charge de répartir la charge entre les deux serveurs. Un coup c’est web1 qui répond à la requête, une autrefois c’est web2. Actualiser la page quelques fois afin de voir le « balancement entre deb1 et deb2.
Voilà ce tutoriel est dès à présent terminé. Ci-dessous vous retrouvez un schéma représentant un scénario idéal dans la mise en place d’une solution de répartition de charge.
À noter que l’ajout d’un deuxième Haproxy, pour permettre le mode Active/Passive, sécuriserait complètement l’infrastructure ci-dessous.
Scénario idéal :
À bientôt 🙂
Brlndtech
En savoir plus sur Le Guide Du SecOps
Subscribe to get the latest posts sent to your email.