Infrastructure & Réseau

Mise en œuvre d'un Reverse Proxy avec Load Balancing

Répartition de charge et haute disponibilité pour un site e-commerce avec HAProxy.

Session 2025 Formation (TP) Admin Système
Documentation et ressources

Contexte et Objectifs

Contexte et Risque

Dans le cadre d'un TP portant sur l'infrastructure d'un site de e-commerce fictif, j'ai dû répondre à une problématique de montée en charge. Le risque principal identifié était l'indisponibilité du service : si le serveur web unique subissait une panne ou une surcharge de trafic (pics de ventes), les clients ne pouvaient plus accéder au site, entraînant une perte de chiffre d'affaires.

Objectifs du Projet

  • Répartition de charge (Load Balancing) : Distribuer les requêtes HTTP équitablement entre plusieurs serveurs cibles (Backends).
  • Haute disponibilité : Garantir la continuité de service grâce à un mécanisme de basculement automatique (Failover).
  • Sécurisation : Centraliser les points d'entrée du réseau (Reverse Proxy) pour masquer l'architecture interne des serveurs web.

Environnement Technique

  • Debian 11/12 (Machines virtuelles)
  • HAProxy (High Availability Proxy)
  • 2 serveurs Apache2 (Backends)
  • Interface de monitoring HAProxy
  • Architecture réseau virtualisée

Réalisation des Tâches

1. Installation et Configuration du Frontend

Installation : Mise en place de HAProxy sur une instance Debian dédiée via le gestionnaire de paquets apt.

Frontend : Définition de l'adresse IP et du port d'écoute (port 80) pour intercepter toutes les requêtes entrantes des clients.

2. Configuration du Backend et Algorithme

Ferme de serveurs : Déclaration des serveurs Apache (Serveur_Web_1 et Serveur_Web_2) avec leurs adresses IP respectives.

Round Robin : Implémentation de l'algorithme de distribution cyclique pour assurer une répartition équitable du trafic entre les backends.

3. Health Check et Haute Disponibilité

Vérification de santé : Configuration de directives de Health Check pour que HAProxy détecte automatiquement si un serveur Apache est hors-ligne.

Failover automatique : En cas de panne d'un serveur, le trafic est automatiquement redirigé vers les serveurs restants sans intervention manuelle.

4. Supervision et Tests de Validation

Interface de statistiques : Activation et sécurisation d'une page de monitoring HAProxy (/haproxy?stats) pour visualiser en temps réel l'état des serveurs.

Tests de failover : Simulation de panne (arrêt manuel d'Apache sur le serveur 1). Résultat : HAProxy a détecté la panne en moins de 2 secondes et a redirigé 100% du trafic vers le serveur 2 sans erreur.

Difficultés rencontrées

Configuration du fichier HAProxy

Difficulté : Syntaxe stricte du fichier /etc/haproxy/haproxy.cfg entraînant des erreurs au démarrage.

Solution : Validation systématique de la configuration avec haproxy -c -f haproxy.cfg avant redémarrage, et analyse des journaux d'événements.

Compétence : Mettre à disposition un service

Temps de détection de panne

Difficulté : Par défaut, le délai de détection d'un serveur hors-ligne était trop long (30 secondes).

Solution : Ajustement des paramètres inter, fall et rise pour réduire le temps de détection à moins de 2 secondes tout en évitant les faux positifs.

Compétence : Vérifier la continuité de service

Persistance des sessions

Difficulté : Avec le Round Robin pur, un utilisateur pouvait être redirigé vers un serveur différent à chaque requête (problème de panier e-commerce).

Solution : Étude du mécanisme de "sticky sessions" (affinité de session) pour les environnements nécessitant une persistance.

Compétence : Développement professionnel

Compétences E5 Mobilisées

Gérer le patrimoine informatique (Patrimoine) Vérifier les conditions de la continuité d'un service informatique — Mise en place de la haute disponibilité pour éviter le point de rupture unique (SPOF).
Mettre à disposition un service (Service) Déployer un service — Installation, configuration et mise en production du service de Reverse Proxy HAProxy sur Debian.
Mettre à disposition un service (Service) Réaliser les tests d'intégration et d'acceptation d'un service — Validation du bon fonctionnement du mécanisme de failover suite à une simulation de panne.
Développement professionnel (Professionnel) Mettre en place son environnement d'apprentissage personnel — Utilisation d'un environnement virtualisé pour simuler une architecture réseau complexe.

Bilan Personnel

Cette réalisation m'a permis de maîtriser les concepts de flux réseau entrants. J'ai compris l'importance de la couche de répartition de charge pour la performance globale d'un service web à fort trafic.

Compétences Développées

  • Administration Linux : Manipulation des fichiers de configuration (/etc/haproxy/haproxy.cfg) et analyse des journaux d'événements.
  • Architecture réseau : Compréhension approfondie des concepts de Reverse Proxy, Load Balancing et haute disponibilité.
  • Troubleshooting : Diagnostiquer et résoudre les problèmes de configuration grâce aux logs et aux outils de validation intégrés.

Améliorations Possibles

  • SSL Offloading : Mise en place d'un certificat SSL directement sur le HAProxy pour décharger les serveurs web du chiffrement.
  • Clustering HAProxy : Mise en place d'un second HAProxy en mode actif/passif avec Keepalived.
  • Équilibrage dynamique : Utilisation de l'algorithme "leastconn" au lieu de Round Robin pour une répartition basée sur la charge réelle.

Ressources & Documentation