Ce guide montre comment assurer la répartition de charge et la haute disponibilité avec HAProxy pour le trafic web. Il cible les administrateurs système, ingénieurs DevOps et développeurs responsables de la gestion du trafic et du réseau distribué.
Le déploiement couvre compilation, health checks automatiques, sticky sessions et protection contre les abus. Les points essentiels suivent pour préparer la configuration, aboutissant ensuite à A retenir :
A retenir :
- Réduction des points uniques de défaillance dans l’infrastructure réseau distribué
- Amélioration de la scalabilité horizontale et réactivité lors des pics de trafic web
- Centralisation du chiffrement TLS pour alléger les serveurs backend et simplifier les certificats
- Contrôles d’accès, rate limiting et health checks automatiques pour maintenir la performance réseau
Installer et compiler HAProxy pour la répartition de charge
Suite aux points précédents, commencez par compiler HAProxy depuis les sources officielles pour sécurité. La version recommandée est la branche stable auditée, compilée avec OpenSSL, PCRE2, Zlib et Lua.
Étape
Commande ou option
Rôle
Installer dépendances
sudo apt install build-essential libssl-dev libpcre2-dev zlib1g-dev liblua5.4-dev
Prépare compilation
Télécharger sources
curl -LO https://www.haproxy.org/download/3.2/src/haproxy-3.2.5.tar.gz
Obtenir code officiel
Compiler
make TARGET=linux-glibc USE_OPENSSL=1 USE_PCRE2=1 USE_ZLIB=1 USE_LUA=1 USE_PROMEX=1
Activer TLS et métriques
Installer
sudo make install PREFIX=/usr/local
Déployer binaire
Compilation sécurisée de HAProxy
Ce volet détaille les options de compilation nécessaires pour la sécurité et la performance. Selon HAProxy.org, utilisez USE_OPENSSL, USE_PCRE2, USE_ZLIB, USE_LUA et USE_PROMEX lors du make.
Options de compilation recommandées : Elles favorisent le chiffrement, les expressions régulières et l’export metrics.
- USE_OPENSSL=1
- USE_PCRE2=1
- USE_ZLIB=1
- USE_LUA=1
- USE_PROMEX=1
Vérification et déploiement initial
Après compilation, validez l’installation avec la commande /usr/local/sbin/haproxy -v et vérifiez la version. Activez le service systemd, testez la configuration et démarrez HAProxy en production.
« J’ai déployé HAProxy pour notre plateforme e-commerce et les incidents critiques ont nettement diminué après configuration. »
Alice D.
Configurer le routage L7, les ACLs et les health checks
Suite à l’installation, configurez les ACLs, les health checks et le routage L7 pour diriger le trafic web vers les backends appropriés. Ces règles permettent l’affinité, la sécurité et la scalabilité, en vue du durcissement TLS.
Routage basé sur ACLs et gestion des backends
Ce point présente l’usage des ACLs pour envoyer les requêtes vers les backends adaptés. Les exemples couvrent api, static, websocket et validation d’entête Host pour protéger le réseau informatique.
Exemples d’ACL utiles : Ces règles servent à router précisément selon l’URL, l’entête Host ou l’IP source.
- acl is_api path_beg /api
- acl is_static path_beg /static /images /css /js
- acl is_websocket hdr(Upgrade) -i WebSocket
- acl valid_host hdr(host) -i example.com www.example.com
Health checks HTTP et paramètres des serveurs
Ce sous-chapitre explique comment les health checks HTTP maintiennent l’état des backends et évitent les basculements erronés. Configurez http-check send, http-check expect et les paramètres inter, fall et rise pour fiabiliser la remontée d’état.
Algorithme
Comportement
Cas d’usage
roundrobin
Distribution cyclique des requêtes
Backends homogènes et stateless
leastconn
Choix du serveur avec moins de connexions
Requêtes longues ou WebSocket
source
Hash sur IP source pour affinité
Conserver session sans cookie
uri
Hash sur chemin URI pour cache distribué
Ressources statiques et caches
« En production, la page de stats nous a permis de détecter un backend défaillant en quelques minutes. »
Marc L.
Sécuriser HAProxy : TLS, rate limiting et en-têtes
Après avoir routé le trafic, durcissez TLS, activez le rate limiting et ajoutez en-têtes de sécurité pour atténuer les attaques. Ces mesures réduisent l’impact des bots et améliorent la performance réseau côté utilisateur.
Terminaison SSL centralisée et bonnes pratiques TLS
Ce volet recommande la terminaison SSL centralisée pour simplifier la gestion des certificats et alléger les backends. Selon ANSSI, appliquer TLS 1.2 minimum et suites modernes reste une bonne pratique en 2026.
Bonnes pratiques TLS : Appliquez des suites modernes, courbes sûres et renouvellement automatisé avec Let’s Encrypt ou équivalent.
- TLS 1.2 minimum et désactivation des versions obsolètes
- Suites modernes AES-GCM et ChaCha20 pour performance
- Courbes X25519, P-256, P-384 recommandées
- Centraliser certificats pour simplifier rotation et renouvellement
« L’équipe recommande HAProxy pour sa robustesse et sa flexibilité dans les environnements critiques. »
Sophie R.
Protection contre les abus, listes noires et monitoring
Ce point aborde rate limiting, listes noires IP et monitoring Prometheus pour gérer efficacement le trafic et prévenir les abus. Selon Let’s Encrypt, l’automatisation du renouvellement réduit les erreurs humaines et les fenêtres de vulnérabilité.
Commandes utiles : Conservez un ensemble de commandes pour valider, recharger et diagnostiquer HAProxy sans interruption.
- sudo haproxy -c -f /etc/haproxy/haproxy.cfg pour valider
- sudo systemctl reload haproxy pour recharger sans downtime
- echo « show stat » | sudo socat stdio /run/haproxy/admin.sock pour diagnostic
- sudo journalctl -u haproxy -f pour suivre les logs en temps réel
« Le point unique de terminaison TLS facilite les rotations de certificats et réduit la charge CPU backend. »
Olivier P.