Mise en place d’un serveur Haproxy

I. Présentation

Un serveur Haproxy a pour fonction première le Load-Balancing (répartition des charges) entre plusieurs serveurs web. Ainsi, en ne joignant qu’une seule IP (celle du serveur Haproxy) nous tomberont sur des serveurs web différents mais à contenu identique. Le but est donc de répartir les charges d’un seul serveur web sur deux ou plusieurs autres de façon transparente pour l’utilisateur.

II. Préparation au déploiement des serveurs web

Nous utiliserons donc trois machines (c’est le minimum) :

  • un serveur haproxy et deux serveurs web sur lesquels nous répartirons les charges
  • Sur les deux serveurs web, il est important d’installer au minimum apache2 (service web) puis éventuellement php5.
apt-get install apache2 php5

Isolation des serveurs web et routage par Haproxy :

Haproxy1

Le serveur Haproxy doit faire office de routeur entre le réseau des serveurs web et le réseau extérieur. Les serveurs web ne doivent pas être joignables depuis l’intérieur du réseau local «normal» et le serveur Haproxy doit avoir deux cartes réseau.

Nous configurerons donc nos serveurs web et notre serveur Haproxy en suivant le schéma ce dessus. Les routes étant des routes directes, il n’y a rien à ajouter. (Commande Ip route) pour voir les routes présentes. Bien sur, votre serveur Haproxy doit avoir deux interfaces, une en 172.19.0.0 et une en 192.168.0.0 (en suivant le schéma IP du plan ci-dessus).

III. Mise en place de l’équilibrage des charges grâce au HaProxy

hostname haproxy # On change le nom de la machine haproxy
vim /etc/hosts # Pensez aussi à changer son nom dans /etc/hosts
apt-get update
apt-get install haproxy

pour qu’HaProxy soit considéré comme un service, à part entière :

vim /etc/default/haproxy

Passez le paramètre ENABLED à 1. Nous pouvons maintenant voir que le service répond en tant que tel.

service haproxy status
service haproxy start

Nous allons tout d’abord copier le fichier de configuration existant par sécurité.

cd /etc/haproxy
cp haproxy.cfg haproxy.cfg.bak

Nous allons maintenant mettre en place un fichier de configuration basique afin de jouer sur nos deux serveurs web. Pensez à changer leur nom de machines aussi (par exemple srvweb1 et srvweb2).

vim /etc/Haproxy/Haproxy.cfg
# On précise l’interface extérieure du serveur (la ou il va écouter)
listen haproxy 172.19.2.100:80
# Nous travaillons sur le flux http
mode http
# Choix du mode de répartition des charges
balance roundrobin
# On ferme la connexion après la réponse au client
option httpclose
# On vérifie si le serveur est toujours en fonction option
httpchk HEAD /index.html HTTP/1.0
# Délais de réponse client - serveur
contimeout 5000
clitimeout 50000
srvtimeout 50000
# Définition des serveurs sur lesquels nous allons emmener les clients-serveur
srvweb1 192.168.0.1:80 check server srvweb2 192.168.0.2:80 check

Une autre réparation simple des charges existe, le "leastconn" ou le serveur ayant eu le moins de connexion répondra aux requêtes en premier. L’utilisateur pourra alors joindre les serveurs en entrant l’IP d’HaProxy, celui-ci redirigera automatiquement et de manière équilibré chaque requêtes sur les deux serveurs

IV. Nécessité d'une connexion durable client-serveur

Si un utilisateur envoie une requête à un serveur (comme des données qui seront traitées en PHP) et que le serveur doit lui répondre. L’utilisateur a des chances d’être redirigé vers l’autre serveur web s’il recharge la page. Pour répondre à ce problème, nous pouvons envoyer un cookie à l’utilisateur, selon le cookie que l’utilisateur aura sur son poste, il sera transféré sur tel ou tel serveur et pourra alors maintenir des échanges durables avec celui-ci

Ajout des lignes :

Haproxy2

Vérification de la présence des cookies et de leurs actions sur un navigateur firefox (Option > Vie privée > Affichage des cookies)

V. Consultation des logs et stats de l’équilibrage des charges des serveurs web

Il est possible de voir la répartition des charges des serveurs grâce à l’interface web d’HaProxy. Ainsi, nous vérifions son bon fonctionnement et son efficacité. La mise en place de ces logs passe par une modification du fichier de configuration.

Haproxy3

L’interface d’information générale d’HaProxy nous donne diverses informations sur le fonctionnement des différents serveurs web et de l’équilibrage des charges

Pour consulter ces informations, il faut entrer l’IP du HaProxy suivi de /stats/.

Partagez cet article Partager sur Twitter Partager sur Facebook Partager sur Linkedin Partager sur Google+ Envoyer par mail

Mickael Dorigny

Co-fondateur d'IT-Connect.fr. Auditeur/Pentester chez Orange Cyberdéfense.

Nombre de posts de cet auteur : 527.Voir tous les posts

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.