HAProxy SSL 场选项

Kyl*_*ndt 7 ssl haproxy

我想弄清楚如何使用 haproxy 和 SSL 反向代理设置 SSL 场,我正在寻找一些一般性建议:

是否有可能满足以下所有条件:

  • 针对 SSL 场的负载平衡请求并具有故障转移功能,因此可以使用多个 SSL 框(也许 haproxy 中的 sslcheck 会对此有所帮助)。
  • 获取包含实际客户端 IP 地址的 HTTP 日志。
  • 无 TProxy 要求

如果所有这三个都不可能,我想知道权衡可能是什么。现在我正在考虑类似以下的事情,但这可能会改变:

Haproxy 443 TCP 代理前端 -> 高端口上的 SSL 代理(可能是 Nginx) -> Haproxy HTTP 前端 -> 网络服务器

我意识到我可能可以跳过第二跳回到 haproxy,但是 HAproxy 中所有事物的单一视角可能很好。另外,如果我必须使用 TProxy,也许从 SSL 场返回 haproxy 会使路由更简单?

参考资料:
http : //haproxy.1wt.eu/download/1.5/doc/configuration.txt
http://1wt.eu/articles/2006_lb/index_05.html

Wil*_*eau 2

凯尔,

如果您只需要 SSL 部分的故障转移而不需要负载平衡,那么我的建议如下。您在两个节点上安装 haproxy + keepalived + stunnel(已修补)。Keepalived 拥有服务地址,并检查 stunnel 和 haproxy 进程是否存在,以计算其权重,以便状态最佳的节点成为主节点。Stunnel 接收端口 443 上的流量,并将其本地转发到您喜欢的任何端口上的 haproxy。为了让 haproxy 记录客户端的 IP 地址,您需要 stunnel 的 x-forwarded-for 补丁(您可以在我的网站上找到它)。然后,您将告诉 haproxy 记录 x-forwarded-for 标头。

但有一个限制。如果支持HTTP keep-alive,那么stunnel只会添加一次x-forwarded-for header,这有点问题。在 Exceliance,我们已经开始开发一个补丁,将连接参数从 stunnel 转发到 haproxy,而不是使用 x-forwarded-for。这样,haproxy 相信它从真实客户端获得连接。如果您有兴趣,请告诉我,我们可以在完成后发送给您。