可扩展的方式安装 SSL 证书,无需停机

可扩展的方式安装 SSL 证书,无需停机

我们有一个 SaaS 应用程序,允许客户使用自己的域名 - 非常典型。从本质上讲,该架构有一个简单的万能虚拟主机 (apache),软件会根据主机名解析客户。

但是,我们的许多客户都要求自定义域支持 SSL。目前,我们通过添加具有 SSL 证书的(优先级较高的)虚拟主机并重新启动 apache 来实现此目的。

虽然这种方法可行,但也存在一些问题:

  1. 您要么必须重新启动 apache(这意味着暂时无法运行),要么将 dns 切换到全新的服务器堆栈。

  2. 如果我们没有发现 SSL 证书存在问题,Apache 将抛出致命错误并且无法重新启动。

  3. 将其推广到数千名用户是不可能的,或者至少是不切实际的。

简而言之,它无法扩展。我们已经探索了负载均衡器上的 SSL 终止……它很有前景,但我们找不到任何支持多个 SSL 证书(通过 SNI)的负载均衡器。

展望未来,这越来越成为产品的瓶颈——如果需要,我们愿意改变架构或放弃 Apache。

答案1

我们已经探索了负载均衡器上的 SSL 终止......它很有前景,但我们找不到任何支持多个 SSL 证书的负载均衡器(通过 SNI)

真的吗?我不得不再三考虑这个问题的发布时间,以确保它不是几年前的死帖,因为我想不出任何负载平衡器2016 年支持 SNI。

虽然我最熟悉的是 HAProxy,它自 1.5 版起支持 SNI该产品显然是在 2014 年 6 月发布的。

虽然 1.5 在技术上不支持真正的零停机时间重新加载配置更改,但它有一个“快速重新加载”选项,通常速度足够快,不会影响典型的网站。但如果你真的想实现这一点,有一个Yelp 工程博客文章描述了一种实现“真正零停机时间”重新加载的方法,该方法涉及使用 Linux tc 和 iptables 进行一些奇特的工作,以在重新加载期间延迟 SYN 数据包。摘自本文:

重启 HAProxy 对我们的流量基本没有影响,只会造成轻微的延迟,如图 3 所示。请注意,此方法在很大程度上取决于 HAProxy 加载其配置所需的时间,而且由于我们运行的是简化的配置,因此这些结果看起来快得令人难以置信。在我们的生产环境中,我们确实观察到 HAProxy 重启期间大约有 20 毫秒的延迟。

答案2

负载平衡器意味着重新启动耗尽电量的服务器是可以的,这并不是需要避免的事情。

客户可以申请新的域名或证书。在下一批更新中,此更改将以新配置的形式部署到某些 Web 服务器。耗尽旧 Web 服务器并将其停止在零连接状态。新连接将转到新的工作配置。如果出现问题,请恢复到上一个​​配置。

出于性能和可用性原因,将 Web 服务器添加到负载均衡器。当配置过于复杂时,请添加负载均衡器。

相关内容