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

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

我想为我们的 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,您的环境中应该存在类似的东西)

相关内容