Publié le : 14/12/2024 à 10:00 Mis à jour le : 15/06/2026 à 16:16 Vues : 520

Apprenez à utiliser HAProxy Topology Visualizer pour transformer vos fichiers haproxy.cfg complexes en schémas interactifs et faciliter le débogage de votre architecture.

1. Qu'est-ce que HAProxy Topology Visualizer ?

Un outil indispensable pour comprendre la logique de routage de votre load balancer.

Le concept

HAProxy Topology Visualizer est un produit développé et maintenu par RousselTM qui analyse vos fichiers de configuration haproxy.cfg pour générer une représentation graphique. Il permet de voir instantanément les relations entre les Frontends, les Backends, les règles ACL et les serveurs finaux.

Pourquoi l'utiliser ?

  • Audit de configuration : Identifier des backends orphelins ou des erreurs de routage.
  • Documentation : Générer des schémas d'architecture à jour pour vos équipes.
  • Onboarding : Aider les nouveaux collaborateurs à comprendre le flux de trafic sans lire des milliers de lignes de code.

2. Comment déployer l'outil ?

Le déploiement s'effectue via Docker Compose à partir du dépôt officiel de la formation.

Pré-requis

  • Disposer de Docker installé sur votre machine.
  • Avoir des droits suffisants pour pouvoir déployer un conteneur.
  • Le réseau haproxy_net doit être présent. Si ce n'est pas le cas, créez-le manuellement :
    docker network create haproxy_net

Procédure de déploiement

Exécutez les commandes suivantes dans votre terminal :

# 1. Cloner le repo
git clone https://github.com/rousseltm/haproxy-formation.git

# 2. Accéder au dossier
cd haproxy-formation

# 3. Lancer le déploiement
docker compose -f compose-parser.yaml up -d

Accès à l'interface

Une fois le conteneur démarré, vous avez deux méthodes pour accéder à l'outil :

  • Option 1 : Routage via HAProxy (Recommandé)
    Utilisez votre instance HAProxy (ex: port 8404) pour rediriger le flux vers le service parser. Pour éviter tout conflit avec l'interface de statistiques, assurez-vous que l'URI des stats est spécifique (ex: /stats) et utilisez la directive use_backend :
    # Dans votre section listen ou frontend
    stats uri /stats
    use_backend parser_backend if { path_beg /parser }
    
    backend parser_backend
        http-request set-path %[path,regsub(^/parser,/)]
        server visualizer_srv parser:80 check
  • Option 2 : Exposition directe de port
    Modifiez le fichier compose-parser.yaml pour exposer le port 80 du conteneur sur un port de votre machine (ex: 8555) :
    services:
      parser:
        ports:
          - "8555:80"

3. Comment l'utiliser ?

Trois étapes simples pour visualiser votre topologie.

Importation de la configuration

Sur l'interface web, sélectionnez simplement le dossier contenant vos fichiers de configuration HAProxy. L'outil analysera l'ensemble des fichiers pour reconstituer la topologie complète. Si vous souhaitez corréler la vue avec l'état réel de votre noeud, vous pouvez également renseigner les informations d'accès aux statistiques (URL, utilisateur et mot de passe).

Analyse du graphe

L'outil génère un diagramme dirigé :

  • Nœuds Frontends : Points d'entrée avec leurs ports d'écoute (bind).
  • Arêtes (Lignes) : Représentent les décisions de routage (ACL, use_backend).
  • Nœuds Backends : Groupes de serveurs avec leurs algorithmes de balance.

Filtrage et interaction

La plupart des versions permettent de cliquer sur un composant pour mettre en évidence son chemin spécifique, ce qui est extrêmement utile pour isoler le flux d'une application précise dans un cluster mutualisé.

4. Limites et bonnes pratiques

Ce qu'il faut savoir avant de l'utiliser en production.

Sécurité des données

ATTENTION : Ne téléversez jamais votre configuration sur des versions en ligne publiques si elle contient des secrets, des mots de passe ou des adresses IP sensibles. Utilisez toujours une instance locale ou conteneurisée.

Versions de HAProxy

L'outil supporte généralement les directives standards jusqu'à la version 3.x. Certaines directives très récentes ou spécifiques à la version Enterprise pourraient ne pas être rendues graphiquement, mais l'essentiel de la topologie restera valide.

Lien copié dans le presse-papiers !