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 Contexte : Formation (TP) Rôle : Administrateur Système

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 dans la configuration.

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 et le nombre de sessions actives.

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 pour l'utilisateur.

Difficultés rencontrées

Configuration du fichier HAProxy

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

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

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), impactant l'expérience utilisateur.

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 et Compétences Acquises

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 : J'ai appris à manipuler les fichiers de configuration Linux (/etc/haproxy/haproxy.cfg) et à analyser les journaux d'événements (logs) pour valider les changements d'état des serveurs.
  • Architecture réseau : Compréhension approfondie des concepts de Reverse Proxy, Load Balancing et haute disponibilité dans un contexte de production.
  • Troubleshooting : Capacité à diagnostiquer et résoudre les problèmes de configuration grâce à l'analyse des logs et aux outils de validation intégrés.

Améliorations Possibles

Pour parfaire cette architecture, plusieurs évolutions seraient pertinentes :

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

Ressources & Documentation