Load Balancer
De Travail-Ivan 2
Load Balancer
Introduction
Un Load Balancer est un composant essentiel dans une architecture Haute Disponibilité (HA). Son rôle principal est de répartir la charge entre différents services actifs.
Niveaux de répartition
La répartition peut s'effectuer à différents niveaux du modèle OSI :
- Niveau 4 : Niveau TCP, répartition au niveau du port
- Niveau 7 : Répartition de charge applicative (principalement HTTP)
Types de Load Balancers
Load Balancer Matériel
Les load balancers peuvent se présenter sous forme d'équipements physiques dédiés.
Load Balancer Logiciel
Plusieurs solutions logicielles sont disponibles :
- HAProxy : La référence en logiciel libre
- Nginx : Spécialisé dans la partie HTTP
- Traefik : Utilisé dans l'univers des conteneurs
HAProxy
Présentation
HAProxy (http://www.haproxy.org/) est devenu une référence parmi les load balancers.
Fonctionnalités principales
- Load balancing Layer 4 (TCP) et Layer 7 (HTTP)
- Réécriture d'URL
- Limitation de débit
- Terminaison SSL/TLS
- Compression Gzip
- Vérification de santé
- Support HTTP/2
- Support API
Installation et Configuration
- Paquet :
haproxy - Fichier de configuration :
/etc/haproxy/haproxy.cfg
Exemple de configuration HAProxy
# Configuration du frontend
frontend apache_front
bind *:80
default_backend apache_backend_servers
option forwardfor
# Configuration du backend
backend apache_backend_servers
balance roundrobin
server backend01 192.168.10.11:80 check
server backend02 192.168.10.12:80 check
Interface de statistiques
listen stats
bind 192.168.0.4:8181
stats enable
stats hide-version
stats refresh 30s
stats show-node
stats auth admin:admin@123
stats uri /stats
Nginx comme Load Balancer
Configuration
Fichier de configuration : /etc/nginx/nginx.conf
Exemple de configuration Nginx
http {
upstream backend1 {
server 192.168.0.1;
server 192.168.0.2;
server 192.168.0.3;
}
server {
listen 80;
location / {
proxy_pass http://backend1;
}
}
}
Bonnes pratiques
Gestion des en-têtes HTTP
Pour garantir une traçabilité correcte des clients dans les logs :
Configuration HAProxy
Ajouter : option forwardfor
Configuration Apache
Configuration du module RemoteIP :
RemoteIPHeader X-Forwarded-For RemoteIPInternalProxy 10.108.0.0/14
Éviter le SPOF
- Mettre en place une redondance du Load Balancer (Actif/Passif)
- Utiliser une IP Virtuelle (IPVS) pour la bascule automatique