Configuration – HAProxy sur Debian¶
1. Contexte : répartition de charge pour sportludique.fr¶
Afin d’améliorer la résilience et la performance de son site vitrine sportludique.fr, la DSI a choisi de mettre en place une infrastructure d’équilibrage de charge basée sur HAProxy. Ce répartiteur sera chargé de distribuer les requêtes web entrantes entre deux fermes de serveurs :
- Un cluster principal local (on-premise)
- Un cluster de secours activable si nécessaire
Cette mise en place répond aux besoins suivants :
- Répartition équitable du trafic HTTP/HTTPS (round-robin)
- Terminaison TLS unique pour simplifier la gestion des certificats
- Persistance de session utilisateur (via IP source)
- Supervision des serveurs backends avec détection automatique de panne
- Évolutivité par ajout ou retrait de serveurs sans coupure
2. Installation et configuration de HAProxy¶
2.1 Installation sur Debian¶
sudo apt update && sudo apt upgrade -y
sudo apt install haproxy -y
haproxy -v # Vérification de la version
2.2 Fichier /etc/haproxy/haproxy.cfg¶
a) Section global et defaults¶
global
log /dev/log local0
log /dev/log local1 notice
chroot /var/lib/haproxy
stats socket /run/haproxy/admin.sock mode 660 level admin
stats timeout 30s
user haproxy
group haproxy
daemon
ca-base /etc/ssl/certs
crt-base /etc/ssl/private
ssl-default-bind-ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:...
ssl-default-bind-ciphersuites TLS_AES_128_GCM_SHA256:TLS_AES_256_GCM_SHA384:...
ssl-default-bind-options ssl-min-ver TLSv1.2 no-tls-tickets
defaults
log global
mode http
option httplog
option dontlognull
timeout connect 5000
timeout client 50000
timeout server 50000
errorfile 400 /etc/haproxy/errors/400.http
errorfile 403 /etc/haproxy/errors/403.http
errorfile 408 /etc/haproxy/errors/408.http
errorfile 500 /etc/haproxy/errors/500.http
errorfile 502 /etc/haproxy/errors/502.http
errorfile 503 /etc/haproxy/errors/503.http
errorfile 504 /etc/haproxy/errors/504.http
b) Frontend HTTPS¶
frontend wwwtest
bind *:80
bind *:443 ssl crt /etc/ssl/tours.sportludique.fr/tours.sportludique.fr.pem
mode http
default_backend wwwtest_http_backend
c) Backend avec équilibre de charge¶
backend wwwtest_http_backend
mode http
balance roundrobin
option forwardfor
stick-table type ip size 100k expire 5m
stick on src
server srv-http1 192.168.37.110:80 check
server srv-http2 192.168.37.115:80 check
2.3 Certificats TLS¶
Concaténez le certificat et la clé privée dans un fichier .pem :
sudo mkdir -p /etc/ssl/tours.sportludique.fr
cat cert.crt privkey.key > /etc/ssl/tours.sportludique.fr/tours.sportludique.fr.pem
sudo chown root:root /etc/ssl/tours.sportludique.fr/tours.sportludique.fr.pem
sudo chmod 600 /etc/ssl/tours.sportludique.fr/tours.sportludique.fr.pem
2.4 Lancement et activation¶
sudo haproxy -c -f /etc/haproxy/haproxy.cfg # Vérification
sudo systemctl restart haproxy
sudo systemctl enable haproxy
2.5 Vérifications¶
sudo ss -tulpn | grep haproxy # Vérifier que les ports 80 et 443 sont ouverts
sudo tail -f /var/log/haproxy.log # Suivi des requêtes et erreurs
3. Résultat attendu¶
Le service sportludique.fr est désormais :
- Accessible en HTTP et HTTPS depuis LAN et Internet
- Sécurisé avec un certificat signé par l’AC STS Root R2
- Réparti entre plusieurs serveurs web de manière transparente
- Résilient en cas de panne d’un backend
- Capable de maintenir les sessions actives par IP
➡️ Étape suivante : 02 – Mise en place de VRRP avec Keepalived