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

Un guide pratique regroupant toutes les commandes indispensables pour installer, gérer, tester et déboguer HAProxy au quotidien (CLI, Systemd, Docker et Runtime API).

1. Validation et CLI

Identifier la version et valider l'intégrité de votre configuration.

Vérification de la version

Il est essentiel de vérifier les capacités de votre binaire, notamment pour le support SSL/TLS ou Lua.

# Version simple
haproxy -v

# Version détaillée (indispensable pour le débug)
haproxy -vv

La commande -vv affiche les bibliothèques liées (OpenSSL, PCRE, etc.) et les options de compilation qui peuvent restreindre certaines fonctionnalités.

Test de configuration

Règle d'or : Ne jamais recharger un service en production sans valider la syntaxe. Une erreur de virgule peut arrêter le service.

# -c : check mode, -f : spécifie le fichier
haproxy -c -f /etc/haproxy/haproxy.cfg

HAProxy permet de charger plusieurs fichiers. L'ordre des -f est important car les directives sont lues séquentiellement.

2. Gestion du Service

Piloter le cycle de vie selon votre environnement.

Systemd (Linux)

Privilégiez le reload au restart. Le reload utilise le signal USR2 pour lancer un nouveau processus tout en laissant l'ancien terminer les connexions en cours (Hitless Reload).

# Rechargement sans coupure
sudo systemctl reload haproxy

# Vérification du statut du service
sudo systemctl status haproxy

Docker & Docker Compose

Dans un conteneur, redémarrer le conteneur coupe les connexions. Utilisez le signal SIGHUP pour déclencher le rechargement interne de HAProxy.

# Envoyer le signal HUP au processus 1 du conteneur
docker kill -s HUP <container_name>

# Consulter les logs de santé et de trafic
docker logs --tail 100 -f <container_name>

3. Runtime API via Socat

Interagir avec HAProxy en temps réel via la socket UNIX.

Lecture d'informations

La socket permet de parler directement au moteur. Elle doit être définie dans global avec un niveau admin.

# Extraire les stats au format CSV
echo "show stat" | socat stdio /var/run/haproxy.stat

# Voir les infos de santé globale (Uptime, Process ID, etc.)
echo "show info" | socat stdio /var/run/haproxy.stat

Actions à chaud

Ces modifications sont immédiates et ne nécessitent pas de reload, mais elles sont volatiles (perdues au prochain restart si non reportées dans le .cfg).

# Sortir un serveur du pool (Drain)
echo "set server web_servers/srv1 state maint" | socat stdio /var/run/haproxy.stat

# Changer dynamiquement le ratio de trafic (Weight)
echo "set server web_servers/srv1 weight 10" | socat stdio /var/run/haproxy.stat

4. Débogage

Outils pour l'analyse réseau.

Mode interactif

Le mode -db (disable background) est parfait pour le développement. Il affiche toutes les alertes et erreurs directement dans le terminal.

haproxy -db -f /etc/haproxy/haproxy.cfg

Vérification des ports

Vérifiez que HAProxy écoute bien sur les interfaces et ports attendus (80, 443, 8404).

sudo ss -tlpn | grep haproxy

Conclusion

Astuce de production

Privilégiez toujours le signal HUP (ou systemctl reload) plutôt qu'un restart pour éviter de rejeter les connexions clients en cours lors d'une mise à jour de configuration.

Lien copié dans le presse-papiers !