Load Balancer
De Travail-Ivan 2
Load Balancer
Introduction
Un Load Balancer est un composant essentiel dans une architecture Haute Disponibilité (HA) qui permet de distribuer la charge entre plusieurs serveurs.
Configuration HAProxy
Structure de base du fichier de configuration
Le fichier de configuration HAProxy (/etc/haproxy/haproxy.cfg) est divisé en plusieurs sections :
Frontend
frontend apache_front
bind *:80 # Écoute sur toutes les interfaces sur le port 80
default_backend apache_backend_servers # Définit le backend par défaut
option forwardfor # Active la transmission de l'IP client aux serveurs backend
Explications des commandes frontend :
- bind *:80 : Définit l'interface et le port d'écoute. "*" signifie toutes les interfaces
- default_backend : Spécifie quel groupe de serveurs (backend) va recevoir le trafic
- option forwardfor : Ajoute l'en-tête X-Forwarded-For pour préserver l'IP du client d'origine
Backend
backend apache_backend_servers
balance roundrobin # Algorithme de répartition de charge
server backend01 192.168.10.11:80 check # Définition du premier serveur
server backend02 192.168.10.12:80 check # Définition du deuxième serveur
Explications des commandes backend :
- balance roundrobin : Distribue les requêtes de manière égale entre les serveurs
- server [nom] [IP]:[port] check :
- nom : Nom unique pour identifier le serveur
- IP:port : Adresse IP et port du serveur backend
- check : Active la vérification de santé du serveur
Interface de statistiques
listen stats
bind 192.168.0.4:8181 # Port d'écoute pour l'interface de stats
stats enable # Active les statistiques
stats hide-version # Masque la version de HAProxy
stats refresh 30s # Rafraîchit les stats toutes les 30 secondes
stats show-node # Affiche le nom du nœud
stats auth admin:admin@123 # Définit les identifiants d'accès
stats uri /stats # Définit l'URL d'accès aux stats
Explications des commandes stats :
- bind : Définit l'adresse IP et le port pour accéder à l'interface de statistiques
- stats enable : Active l'interface de statistiques
- stats hide-version : Mesure de sécurité pour cacher la version de HAProxy
- stats refresh : Définit l'intervalle de rafraîchissement automatique
- stats auth : Configure l'authentification (format: utilisateur:mot_de_passe)
- stats uri : Définit le chemin URL pour accéder aux statistiques
Configuration Nginx
Configuration du Load Balancer Nginx
http {
upstream backend1 {
server 192.168.0.1; # Premier serveur backend
server 192.168.0.2; # Deuxième serveur backend
server 192.168.0.3; # Troisième serveur backend
}
server {
listen 80; # Port d'écoute
location / {
proxy_pass http://backend1; # Redirection vers le groupe de serveurs
}
}
}
Explications des commandes Nginx :
- upstream : Définit un groupe de serveurs
- server : Déclare chaque serveur backend du groupe
- server { } : Bloc de configuration du serveur virtuel
- listen : Définit le port d'écoute
- location : Configure le traitement des URL
- proxy_pass : Redirige les requêtes vers le groupe de serveurs upstream
Configuration des en-têtes HTTP
Apache avec module RemoteIP
RemoteIPHeader X-Forwarded-For RemoteIPInternalProxy 10.108.0.0/14
Explications des commandes Apache :
- RemoteIPHeader : Spécifie l'en-tête contenant l'IP client réelle
- RemoteIPInternalProxy : Définit la plage d'adresses IP de confiance (load balancers)
Bonnes pratiques de configuration
Sécurité
- Toujours définir des timeouts appropriés
- Limiter l'accès à l'interface de statistiques
- Utiliser HTTPS pour le trafic sensible
- Configurer des health checks pertinents
Haute disponibilité
- Configurer la redondance du Load Balancer en mode Actif/Passif
- Utiliser une IP Virtuelle (IPVS) pour la bascule transparente
- Mettre en place une surveillance des ressources système
Maintenance
- Documenter toutes les modifications de configuration
- Tester les configurations avant mise en production avec
haproxy -c -f /etc/haproxy/haproxy.cfg - Maintenir des sauvegardes des configurations fonctionnelles