RousselTMLEARNING

Proxy & réseau

Aide-mémoire HAProxy : Les commandes essentielles

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).

Aide-mémoire HAProxy : Les commandes essentielles

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.

Pour aller plus loin