Répartition de charge et haute disponibilité pour un site e-commerce avec HAProxy.
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.
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.
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.
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.
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é : 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
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
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
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.
/etc/haproxy/haproxy.cfg) et à analyser les journaux d'événements (logs)
pour valider les changements d'état des serveurs.Pour parfaire cette architecture, plusieurs évolutions seraient pertinentes :