HAProxy : Partie 1 : Installation, configuration, prise en main.

haproxy architecture exemple

Haproxy est une application gratuite permettant de faire du load-balancing, de la haute disponibilité ainsi que du proxying TCP & HTTP.

HAProxy est réputé pour être stable, très fiable, avec de bonnes performances grâce à sa maturité (douze ans d’existence).
L’intérêt d’utiliser HAProxy, plutôt qu’un des nombreux autres reverse proxy ( Nginx, Squid, LVS .. ) est qu’il apporte des fonctionnalités très avancées, comme le filtrage niveau 7 ( OSI ).

Dans cette première partie, nous allons voir comment installer, configurer et utiliser HAProxy comme load-balancer sur des pages statiques.
Dans une seconde partie, nous verrons comment déployer HAProxy avec un site dynamique ( PHP + MYSQL ).
Puis dans une troisième partie, nous verrons comment se servir de HAProxy pour se protéger contre les DDOS !

Pour la partie une, nous avons besoin :

– Un serveur pour HAProxy (que nous nommerons HAProxy), avec deux cartes réseau : une carte configurée en NAT (172.16.1.130), une seconde en Bridge (192.168.137.137). Ce serveur sera le FrontEnd.
– Deux serveurs Apache (que nous nommerons Apache1 et Apache2), possédant chacun une carte réseau ( 172.16.1.128 et 172.16.1.129 ). Ces serveurs seront les BackEnd.

Nos trois serveurs fonctionnent sous CentOs 6.

Nous allons commencer par créer une bête page index.html sur nos deux serveurs apache, avec un signe distinctif sur nos deux pages (afin de constater que le load-balancer fonctionne correctement).

Ensuite, nous allons installer HAProxy sur notre frontend,

Pour se faire, deux solutions, soit une installation à partir des sources, soit une installation avec le RPM HAProxy, je vais vous détailler les deux méthodes :

A partir des sources :

# cd /root
# wget http://haproxy.1wt.eu/download/1.4/src/haproxy-1.4.20.tar.gz
# tar -xvzf haproxy-1.4.20.tar.gz
# cd haproxy-1.4.20
# make TARGET=linux26 // TARGET=* sert pour optimiser HAProxy en fonction du kernel
# make install

Une fois l’installation terminée, nous créons le répertoire haproxy dans etc, et nous bougeons le fichier config dans ce dernier.

# mkdir /etc/haproxy
# cp /root/haproxy-1.4.20/examples/haproxy.cfg /etc/haproxy/haproxy.cfg

Personnellement, quand j’ai ouvert le haproxy.cfg, je me suis rendu compte qu’il était deprecated ( haproxy.cfg version 1.18 dans une archive 1.4 …. ).

Pour lancer notre haproxy, nous ferons alors de la manière suivante :

# /usr/sbin/haproxy -D -f /etc/haproxy/haproxy.cfg -p /var/run/haproxy.pid

A partir du RPM :

Nous allons installer le REPO EPEL :

# wget http://download.fedoraproject.org/pub/epel/6/i386/epel-release-6-5.noarch.rpm
# rpm – i epel-release-6-5.noarch.rpm
# yum install haproxy

A noter que la version EPEL est la 1.4.19 (quelques bugs) et que la dernière version est la 1.4.20, je vous conseil donc d’utiliser les sources pour être à jour.

Une fois notre HAProxy installé, nous allons faire quelques modifications dans notre fichier de config :

# vi /etc/haproxy/haproxy.conf

// Modification de la ligne 63, nous mettons l’IP de notre FrontEnd.
frontend  main 192.168.137.137:80

// Modification de la ligne 68, nous changeons le “app” pour un nom un peu plus équivoque : static_website
default_backend             static_website

// Modification des dernières lignes :

backend static_website
balance     roundrobin // utilise les serveurs un à un
server  Apache1 172.16.1.128:80 check
server  Apache2 172.16.1.129:80 check
#server  app3 127.0.0.1:5003 check
#server  app4 127.0.0.1:5004 check

Nous avons maintenant notre Load-Balancer prêt à être utilisé, initialisez Haproxy :

# /usr/sbin/haproxy -D -f /etc/haproxy/haproxy.cfg -p /var/run/haproxy.pid

Maintenant, accédez à partir de votre navigateur à l’ip d’HAProxy pour voir la page index.html d’Apache1 s’afficher, faites un refresh, vous verrez l’index.html d’Apache2.

Pour finir, nous allons mettre en place l’interface graphique disponible avec HAProxy, pour nous permettre de monitorer nos Apache :

# vi /etc/haproxy/haproxy.cfg
// Tout en bas, ajouter simplement :

stats       uri /stats // Endroit où les stats seront consultables
stats auth  pseudo:password // votre username : password

Vous n’avez plus qu’a redémarrer HAProxy et aller à l’addresse http://IP-HAPROXY/stats :

La première partie est maintenant terminée, la seconde ne va pas tarder à arriver.

About Alexandre Nogard

Check Also

Bash Scripting : Creation de vhosts automatisés avec Certificat Lets Encrypt

Bonjour à tous, Il y a quelques temps, j’avais posté un script bash permettant de …

Owncloud 9.X : Sécurisez votre serveur avec Fail2Ban sur Centos 7.X – Part3

Dans ce tuto, nous allons voir comment protéger Owncloud 9.X des brutes-forces sur les tentatives …

OpenVAS : Configuration & Utilisation sur CentOs 7 – Part 2

OpenVAS est installé sur notre CentOs 7, nous allons maintenant aborder la partie configuration et …

5 comments

  1. Merci pour votre article,
    Ca va m’être grandement utile dans ma société.

  2. hello,
    Merci pour ce super tuto, cela va bien me servir

  3. thank you very much , your tutorial is very interesting for me .

  4. Bonjour,

    il manque le tuto 3 ;) sur les DDOS ;)

    Merci, franchement, c’est clair propre et efficace ;) Je Bookmark

  5. Hello,

    Merci beaucoup pour cet article bien sympa, la compréhension est vraiment génial :)
    Vivement les prochains !

    Regards

Leave a Reply

Your email address will not be published. Required fields are marked *