
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 -vvLa 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.cfgHAProxy 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 haproxyDocker & 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.statActions à 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.stat4. 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.cfgVérification des ports #
Vérifiez que HAProxy écoute bien sur les interfaces et ports attendus (80, 443, 8404).
sudo ss -tlpn | grep haproxyConclusion #
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.
