反向代理与跨平台友好的API?

我想提供一些故障转移能力到我们的networking农场,所以我正在寻找各种开源反向代理平台(haproxy,nginx,Varnish,Cherokee和Squid)来引导http和SSLstream量到我们的MS / IIS Web服务器。 我的首选是将反向代理部署到Linux环境(虽然我打开替代build议)。

理想情况下,我希望能够通过在部署正在进行时将反向代理的configuration中的主机移除/添加到生产环境来控制部署。

我们的开发都是.NET \ C#,所以如果我上面提到的任何一个代理包都有一个对Windows / SOAP / REST客户端友好的外部API的话,那将是非常方便的。

作为最糟糕的情况,我想我可以编写一个Mono / C#应用程序来侦听命令,更新所需的configuration文件,然后HUP代理服务……但对于像我这样的懒惰程序员来说,这看起来像很多工作。

有没有人有一个build议(或两个,或三个)

谢谢!

我不知道其他人,但你可以通过Unix套接字或使用httpchk控制HAProxy

1.通过unixsockets进行控制

如果你在你的configuration文件中有stats socket /var/run/haproxy.sock level admin

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

会做的伎俩

还有一个Perl模块来简化通过套接字的控制。

所有的命令可以在这里find

2.使用httpchk

另外,如果你有你的后端configuration

 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 

当您删除check.txt文件时,服务器将从LB中删除,并在您触摸文件时加回。

这两个方法并不是真正的外部API,但应该很容易添加到您的部署脚本中。 (我使用的是Rails的capistrano,类似的东西应该存在于你的环境中)