SSL 网站的高可用性

SSL 网站的高可用性

我们的一个 Web 服务器集群为一定数量的繁忙电子商务应用程序提供服务。目前,每个站点都位于特定的 Web 服务器上,并且有一个镜像到集群中另一台 Web 服务器的热备用副本。如果服务器发生故障,则有一个手动流程可以在其故障转移服务器上重新激活站点。我们正处于一个需要更好解决方案的阶段,不仅要解决故障问题,还要让我们能够在站点不停机的情况下关闭机器进行维护。

我们正在考虑建立一个由 2-3 人组成的集群HAProxy服务器(主要是因为它具有出色的性能记录)放在 Web 服务器前面。据我所知,它将满足我们对会话管理和让用户在同一台​​服务器上等的大部分需求。我们最大的担忧是 SSL 证书。每个站点都有自己的 SSL 证书。由于最终用户将连接到 HAProxy 服务器,我只能假设我们需要将证书移动到 HAProxy 集群中的每台机器。由于 HAProxy 不直接处理 SSL,我了解到我们可以通过反向代理类型的转发安排在同一系统上使用 Apache+mod_ssl 来实现这一点。

因此,我的具体问题是 HAProxy 是否真的是完成这项工作的合适工具?现有的 SSL 证书(目前在 Windows 2003 Server 上,一些是 EV-SSL 证书)是否可以移植到 Apache?我们是否应该考虑其他软件或硬件解决方案(将 HAProxy 与 SSL 站点一起使用似乎比需要的更复杂)?在设置高可用性 SSL Web 集群时,我们可能没有考虑到其他注意事项?

答案1

如果您愿意接受 Microsoft/IIS 7 解决方案,则一种选择是使用 IIS7 的应用程序请求路由 (ARR)。

learn.iis.net 上的这篇文章中有一个介绍/教程:使用应用程序请求路由实现 HTTP 负载平衡有一项功能称为“SSL 卸载”:

启用此功能后,ARR 服务器与应用服务器之间的所有通信都以明文形式进行,即使是客户端向 ARR 服务器发出的 HTTPS 请求也是如此。当 ARR 服务器和应用服务器都部署在受信任的网络中(例如在同一数据中心内)时,启用 SSL 卸载不会牺牲安全性。

此外,启用此功能可以进一步帮助最大限度地利用应用程序服务器上的服务器资源,因为它们不必花费周期来加密和解密请求和响应。

如果你想深入研究这个话题,这是另一篇关于 ARR 的文章,解释了如何将该机制与硬件负载均衡器结合使用。

答案2

过去我设置过类似的东西,但是我们运行的是 mod perl 应用程序,这些应用程序非常耗资源。所以我们最终在应用服务器前面使用了 squid,并使用 apache+proxy 来实现 ssl 卸载,这样我们就可以通过 squids 缓存所有内容。对于集群部分,我们使用 LVS(linux 虚拟服务器)+heartbeat 作为故障转移负载平衡器。有关我使用的 ssl 卸载方法,请参阅在我的博客上发表文章了解更多信息

答案3

有多种方法可以配置 HAProxy,但它们要求所有要使用的服务器上都有 SSL 证书。我遇到过但从未使用过的另一个选项是一款名为设计时考虑了 SSL 服务器负载平衡

相关内容