Mise à jour (28 août 2012): J'ai maintenant tendance à utiliser haproxyctl , qui utilise les méthodes décrites ci-dessous.
Je l'ai corrigé après un peu plus de recherches, pour quiconque ayant le même problème: -
Vous pouvez ajouter un socket Unix dans votre configuration, puis interagir avec cela ( voici les commandes possibles ).
Installer:
sudo nano /etc/haproxy/haproxy.cfg
Dans votre section "globale", ajoutez:
stats socket /etc/haproxy/haproxysock level admin
Redémarrez votre démon haproxy (par exemple sudo service haproxy restart
)
Maintenant, vous avez besoin de socat (si vous ne l'avez pas, juste apt-get install socat
sur Ubuntu).
Il ne vous reste plus qu'à lancer cette commande pour supprimer un nœud:
echo "disable server yourbackendname/yourservername" | socat stdio /etc/haproxy/haproxysock
Pour le remettre en place, remplacez disable par enable dans la commande ci-dessus.
socat /var/run/haproxy.stat stdio
pour chaque commandeSi vous n'avez accès qu'à netcat (
nc
), vous pouvez l'utiliser pour interagir avec le fichier de socket de HAProxy de la même manièresocat
.Pour désactiver un serveur:
Veillez à ce que le fichier de socket ait le niveau d'accès approprié pour effectuer les opérations ci-dessus. Principalement quelque chose comme ceci:
Sinon, vous obtiendrez des erreurs d'autorisation refusées:
Références
la source
Le moyen le plus simple est:
1 - Configurez votre serveur Web pour renvoyer le code 503 si un fichier nommé maintenance.html (par exemple) existe. Avec Apache, vous pouvez le faire comme suit:
2 - Configurez votre backend haproxy pour vérifier une URL au lieu de vérifier un port comme suit:
3 - Redémarrez votre serveur Web et votre équilibreur de charge.
4 - Mettez votre serveur web en mode maintenance.
5 - Retirez votre serveur Web du mode maintenance.
la source
Vous pouvez également "supprimer" temporairement la page de vérification de l'intégrité d'un serveur pour obtenir le noeud final, puis publier votre application.
la source
Si vous avez debian, readline ne fonctionne pas, netcat est une meilleure option pour les applications interactives:
Non interactif:
la source