Proxy reverso com uma API compatível com várias plataformas?

2

Gostaria de fornecer um pouco de capacidade de failover para nosso farm da Web, portanto estou analisando várias plataformas de proxy reverso de código aberto (haproxy, nginx, Varnish, Cherokee e Squid) para direcionar tráfego http e SSL para nossos servidores da Web MS / IIS. Minha preferência seria implantar o proxy reverso em um ambiente Linux (embora esteja aberto a sugestões alternativas).

Idealmente, gostaria de poder controlar as implantações no ambiente de produção, removendo / adicionando hosts à configuração do proxy reverso durante a implantação.

Nosso desenvolvimento é todo .NET \ C #, então seria muito útil se algum dos pacotes de proxy que eu mencionei acima tivessem uma API externa amigável para clientes Windows / SOAP / REST.

Como pior caso, suponho que eu poderia escrever um aplicativo Mono / C # para ouvir comandos, atualizar os arquivos de configuração necessários, depois HUP o serviço de proxy ... mas isso parece ser muito trabalhoso para um programador preguiçoso como eu.

Alguém tem uma sugestão (ou duas ou três)

Obrigado!

    
por David Montgomery 15.12.2011 / 00:38

1 resposta

1

Eu não sei sobre os outros, mas você pode controlar o HAProxy através de um socket Unix ou usar httpchk

1. Controle via socket unix

Se você tem stats socket /var/run/haproxy.sock level admin no seu arquivo de configuração:

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

fará o truque

Há também um módulo Perl para simplificar o controle por meio do soquete.

Todos os comandos podem ser encontrados aqui

2. Usando httpchk

Como alternativa, se você tiver isso em sua configuração de back-end

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

Quando você remove o arquivo check.txt, o servidor é removido do LB e adicionado novamente quando você toca no arquivo.

Esses dois métodos não são realmente externos à API, mas devem ser muito fáceis de adicionar ao seu script de implantação. (Estou usando o capistrano para o Rails, algo semelhante deve existir para o seu ambiente)

    
por 15.12.2011 / 01:14