HAProxy SSL农场选项

我想弄清楚如何设置haproxy和SSL反向代理服务器的SSL场,我正在寻找一些一般性的build议:

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

  • 负载平衡请求针对SSL场,并有故障转移,所以多个SSL盒将成为可能(也许haproxy的sslcheck将有助于这一点)。
  • 获取具有实际客户端IP地址的HTTP日志。
  • 没有TProxy要求

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

Haproxy 443 TCP Proxy Frontend – > SSL代理(也许Nginx)在高端口 – > Haproxy HTTP前端 – > Web服务器

我意识到我可以跳过第二跳回haproxy,但HAproxy中的一切的单一视angular可能是好的。 另外如果我必须使用TProxy,也许回到haproxy从SSL农场将使路由更简单?

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

凯尔,

如果您只需要对SSL部分进行故障转移,而不是负载平衡,那么这就是我的build议。 在两个节点上安装haproxy + keepalived + stunnel(修补程序)。 Keepalived拥有服务地址,并检查stunnel和haproxy进程的存在,以计算其权重,以使最佳形状的节点成为主节点。 Stunnel通过端口443接收stream量,并将其转发到您喜欢的任何端口上的haproxy。 为了让haproxylogging客户端的IP地址,你需要为stunnel提供x-forwarded-for补丁(你可以在我的网站上find它)。 然后你会告诉haproxyloggingx-forwarded-for头。

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

好的,我看到这个比较晚,但是怎么样:

VLAN1 VLAN2 INET -- | -- [SSL] -- | -- [HTTP Load Balancer] | | | -- [SSL] -- | -- [WEB01] | | | -- [SSL] -- | -- [WEB02] | | -- [WEB03] etc 

用话说:

  • 简单的DNS循环发布x服务的IP地址,
  • 使用前端SSL代理(Apache,nginx)直接对这些IP进行响应。 (可选,但推荐使用VRRP,CARP或Linux-HA之类的软件来确保这些IP的高可用性。)
  • 所有的SSL代理发送他们的请求到单臂负载均衡器(为了便于configuration,单点LB /会话pipe理),
  • 最后,LB将请求发送到Web应用程序服务器。

有几件事情会跳出来:

  • 在这个架构中,HAProxy和SSL代理(nginx)在特性和使用模型方面非常接近。 纯HTTP HTTP负载平衡的其他要求(是其他地方提到的速率限制)? 如果不是,那么跳过HAProxy可能会更干净,并且仅对所有SSL和LB处理(fx nginx)使用一种types的Web服务器。
  • DNS轮循机制可能“足够好”,只是粗略地分散了2-3个SSL代理的负载。 但是,如果你不喜欢它,那么你可以使用L4机制。

获取具有实际客户端IP地址的HTTP日志。

假设第一个HTTP级别的设备添加了X-FORWARDED-FOR头文件,并且使用类似于这样的东西或F5的 IIS插件,这应该可以工作。