我想提供一些故障转移能力到我们的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,类似的东西应该存在于你的环境中)