Definition
Un load balancer (repartiteur de charge) est un composant reseau qui distribue le trafic entrant entre plusieurs serveurs pour optimiser les performances, maximiser la disponibilite et eviter la surcharge d'un serveur unique.
C'est un element essentiel de toute architecture web a haute disponibilite. Sans load balancer, un seul serveur recevrait tout le trafic, creant un point de defaillance unique (SPOF).
Pourquoi utiliser un load balancer ?
- Performance : repartit la charge pour des temps de reponse optimaux
- Disponibilite : si un serveur tombe, le trafic est redirige vers les autres
- Scalabilite : ajoutez des serveurs sans changer la configuration
- Securite : point unique pour le SSL termination, le rate limiting et le WAF
Types de load balancers
Layer 4 (Transport — TCP/UDP)
Opere au niveau TCP/UDP. Redirige en fonction de l'IP source/destination et du port. Tres rapide car ne lit pas le contenu des requetes.
Layer 7 (Application — HTTP/HTTPS)
Opere au niveau HTTP. Peut rediriger en fonction de l'URL, des headers, des cookies ou du contenu. Plus intelligent mais legèrement plus lent.
# Exemple Nginx comme load balancer L7
upstream backend {
server 10.0.0.1:3000 weight=3;
server 10.0.0.2:3000 weight=1;
server 10.0.0.3:3000 backup;
}
server {
listen 80;
location / {
proxy_pass http://backend;
}
}
Algorithmes de repartition
| Algorithme | Description | Cas d'usage |
|---|---|---|
| Round Robin | Chaque serveur a tour de role | Serveurs homogenes |
| Weighted Round Robin | Poids differents par serveur | Serveurs heterogenes |
| Least Connections | Serveur avec le moins de connexions actives | Requetes de duree variable |
| IP Hash | Meme IP client → meme serveur | Sessions sticky |
| Random | Serveur aleatoire | Simple, bonne distribution |
Health checks
Le load balancer verifie regulierement que chaque serveur est operationnel :
- TCP check : la connexion TCP reussit-elle ?
- HTTP check : le endpoint
/healthretourne-t-il un 200 ? - Custom check : verification metier specifique
Si un serveur echoue au health check, il est retire du pool automatiquement.
Solutions courantes
- Cloud : AWS ALB/NLB, GCP Load Balancer, Azure Load Balancer
- On-premise : Nginx, HAProxy, Traefik, Envoy
- DNS-based : Cloudflare, Route 53 (repartition geographique)