2 votes

Un proxy inverse avec une API compatible avec toutes les plates-formes ?

J'aimerais fournir une certaine capacité de basculement à notre ferme web, et j'étudie donc différentes plates-formes de reverse proxy open-source (haproxy, nginx, Varnish, Cherokee et Squid) pour diriger le trafic http et SSL vers nos serveurs web MS/IIS. Je préférerais déployer le reverse proxy dans un environnement Linux (mais je suis ouvert aux autres suggestions).

Idéalement, j'aimerais pouvoir contrôler les déploiements vers l'environnement de production en supprimant/ajoutant des hôtes à la configuration du proxy inverse pendant le déploiement.

Notre développement est entièrement basé sur .NET \C #Il serait donc très utile que l'un des paquets de proxy que j'ai mentionnés ci-dessus dispose d'une API externe qui soit compatible avec les clients Windows/SOAP/REST.

Dans le pire des cas, je suppose que je pourrais écrire une application Mono/C# qui écouterait les commandes, mettrait à jour les fichiers de configuration requis, puis HUP le service proxy... mais cela semble être beaucoup de travail pour un programmeur paresseux comme moi.

Est-ce que quelqu'un a une suggestion (ou deux, ou trois)

Gracias.

1voto

John Wang Points 4743

Je ne sais pas pour les autres mais vous pouvez contrôler HAProxy via un socket Unix ou utiliser httpchk

1. Contrôle via unix socket

Si vous avez stats socket /var/run/haproxy.sock level admin dans votre fichier de configuration :

echo "disable server production/prod02" | socat stdio /var/run/haproxy.sock
echo "enable server production/prod02" | socat stdio /var/run/haproxy.sock

fera l'affaire

Il existe également un Module Perl pour simplifier la commande via la prise.

Toutes les commandes peuvent être trouvées ici

2. Utiliser httpchk

Alternativement, si vous avez ceci dans votre configuration backend

backend production
  option httpchk HEAD /check.txt HTTP/1.0
  http-check disable-on-404
  server prod01 192.168.0.77:81 check
  server prod02 192.168.0.72:81 check

Lorsque vous supprimez le fichier check.txt, le serveur est retiré du LB et réintroduit lorsque vous touchez le fichier.

Ces deux méthodes ne sont pas vraiment des API externes mais devraient être assez faciles à ajouter à votre script de déploiement. (J'utilise capistrano pour Rails, quelque chose de similaire devrait exister pour votre environnement)

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X