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