1. Optimisation des Performances #
Assurer que HAProxy utilise au mieux les ressources disponibles pour traiter le trafic.
Paramètres globaux et réutilisation #
Pour tirer le meilleur parti de HAProxy, certains paramètres globaux sont indispensables pour limiter la charge sur les backends et assurer la résilience réseau.
- Maxconn : Définit la limite globale de connexions (ex: 10 000).
Avantage : Protège le système contre l'épuisement de la RAM et des descripteurs de fichiers.
Risque : Si la valeur est trop basse, HAProxy rejettera des clients légitimes lors des pics de trafic. - Keep-alive : Activez
option http-keep-alive.
Avantage : Réduit la latence en réutilisant les connexions TCP existantes (évite le 3-way handshake répétitif).
Risque : Peut maintenir trop de connexions ouvertes sur des serveurs backend limités si le timeout est trop long. - Retries & Redispatch :
Avantage : Améliore la disponibilité perçue par l'utilisateur. Si un serveur tombe pile au moment de la requête, HAProxy réessaie sur un autre.
Risque : Peut aggraver la surcharge d'un cluster si les serveurs tombent à cause d'une saturation (effet cascade).
global
maxconn 10000
log stdout format raw local0
defaults
option http-keep-alive
retries 3
option redispatch
Optimisation des Timeouts #
Une erreur fréquente est de conserver les valeurs par défaut. Il faut définir des timeouts explicites.
- Standards : 5s pour la connexion, 30s pour le client et le serveur.
Avantage : Libère rapidement les ressources bloquées par des clients ou des serveurs léthargiques.
Risque : Un timeout serveur trop court coupera des transferts de fichiers volumineux ou des exports longs. - Protection Slowloris : Gardez un
timeout http-requestcourt (5s).
Avantage : Empêche un attaquant de saturer les connexions en envoyant les headers très lentement.
defaults
timeout connect 5s
timeout client 30s
timeout server 30s
backend slow_api
timeout server 2m
Choisir le bon algorithme #
Le choix de l'algorithme impacte directement l'utilisation de vos ressources et la qualité de l'expérience utilisateur. Pour approfondir les mécanismes théoriques, consultez notre article : Le Load Balancing : Principes, Algorithmes et Cas d'usage.
- Round Robin :
Avantage : Simplicité, équité parfaite si les requêtes sont homogènes.
Risque : Inefficace si certains serveurs sont plus puissants que d'autres ou si certaines requêtes sont beaucoup plus lourdes. - Least Connections :
Avantage : Algorithme le plus intelligent pour l'APM ; il évite d'envoyer du trafic vers un serveur déjà en train de peiner.
Risque : Moins performant sur des flux très courts car le calcul du nombre de connexions ajoute un léger overhead. - Source Hash :
Avantage : Persistance sans injecter de cookies.
Risque : Déséquilibre si de nombreux utilisateurs sortent derrière un même proxy/NAT d'entreprise (une seule IP pour des milliers de clients).
2. Sécurité et Durcissement (Hardening) #
Protéger vos applications contre les menaces courantes via HAProxy.
Gestion du TLS/SSL #
Le chiffrement TLS est fondamental pour la sécurité des communications. HAProxy permet de centraliser la terminaison SSL.
- HTTP/2 via ALPN :
Avantage : Accélère le chargement des pages via le multiplexage.
Risque : Consomme un peu plus de CPU sur HAProxy pour la gestion des flux. - HSTS :
Avantage : Empêche les attaques de downgrade SSL (Man-in-the-Middle).
Risque : Si vous perdez vos certificats ou souhaitez repasser en HTTP, les navigateurs bloqueront l'accès jusqu'à expiration du max-age (souvent 1 an).
Désactivation des protocoles obsolètes #
Pour protéger vos flux contre les vulnérabilités protocolaires (POODLE, BEAST), il est impératif de limiter les protocoles acceptés.
- TLS 1.2 / 1.3 uniquement :
Avantage : Niveau de sécurité maximal conforme aux standards PCI-DSS / RGPD.
Risque : Incompatibilité avec de très vieux clients (vieux terminaux de paiement, vieux navigateurs Android/IE).
global
ssl-default-bind-options no-sslv3 no-tlsv10 no-tlsv11
Protection contre les Attaques (DDoS, Slowloris) #
HAProxy peut servir de première ligne de défense contre les attaques de type DDoS ou Slowloris via des stick-tables.
- Rate Limiting :
Avantage : Bloque automatiquement les IP qui saturent le service avant qu'elles n'atteignent vos serveurs.
Risque : Risque de faux positifs (ex: une école ou une entreprise sortant avec une seule IP publique sera bloquée si trop d'utilisateurs naviguent simultanément).
Bonnes pratiques WAF (Web Application Firewall) #
HAProxy peut inspecter le contenu des requêtes pour bloquer les tentatives d'injection SQL ou XSS.
- Filtrage de méthodes :
Avantage : Réduit la surface d'attaque en interdisant des méthodes commePUTouDELETEsi elles ne sont pas utilisées.
Risque : Peut casser certaines fonctionnalités d'API modernes si la configuration n'est pas mise à jour. - Inspection de payload :
Avantage : Bloque les attaques connues au niveau de la couche 7.
Risque : Impact significatif sur le CPU si les règles d'inspection (Regex) sont trop complexes ou nombreuses.
Bonnes pratiques ACL #
Les ACL sont le moteur de décision. Une gestion rigoureuse évite les erreurs de routage.
- Nomenclature :
Avantage : Facilite la lecture des logs et le troubleshooting.
Risque : Des noms d'ACL flous (ex:acl test) rendent la configuration illisible et dangereuse. - Externalisation (Maps) :
Avantage : Permet de mettre à jour des listes (ex: domaines autorisés) sans modifier le fichier principal et parfois sans rechargement via la Runtime API.
Risque : Nécessite une gestion rigoureuse des fichiers externes pour éviter les fichiers manquants au démarrage.
3. Haute Disponibilité et Résilience #
Assurer la continuité de service et la robustesse de votre infrastructure.
Configuration des Health Checks #
Les health checks évitent d'envoyer des clients vers un serveur 'zombie' (port ouvert mais application crashée).
- Check Applicatif (HTTP) :
Avantage : Garantit que l'application répond réellement (ex: base de données connectée).
Risque : Si l'endpoint de santé est trop complexe, le check lui-même peut ralentir le backend (évitez les calculs lourds dans/health).
backend app_servers
option httpchk GET /health
http-check expect status 200
server s1 10.0.0.1:80 check inter 2s fall 3 rise 2
Gestion des Serveurs de Backup et Maintenance #
Prévoyez toujours une issue de secours.
- Serveur de Backup :
Avantage : Évite la page d'erreur 503 totale. Peut servir à afficher un site statique 'dégradé'.
Risque : Si le backup n'est jamais testé, il peut échouer au moment où on en a besoin. - Page de Maintenance :
Avantage : Communication propre vers les utilisateurs lors d'incidents majeurs.
Risque : Si elle est mal configurée, elle peut empêcher les robots d'indexation (SEO) de comprendre que le site reviendra.
4. Organisation et Modularité #
Structurer sa configuration pour faciliter l'automatisation et la maintenance.
Séparation des blocs et fichiers multiples #
Dans une infrastructure complexe, avoir un seul fichier de 3000 lignes est une mauvaise pratique majeure.
- Séparation logique : Les sections Global et Defaults doivent être isolées du routage métier.
- Inclusions : Utilisez des dossiers (ex:
conf.d/) pour charger vos backends par application.
Avantage : Permet de déployer une nouvelle application (nouveau fichier) via CI/CD sans risquer de corrompre les ACL d'un autre service.
Risque : HAProxy charge les fichiers par ordre alphabétique. L'ordre Global > Defaults > Frontend > Backend doit être respecté.
# Lancer HAProxy en chargeant un répertoire
haproxy -f /etc/haproxy/haproxy.cfg -f /etc/haproxy/conf.d/5. Maintenance Opérationnelle et Haute Disponibilité #
Gérer les mises à jour et éliminer les points de défaillance uniques (SPOF).
Reload à chaud (Zero Downtime) #
Pour appliquer une modification sans déconnecter les utilisateurs, il ne faut jamais faire un restart du service. Vous devez faire un reload:
systemctl reload haproxy ou dans le monde Docker par exemple : sudo docker compose kill -s HUP haproxy- Master-Worker Mode : Utilisez le mode moderne (standard sous Systemd) qui permet de transférer les sockets d'écoute aux nouveaux processus.
- Avantage : Les sessions longues (WebSockets, transferts) se terminent normalement sur l'ancien processus pendant que le nouveau prend les nouveaux appels.
Risque : En cas d'erreur de syntaxe, le reload échoue. Toujours tester avant :haproxy -c -f /etc/haproxy/haproxy.cfg.
Haute Disponibilité Réseau (Keepalived) #
Si HAProxy tombe, votre application est injoignable. La solution est de mettre en place un cluster HAProxy Redondant.
- VIP (Virtual IP) : Une adresse IP flottante est gérée par Keepalived via le protocole VRRP.
- Fonctionnement : Si le HAProxy 'Master' ne répond plus, la VIP bascule instantanément sur le 'Backup'.
Avantage : Élimine le SPOF matériel ou logiciel.
Risque : Le 'Split-Brain' (les deux nœuds croient être Master) peut arriver si le lien réseau entre les deux est instable, provoquant des conflits d'IP.
Logging et Monitoring #
Utilisez des logs détaillés pour le debugging applicatif.
frontend http_front
# Capture le Host et le User-Agent pour l'analyse
capture request header Host len 64
capture request header User-Agent len 128
Mon suivi
Connectez-vous pour suivre votre progression et prendre des notes. Se connecter
💬 Questions sur cette leçon
Aucune question pour l'instant : soyez le premier à demander de l'aide ou à partager votre configuration.
Glossaire de la formation
ACL (Access Control List)
Liste de contrôle d'accès définissant les permissions accordées sur des ressources. Dans HAProxy, les ACL sont des conditions flexibles permettant de ...
Backend
Section de la configuration HAProxy définissant un pool de serveurs cibles vers lesquels le trafic est redirigé. C'est ici que l'on configure l'algori...
Frontend
Section de la configuration HAProxy qui définit comment les requêtes sont reçues du côté client (adresse IP, port, certificats SSL) avant d'être envoy...
GSLB (Global Server Load Balancing)
Technique de répartition de charge à l'échelle mondiale, utilisant généralement le DNS pour diriger les utilisateurs vers le datacenter le plus proche...
HAProxy
Logiciel de load balancing et de proxying haute performance pour TCP et HTTP. HAProxy est le standard de l'industrie pour la gestion de trafic à très ...
Health Check
Mécanisme automatisé permettant au load balancer de tester périodiquement la disponibilité des serveurs afin d'exclure temporairement ceux qui sont en...
Load Balancing
Dispositif qui distribue le trafic applicatif sur un ensemble de serveurs afin d'optimiser l'usage des ressources, de minimiser les temps de réponse e...
SSL Offloading
Processus consistant à déléguer le déchiffrement du trafic HTTPS au load balancer pour libérer de la puissance CPU sur les serveurs d'application.
Stickiness
Mécanisme garantissant qu'un utilisateur est systématiquement redirigé vers le même serveur backend durant toute sa session, indispensable pour les ap...
Slowloris
Type d'attaque par déni de service (DoS) qui consiste à ouvrir de nombreuses connexions HTTP et à les maintenir ouvertes le plus longtemps possible en...
DoS / DDoS
Attaque visant à rendre un service indisponible en submergeant le serveur ou le réseau de trafic. On parle de DDoS (Distributed Denial of Service) lor...
SSL / TLS
Protocoles de sécurisation des échanges sur internet. TLS (Transport Layer Security) est le successeur moderne de SSL (Secure Sockets Layer). Ils perm...
Articles recommandés
Nouveautés HAProxy : OpenTelemetry, JWT Natif, et Optimisations de Performance
Explorez les dernières innovations de HAProxy : prise en charge native d'OpenTelemetry pour l'obs...
HAProxy dans Kubernetes : L'Ingress Controller Haute Performance
Découvrez en profondeur l'intégration de HAProxy dans Kubernetes. Architecture Direct-to-Pod, opt...
HAProxy comme Ingress Controller Kubernetes : Le Guide de Production
Découvrez comment utiliser HAProxy comme Ingress Controller dans Kubernetes. Architecture Direct-...
Anatomie de la configuration HAProxy, Clustering et Haute Disponibilité
Comprendre la structure d'un fichier haproxy.cfg : sections global, defaults, frontend (haute per...
Le Load Balancing : Principes, Algorithmes et Cas d'usage
Découvrez le fonctionnement de la répartition de charge (Load Balancing), son rôle dans la haute ...
Maîtriser les ACLs dans HAProxy : Le Guide Complet
Guide complet sur les ACLs HAProxy : apprenez à configurer le routage intelligent, le contrôle d'...
Maîtriser les ACLs dans HAProxy
Guide complet sur les ACLs HAProxy : apprenez à configurer le routage intelligent, le contrôle d'...
HAProxy : Guide détaillé des directives de configuration
Une exploration complète des directives essentielles de HAProxy : de bind à http-check, apprenez ...
Visualiser votre infrastructure avec HAProxy Topology Visualizer
Apprenez à utiliser HAProxy Topology Visualizer pour transformer vos fichiers haproxy.cfg complex...