延迟负载平衡+故障转移解决方案

延迟负载平衡+故障转移解决方案

我正在寻找一种结合动态故障转移的延迟(或地理)负载平衡解决方案。

基础设施基于 OVH 的 3 台专用服务器。这些服务器位于 3 个不同的地理位置(加拿大、法国和澳大利亚)。

我想要实现以下几个目标:

  1. 访问服务的客户端被重定向到最近的服务器,因此响应很快。
  2. 如果一台服务器停止服务,请求将转到另一台服务器,最终用户将得到响应。
  3. 在故障转移情况下,用户获得答案比快速响应更为重要。
  4. 我需要能够偶尔重启服务器进行升级或执行其他操作。因此魔法必须在主服务器之外。
  5. 流量经过 HTTPS,但 HTTP 会重定向到 HTTPS。

问题的小例子

我只对 HTTP 流量感兴趣。每个请求都必须发送到服务器,无法缓存任何内容,因为响应非常动态。

我已经看过 AWS Route 53,它很棒,但它只是一个 DNS,因此它不会解决故障转移部分。

OVH 具有 IP 负载平衡功能,但我无法使其工作,而且我没有找到解决问题 1 的选项。

我对任何提示或解决方案都感兴趣,包括使用第三方服务。

我还考虑在每个位置(靠近每个主服务器)购买 3 台小型 VPS 服务器作为网关。在这种解决方案中,我可以使用 AWS Route 53 为 VPS 服务器提供延迟负载平衡,服务器将处理故障转移。根据定义,它们将 100% 处于活动状态,而主服务器将有机会重新启动而不会导致服务停机。

答案1

更新我的答案 - 所有这些都是可选的。可以关闭缓存以允许动态响应。并且只有在需要时才可以通过 HTTP 提供流量。

我非常喜欢的一个解决方案是 Cloudflare。如果您使用的是 HTTP/HTTPS,并且没有使用原始问题中未提及的其他协议,它几乎可以解决您的所有问题。

解决基于地理位置的内容服务问题 -

CF 基本上可以使用其流量管理器引导您通过它发送的流量。它将找到通往您的某个原始服务器的最快路由并保持该路由。但是,如果出现故障,您需要从其他位置提供内容 - CF 也可以在一个位置将负载平衡到多个服务器,或者从下一个最近的服务器提供服务。

解决故障转移问题 -

如前所述,CF 在 ping 您的原始服务器以获取状态更新并确保它们适合用途方面做得非常出色。但进一步说,CF 还会缓存通过其代理的某些类型的资产。这是他们的“始终在线”功能,即使原始服务器处于离线状态,它也会尝试为该内容提供服务。

解决服务器更新问题 -

我个人是围绕 Docker 容器化设计来设计我的所有环境的,这样我就可以进行“滚动更新”。这样,我可以更新、销毁,对我的应用程序映像进行任何合理的操作,并且知道它将以安全的方式传播。如果需要,这显然也可以回滚。但如果这是不可能的,CF 可以让你在该地理位置启动辅助 VM 来更新映像,并有效地热交换 DNS。

解决 HTTP 到 HTTPS 的重写问题 -

CF 还允许将规则应用于流量。其中之一就是您可以使用 301 HTTP 响应将所有 HTTP 流量重写为 HTTPS(不过您可以根据需要进行配置)。


(这确实假设与此相关的所有 DNS 记录都经过 CF 的 DNS 并且是“橙色云”)。

还有一些有用的资源可以为你指明正确的方向 -Cloudflare 流量管理器

相关内容