我想为我们的 Web 场提供一些故障转移能力,因此我正在寻找各种开源反向代理平台(haproxy、nginx、Varnish、Cherokee 和 Squid),以将 http 和 SSL 流量定向到我们的 MS/IIS Web 服务器。我倾向于将反向代理部署到 Linux 环境(尽管我愿意接受其他建议)。
理想情况下,我希望能够在部署时通过在反向代理的配置中删除/添加主机来控制到生产环境的部署。
我们的开发都是.NET \ C#,所以如果我上面提到的任何代理包具有对 Windows/SOAP/REST 客户端友好的外部 API,那将非常方便。
最坏的情况是,我想我可以编写一个 Mono/C# 应用程序来监听命令,更新所需的配置文件,然后 HUP 代理服务……但对于像我这样的懒惰程序员来说,这似乎是一项艰巨的工作。
有人有建议吗(两个或三个)
谢谢!
答案1
我不知道其他的,但你可以通过 Unix 套接字或使用 httpchk 来控制 HAProxy
1. 通过unix套接字控制
如果你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 模块简化通过套接字的控制。
可以找到所有命令这里
2. 使用 httpchk
或者如果你的后端配置中有这个
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,但应该很容易添加到您的部署脚本中。(我正在使用 capistrano for Rails,您的环境中应该存在类似的东西)