这种用户连接到https://a.com然后 HAProxy 将 TCP 重定向到集群中定义的服务器之一,然后一旦该服务器获取数据 (NGINX),它将解密 SSL,然后将请求传递给另一台机器上的应用服务器 (COldFusion)。因此,数据基本上要经过 3 台机器,即 HaProxy、NGIX 和最后的 CF。
延迟在这里是一个大问题吗?
答案1
听起来你正在做过早的优化。如果你已经有负载保证了该架构,那么您还应该了解当前服务器的 CPU 负载等事实。
因此,数据基本上要经过 3 台机器,HaProxy、NGIX 和最后的 CF。延迟在这里是一个大问题吗?
通常不会。当然,每一层都会增加一点延迟,但通常它不会超过 10 毫秒,即使使用通用服务器和软件也是如此。
但:
- 把事情简单化。
- 保持标准化。
首先怎么做:
---------------
Internet -> | nginx -> CF |
---------------
然后后来:
------------- ------
Internet -> | nginx(SSL)| -> | -> | CF |
------------- | ------
| ------
| -> | CF |
| ------
最后,完整回答您的问题:是的,您的设置确实有意义;当 SSL 解密超出单个服务器的处理能力时。
本质上你建议的是修改版的Willy Tarreau 在这篇出色的负载平衡技术概述中谈到了什么。在许多情况下,可能更简单的方法是在最前端(在 SSL 加速器前面)使用防火墙哈希、路由技巧或 DNS 循环,而不是像您建议的那样在 TCP 模式下使用 HAPRoxy——也许可以考虑这样做。
答案2
我相信你也可以在 HAProxy 级别解密,从而消除对 nginx 的需求。如果 HAProxy 看到很多流量,我想你可能不想承担处理 SSL 的额外负担,但是拥有三台机器似乎比必要的多一台。