Skip to main content

Installer un serveur de Load Balancing - HAProxy

image-1607717025268.png

Introduction : 

Contexte : Le load balancing permet la tolérance de panne mais aussi la continuité de service lors une forte demande utilisateur. Concrètement, un serveur de load balancing ou en français, serveur de répartition de charge, redirige l'utilisateur vers plusieurs serveurs de même fonction. Un utilisateur pourra sans même s'en rendre compte consulter deux serveurs web entre deux pages d'un site. Ce mécanisme permet donc de traiter un nombre d'utilisateur bien plus important qu'un serveur seul permettrais. 
 
Schéma : 

image-1607722445805.png

Étape 1 - Prérequis

Conformément au schéma ci-dessus, pour réaliser l'installation d'HAProxy, vous aurez besoin d'au minimum, deux serveurs web. Pour comprendre correctement le load balancing, j'ai modifié la page d'accueil de chacun de ces sites web afin qu'ils affichent leurs noms. Notons qu'en production, ce serait le même site web qui serait stocké dans les serveurs web.

Serveur web 01 :
image-1607719992443.png
 
Serveur web 02 :
image-1607720011807.png

 

Étape 2 - Mise à jour du système et installation d'HAProxy

 

Premièrement nous allons mettre à jour notre serveur. Un système à jour est un système fiable !

apt-get update ; apt-get upgrade -y

En suite nous allons installer le paquet haproxy :

apt-get install haproxy -y

 

Étape 3 - Modification de la configuration d'HAProxy

 

Maintenant, modifions la configuration du paquet :

nano /etc/haproxy/haproxy.cfg

Nous laisserons la configuration par défaut et ajouterons à la fin du fichier de configuration les lignes suivantes :  

# FrontEND
frontend frontend-base
        # IP d'écoute du proxy.
        bind 172.31.64.100:80
        default_backend backend-base
        option forwardfor
# BackEND
backend backend-base
        # On utilise le mode Roundrobin
        balance roundrobin
        # On liste les serveurs de backend
        server  serveur-web-1   172.31.64.101:80 check
        server  serveur-web-2   172.31.64.102:80 check

Pour appliquer les modifications, il va falloir redémarrer le service haproxy. Faites la commandes ci dessous :

/etc/init.d/haproxy restart 

 

Étape 4 - Tests de la configuration d'HAProxy

Pour tester si la configuration fonctionne, nous allons utiliser un navigateur et consulter l'adresse IP du serveur HAPROXY. Celui ci écoute sur le port 80 (HTTP) et redirigera toutes nos requêtes vers l'un des deux serveurs du cluster.

 

Nous nous y rendons une première fois : 

image-1607720034246.png

Nous nous y rendons une seconde fois : 

image-1607720068441.png

Le load balancing fonctionne belle est bien, nous avons donc correctement installé HAProxy.

 

Étape 5 - Stress Test.

Un stress test est le fait de surcharger un serveur pour en connaitre ses limites. Nous allons donc utiliser une commande venant d'apache2. Cette commande permet de simuler un nombre très important de connexions sur un serveur Web.

Afin d'effectuer une comparaison fiable, nous allons utiliser des serveurs web ayant la même puissance à chaque fois.

 
1 - Schéma :

image-1607735739594.png

 
2 - Installation :

Pour installer apache2, il faudra exécuter les commandes suivantes sur votre machine de stress test :

apt-get install apache2 -y

Aucune configuration pour Apache2 n'est nécessaire.

 
3 - Stress d'un serveur web (seul) :

Nous allons donc procéder à la surcharge d'un de nos serveur web et c'est pourquoi, dans la commande suivante nous mettrons l'adresse IP du serveur web 01.

ab -n 100000000 -c 9999 172.31.64.101/
  • L'argument -n permet de spécifier le nombre total de requêtes à envoyer.
  • L'argument -c définie le nombre de requêtes à faire simultanément.
  • Pour ce qui est de l'adresse IP, n'oubliez pas le / à la fin sinon cela ne fonctionnera pas.

Résultat :

image-1607737904465.png

Cela signifie qu'au bout de 372 763 requêtes, le serveur web 01 ne peut plus tenir la charge.

 

4 - Stress test avec load balancing ( 2 machines ) :

C'est le cluster entier que nous allons surcharger, pour cela, nous avons simplement à renseigner l'adresse IP du serveur HAProxy.

ab -n 100000000 -c 9999 172.31.64.100/

Résultat : 

image-1607738431268.png

Cela signifie qu'au bout de  529 522 requêtes, le cluster ne peut plus tenir la charge.

 

5 - Conclusion :

Nous avons bel et bien installé une solution de load balancing permettant de réaliser une continuité de service.