Project Oxygen & Ideo-LabIDEO LAB Dashboard 2026

⚖️ Load Balancer (Équilibrage) – HA, L4/L7 & Algorithmes

Guide complet IDEO-Lab sur la répartition de charge, la haute disponibilité et le reverse proxy.

1.1

Concept & Objectifs

Définition, Haute Disponibilité (HA) & Scalabilité.

Load Balancer HA Scalabilité
1.2

Terminologie Clé

VIP (IP Virtuelle), Pool (Ferme), Membres (Nœuds).

VIP Pool Member
1.3

Type : L4 (Network)

Couche 4 (TCP/UDP). Rapide. (ex: NLB, HAProxy TCP).

Couche 4 TCP/UDP
2.1

Type : L7 (Application)

Couche 7 (HTTP/S). "Intelligent" (Routage URL, Headers).

Couche 7 HTTP ALB
2.2

Algo : Round Robin

Simple (1-2-3-1-2-3). Weighted (Pondéré).

Round Robin Weighted
2.3

Algo : Least Connections

Le plus "juste". Envoie au serveur le moins chargé.

Least Connections Intelligent
3.1

Health Checks (Sondes)

Actif (Ping, TCP, HTTP) vs Passif (Erreurs 5xx).

Health Check Probe
3.2

Session Persistence

"Sticky Sessions" (IP Hash, Cookie Injection).

Sticky Cookie IP Hash
3.3

SSL Offloading

Terminaison SSL sur le LB (HTTPS -> HTTP).

SSL Offloading TLS
4.1

Type : Hardware (Appliance)

ADC (F5 BIG-IP, Citrix NetScaler). Très performant.

F5 Citrix ADC
4.2

Type : Software (Nginx)

upstream, proxy_pass. Excellent L7 (Reverse Proxy).

Nginx Software
4.3

Type : Software (HAProxy)

backend, server. Excellent L4/L7. Très rapide.

HAProxy Software
5.1

Type : Cloud (AWS, GCP)

Managé. AWS (NLB, ALB), GCP, Azure LB.

Cloud AWS ALB/NLB
5.2

HA : Le Problème (SPOF)

Le LB est un Point de Défaillance Unique (SPOF).

HA SPOF Redondance
5.3

HA : Solution (VRRP)

VRRP / CARP / HSRP. Actif/Passif, IP Flottante.

VRRP IP Flottante
6.1

Fonction : WAF

Web Application Firewall (Sécurité L7, OWASP).

WAF Sécurité
6.2

Fonction : Caching

Mise en cache (Reverse Proxy) de contenu statique.

Caching Varnish
6.3

Cheat-sheet

Résumé L4 vs L7 & Algorithmes.

Checklist Résumé
1.1 Concept & Objectifs
Définition (Répartiteur de Charge)

Un Load Balancer (LB), ou "Répartiteur de Charge", est un appareil (matériel ou logiciel) qui agit comme un Reverse Proxy (un "contrôleur aérien" pour le trafic entrant).

Il se place en "façade" d'un groupe de serveurs (une "ferme") et distribue les requêtes des clients (ex: trafic web) entre ces serveurs back-end, en suivant un algorithme spécifique.

[ Clients (Internet) ]
         │
         │ (Trafic vers www.ideolab.com)
         ▼
[ LOAD BALANCER (VIP) ]
   (IP Publique)
   │      │      │
   ├──────┼──────┤
   ▼      ▼      ▼
[ Srv 1] [ Srv 2] [ Srv 3]
(Pool de Serveurs Back-end)
Les Deux Objectifs Principaux
ObjectifDescription
Haute Disponibilité (HA) / RedondanceSi [Srv 1] tombe en panne (ex: crash, maintenance), le LB (via ses Health Checks) le détecte et arrête automatiquement de lui envoyer du trafic. Il distribue 100% du trafic sur [Srv 2] et [Srv 3].
Résultat : Zéro interruption de service (Downtime) pour l'utilisateur.
Scalabilité (Horizontale)Si le trafic augmente (pic de Noël), au lieu de remplacer [Srv 1] par un *plus gros* serveur (Scalabilité Verticale, coûteuse), on ajoute simplement [Srv 4] et [Srv 5] au pool.
Résultat : La charge est répartie, la performance est maintenue.
1.2 Terminologie Clé

Le jargon du Load Balancing :

TermeDescriptionExemple
VIP (Virtual IP)L'adresse IP unique (l'IP "virtuelle") du Load Balancer. C'est l'IP que le client (DNS) cible.80.1.2.3
Pool / Farm / BackendLe groupe de serveurs "réels" (back-end) qui font le travail."Pool Web", "Pool API"
Member / Node (Nœud)Un serveur individuel "réel" à l'intérieur du pool.192.168.1.101
Health Check (Sonde)Le mécanisme (Ping, TCP, HTTP) que le LB utilise pour vérifier si un Membre est "UP" ou "DOWN".GET /healthz
1.3 Type : L4 (Network) Load Balancer

Un LB de Couche 4 (Transport) opère au niveau TCP / UDP. Il est "rapide et stupide".

Fonctionnement (DNAT)

Il ne lit pas le contenu de la requête (ex: HTTP). Il regarde uniquement les en-têtes L3/L4 (IP Source, Port Source, IP Dest, Port Dest).

Il ne termine pas la connexion. Il se contente de faire du DNAT (Destination NAT) : il réécrit l'IP/Port de destination (le VIP) avec l'IP/Port d'un serveur réel (Membre) et "transmet" (forward) le paquet.

Client -> (Dest: VIP:80) -> [LB L4] -> (Dest: SRV1:80) -> [Serveur 1]
Avantages / Inconvénients
  • (+) Très Haute Performance : Latence quasi-nulle (souvent géré en hardware/kernel).
  • (+) Agnostique : Peut équilibrer n'importe quel protocole TCP/UDP (MySQL, SMTP, RDP...).
  • (-) Non-Intelligent : Ne peut pas router basé sur l'URL (/api), les en-têtes, ou les cookies.
  • (-) Problème SSL : Ne peut pas faire de SSL Offloading (car il ne lit pas le L7).

Exemples : AWS NLB, HAProxy (mode tcp), Nginx (stream module).

2.1 Type : L7 (Application) Load Balancer

Un LB de Couche 7 (Application) opère au niveau Applicatif (ex: HTTP, HTTPS, gRPC). Il est "intelligent et plus lent".

Fonctionnement (Full Proxy)

C'est un proxy complet. Il termine la connexion TCP du client, lit la requête L7 (HTTP), prend une décision de routage, puis ouvre une nouvelle connexion TCP vers le serveur back-end choisi.

[Client] <--- (Connexion 1) ---> [LB L7] <--- (Connexion 2) ---> [Serveur 1]
Avantages / Inconvénients
  • (+) Routage Intelligent : Peut prendre des décisions basées sur :
    • Path (Chemin) : /images/* -> Pool-Images, /api/* -> Pool-API.
    • Host (Hôte) : a.com -> Pool-A, b.com -> Pool-B.
    • Header/Cookie : User-Agent: Mobile -> Pool-Mobile.
  • (+) Fonctions Avancées : Peut faire du SSL Offloading (voir 3.3) et du Caching.
  • (-) Plus Lent (Overhead) : Terminer TCP et parser HTTP consomme plus de CPU que le L4.
  • (-) Limité : Ne fonctionne que pour les protocoles qu'il comprend (HTTP, gRPC...).

Exemples : AWS ALB, Nginx (http module), HAProxy (mode http), F5.

2.2 Algorithme : Round Robin
Round Robin (Tourniquet)

C'est l'algorithme le plus simple et souvent celui par défaut.

Le LB envoie chaque nouvelle requête au serveur suivant dans la liste, puis revient au début.

Pool : [Srv A], [Srv B], [Srv C]

Requête 1 -> Srv A
Requête 2 -> Srv B
Requête 3 -> Srv C
Requête 4 -> Srv A
Requête 5 -> Srv B
...
  • Avantage : Extrêmement simple, prévisible.
  • Inconvénient : "Injuste" (Unfair). Si Srv A est "bloqué" par un gros upload (requête 1), il recevra quand même la requête 4, alors que Srv B et C sont peut-être libres.
Weighted Round Robin (Pondéré)

Une variante qui permet d'assigner un "poids" (weight) à chaque serveur, pour gérer un parc hétérogène.

Pool :
- Srv A (Machine puissante) : weight=5
- Srv B (Petite VM)         : weight=1

Résultat : Le LB enverra 5 requêtes à Srv A pour chaque 1 requête envoyée à Srv B.

2.3 Algorithmes : Least Connections & IP Hash
Least Connections (Moins de Connexions)

L'algorithme "intelligent" le plus courant. Le LB maintient un compteur du nombre de connexions actives pour chaque serveur du pool.

Il envoie toujours la nouvelle requête au serveur qui a le moins de connexions actives.

État Actuel :
- Srv A (rapide) : 10 connexions
- Srv B (rapide) : 11 connexions
- Srv C (lent)   : 25 connexions (bloqué sur un gros fichier)

Nouvelle Requête -> Srv A

Avantage : Distribution de charge la plus équitable. Tient compte de la puissance réelle et de la charge des serveurs (un serveur lent aura naturellement plus de connexions actives).

IP Hash (Source IP Hash)

C'est un algorithme utilisé principalement pour la persistance de session (sticky).

Le LB calcule un "hash" (une empreinte) de l'adresse IP source du client. Le résultat de ce calcul désigne toujours le même serveur back-end.

hash(IP 1.2.3.4) -> Srv B
hash(IP 5.6.7.8) -> Srv A

Avantage : Garantit que le client 1.2.3.4 retourne toujours sur Srv B.

Inconvénient : Injuste. Si 1000 clients sont derrière un seul NAT (ex: un proxy d'entreprise 1.2.3.4), ils iront tous sur Srv B, saturant ce serveur.

3.1 Health Checks (Sondes de Santé)

C'est le mécanisme vital qui permet au LB d'assurer la Haute Disponibilité (HA). Le LB teste en permanence ses membres (serveurs) pour savoir s'ils sont "UP" (sains) ou "DOWN" (morts).

Checks Actifs (Sondes)

Le LB envoie activement des requêtes de test (ex: toutes les 5 secondes).

NiveauTestVérifie quoi ?
L3ICMP (Ping)"L'OS du serveur (192.168.1.10) est-il UP ?"
L4TCP Connect"Y a-t-il un service qui écoute sur le Port 80 ?" (Le service Apache/Nginx est-il démarré ?)
L7HTTP GET"Si je fais GET /healthz, le serveur répond-il HTTP 200 OK ?"
(Le meilleur check). Vérifie que l'application (PHP/Node) fonctionne.

Règle : Si le check échoue X fois (ex: 3 échecs), le LB marque le membre "DOWN" et le retire du pool.

Checks Passifs

Le LB n'envoie pas de sonde, il observe le trafic réel des utilisateurs.

Règle : Si le LB envoie 5 requêtes d'utilisateurs au Srv A, et que Srv A répond 5 fois avec HTTP 503 (Service Unavailable), le LB va *passivement* marquer Srv A comme "DOWN" pour une courte période (ex: 30 sec) avant de réessayer.

3.2 Session Persistence ("Sticky Sessions")

Problème : Les algorithmes (Round Robin, Least Conn) sont "stateless". Ils envoient les requêtes n'importe où. C'est parfait pour du contenu statique, mais problématique pour les applications "stateful" (ex: un panier e-commerce stocké dans la session PHP/Java du Srv A).

Req 1 (Login) -> [LB] -> Srv A (Crée session "panier")
Req 2 (Ajout) -> [LB] -> Srv B (Ne connaît pas la session)
-> Erreur !

Solution : Persistence (Stickiness). Forcer un client à toujours retourner sur le même serveur back-end.

Méthode 1 : Source IP Hash

(Voir 2.3) Le LB route basé sur un hash de l'IP client. Simple, fonctionne en L4.

Inconvénient : Ne fonctionne pas si plusieurs clients partagent une IP (NAT) ou si l'IP client change (Mobile).

Méthode 2 : Cookie Injection (L7)

(La meilleure méthode) Nécessite un LB L7.

  1. Req 1 (Client) -> [LB] -> [Srv A]
  2. [Srv A] -> [LB] -> (Client) : Le LB injecte un cookie : Set-Cookie: LBSESSION=SRV_A_ID.
  3. Req 2 (Client) -> [LB] : Le client renvoie le cookie LBSESSION=SRV_A_ID.
  4. Le LB lit le cookie et route la requête vers [Srv A] (en ignorant l'algorithme de load balancing).
3.3 Fonction : SSL Offloading (Terminaison)

SSL Offloading (ou Terminaison TLS) est une fonction du LB L7 où il gère 100% des opérations de chiffrement/déchiffrement.

Le Flux

Le trafic est chiffré (HTTPS) sur Internet (entre Client et LB), mais en clair (HTTP) sur le LAN interne (entre LB et Serveurs).

[CLIENT] <--- (Connexion 1 : HTTPS - Cryptée) ---> [REVERSE PROXY (Nginx/LB)]
                                                        │ (Port 443)
                                                        │ (Déchiffre)
                                                        │
         <--- (Connexion 2 : HTTP - Non cryptée) ---> [Serveur App 1]
                                                        │ (Port 80)
                                                        │
         <--- (Connexion 2 : HTTP - Non cryptée) ---> [Serveur App 2]
                                                          (Port 80)
Avantages
  • Performance (Offloading) : Le chiffrement est lourd (CPU). Les serveurs d'application (PHP, Node) sont "déchargés" de cette tâche. Les LB matériels ont des puces (ASICs) dédiées à cela.
  • Centralisation (Gestion) : Un seul endroit où gérer (installer, renouveler) les certificats SSL, au lieu de 20 serveurs.
  • Visibilité (L7) : La seule façon pour un LB L7 de lire les URLs, Headers ou Cookies (pour le routage intelligent ou la persistance) est de déchiffrer le trafic d'abord.
4.1 Type : Hardware (Appliance / ADC)

Un Load Balancer Matériel (ou ADC - Application Delivery Controller) est un appareil physique dédié (une "boîte noire") conçu spécifiquement pour le load balancing à très haute performance.

Leaders du Marché
  • F5 (BIG-IP) : Le leader historique, souvent considéré comme le standard de l'industrie (LTM - Local Traffic Manager).
  • Citrix (NetScaler) : Un concurrent majeur, très puissant.
  • (Autres : Kemp, A10 Networks...)
Avantages
  • Performance Extrême : Utilise des puces spécialisées (ASICs, FPGAs) pour traiter le trafic (L4) et le SSL (Offloading) à la vitesse du matériel (wirespeed), sans impacter le CPU.
  • Fiabilité : Matériel redondant (alimentations, ventilateurs).
  • Fonctionnalités : Solution "tout-en-un" (LB L4/L7, WAF, Caching, SSL VPN...)
Inconvénients
  • Coût : Extrêmement cher (modèle CAPEX - Achat de matériel).
  • Rigidité : Propriétaire ("vendor lock-in"), lent à provisionner (il faut commander et installer une boîte).
4.2 Type : Software (Nginx)

Nginx (Open Source) est le Reverse Proxy L7 le plus populaire au monde. Il est excellent pour le load balancing HTTP/HTTPS, mais peut aussi gérer le L4 (stream module).

Configuration (Exemple L7 HTTP)

Configuration (nginx.conf) pour répartir la charge (Round Robin) d'un site web sur 2 serveurs back-end.

# 1. Définir le pool (la ferme) de serveurs back-end
upstream backend_servers {
    server 192.168.1.10:80;  # Serveur 1
    server 192.168.1.11:80;  # Serveur 2
    # server 192.168.1.12:80 weight=3; (Weighted)
    # ip_hash; (Pour la persistance IP)
}

server {
    listen 80;
    server_name www.ideolab.com;

    location / {
        # 2. Transférer le trafic au pool
        proxy_pass http://backend_servers;
        
        # 3. (Important) Passer les bons en-têtes
        proxy_set_header Host $host;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
    }
}
4.3 Type : Software (HAProxy)

HAProxy (Open Source) est un logiciel dédié au Load Balancing. Il est réputé pour être extrêmement rapide (surtout en L4/TCP) et très stable.

Configuration (Exemple L7 HTTP)

Configuration (haproxy.cfg) similaire à Nginx.

# 1. Définir le "Frontend" (ce que le client voit)
frontend http_frontend
    bind *:80
    mode http
    default_backend web_servers

# 2. Définir le "Backend" (le pool de serveurs)
backend web_servers
    mode http
    balance roundrobin  (Algorithme)
    
    # 3. Ajouter les membres et les health checks
    server srv1 192.168.1.10:80 check
    server srv2 192.168.1.11:80 check

# 4. (Optionnel) Dashboard de statistiques
listen stats
    bind *:8080
    stats enable
    stats uri /haproxy?stats
5.1 Type : Cloud (AWS, GCP, Azure)

Les LBs "Cloud" sont des services entièrement managés (SaaS/PaaS). Vous ne gérez pas de VM, vous ne configurez pas Nginx. Vous "commandez" un LB via une API ou une interface web.

Exemple : Écosystème AWS
Type (AWS)CoucheUsage
NLB (Network Load Balancer)L4 (Réseau)Trafic TCP/UDP. Très haute performance, latence ultra-faible. IP statique (Elastic IP).
ALB (Application Load Balancer)L7 (Application)Trafic HTTP/HTTPS, gRPC. Routage avancé (Path, Host). Intégration WAF, SSL.
CLB (Classic Load Balancer)L4 / L7 (Hybride)(Legacy/Obsolète) Ne pas utiliser pour les nouveaux projets.

Avantages : Scalabilité automatique (gérée par le Cloud), intégration (IAM, WAF, Certificats), pas de maintenance (HA gérée par le Cloud).

Inconvénients : Coût (OPEX), "vendor lock-in".

5.2 HA : Le Problème (SPOF)

Le Load Balancer résout le problème de SPOF (Single Point of Failure) des serveurs back-end. Mais il devient lui-même le nouveau SPOF.

[ Clients (Internet) ]
         │
         ▼
[ LOAD BALANCER (VIP) ]  <--- (Si ce serveur crash,
   (IP Publique)              TOUT LE SITE EST DOWN !)
   │      │      │
   ├──────┼──────┤
   ▼      ▼      ▼
[ Srv 1] [ Srv 2] [ Srv 3]
(UP)     (UP)     (UP)

Problème : Un Load Balancer seul n'est pas en Haute Disponibilité (HA).

Solution : Il faut toujours déployer les Load Balancers par paire (Cluster), dans une configuration Active/Passive.

5.3 HA : Solution (VRRP & IP Flottante)

Pour rendre le LB redondant (HA), on utilise un cluster Active/Passive et une IP Flottante (Floating IP), gérée par un protocole comme VRRP.

Architecture HA (Active/Passive)
                     [ Clients (Internet) ]
                            │
                            ▼
                     [ IP Flottante (VIP) ]
                     (ex: 80.1.2.3)
                    ↗ (Possède le VIP)   ↘ (Écoute)
                   ╱                     ╲
[ LB 1 (ACTIF) ]  <---- (Heartbeat) ---->  [ LB 2 (PASSIF) ]
(Priorité 100)                             (Priorité 90)
   │                                           (Ne fait rien)
   └──────────► [ Pool de Serveurs ]
VRRP (Virtual Router Redundancy Protocol)
  1. LB 1 (Actif) "possède" l'IP Flottante (VIP) car il a la priorité la plus élevée.
  2. LB 1 et LB 2 s'envoient des "heartbeats" (paquets "je suis vivant") en permanence.
  3. Scénario de panne : LB 1 (Actif) crash (panne de courant).
  4. LB 2 (Passif) ne reçoit plus de heartbeats de LB 1.
  5. LB 2 (Passif) se déclare "Actif", usurpe l'IP Flottante (VIP), et commence à traiter le trafic.

Résultat : Le basculement (failover) est automatique et (presque) instantané (quelques secondes).

6.1 Fonction : WAF (Web Application Firewall)

Un WAF est un type spécifique de Reverse Proxy (Couche 7) axé sur la sécurité applicative.

Il est souvent intégré directement dans les Load Balancers L7 modernes (Nginx (ModSecurity), F5 (AWF), AWS (AWS WAF)).

Fonctionnement (Inspection L7)

Comme le LB L7 fait du SSL Offloading (déchiffre le trafic), il peut inspecter le contenu des requêtes HTTP (URLs, Headers, Body) à la recherche de signatures d'attaques (ex: OWASP Top 10).

Exemple de règle WAF
Client envoie :
GET /login.php?user=' OR '1'='1'

1. [LB (Nginx)] déchiffre le HTTPS.
2. [LB (WAF)] analyse le paramètre "user".
3. [LB (WAF)] détecte la signature d'une Injection SQL.
4. [LB (WAF)] bloque (Drop) la requête (répond 403 Forbidden).

(Le trafic n'atteint jamais le serveur applicatif vulnérable).
6.2 Fonction : Caching (Reverse Proxy)

Les LBs L7 (comme Nginx ou Varnish) peuvent agir comme des caches de Reverse Proxy pour réduire la charge sur les serveurs back-end.

Cache Statique (Nginx)

Le LB peut être configuré pour servir lui-même les fichiers statiques (CSS, JS, Images) depuis son disque local, sans jamais déranger les serveurs d'application (PHP/Node).

Cache Dynamique (Varnish, Nginx)

Mise en cache de la réponse HTML complète d'une page (ex: la page d'accueil) pendant 60 secondes.

1. [User 1] demande "/"
2. [LB] -> [Srv App (PHP)]
3. [Srv App] (génère la page) -> [LB]
4. [LB] stocke le HTML (Cache, TTL 60s) -> [User 1]

5. [User 2] demande "/" (10 sec plus tard)
6. [LB] (Sert la page depuis son cache) -> [User 2]
   (Le serveur PHP n'est jamais contacté).
6.3 Cheat-sheet : L4 vs L7 & Algorithmes
L4 vs L7
CritèreL4 (Network LB)L7 (Application LB)
NiveauTransport (TCP/UDP)Application (HTTP/HTTPS)
PerformanceExtrêmement rapide (latence faible)Plus lent (Overhead CPU)
VisibilitéAveugle (lit IP/Port)Intelligent (lit URL, Headers, Cookies)
SSL OffloadNon (ou L4/Passthrough)Oui (Standard)
UsageBase de données (MySQL), UDP (Jeux)Sites Web (API, Microservices)
Algorithmes
AlgorithmeUsage
Round RobinSimple, prévisible. (Pour des serveurs identiques/stateless).
Least ConnectionsLe meilleur choix (défaut). Le plus équitable pour trafic dynamique.
IP HashPersistance (Sticky). (Si l'application est stateful et ne gère pas les sessions externes).