延迟负载均衡+故障切换解决scheme

我正在寻找与dynamic故障切换相结合的延迟(或地理位置)负载平衡解决scheme。

该基础设施基于OVH的3名专职服务器。 服务器位于3个不同的地理位置(加拿大,法国和澳大利亚)。

我正在努力实现的东西很less:

  1. 访问服务的客户端被redirect到最近的服务器,所以响应很快。
  2. 如果一台服务器停止服务,则请求将转到另一台服务器,最终用户将得到响应。
  3. 故障转移条件下,用户得到答案更重要,而不是快速响应。
  4. 我需要有可能重新启动服务器升级或偶尔的事情。 所以魔法必须在主服务器之外。
  5. stream量通过HTTPS,但HTTP将redirect到HTTPS。

问题的小例证

我只对HTTPstream量感兴趣。 每个请求必须去服务器,没有什么可以被caching,因为响应是非常dynamic的。

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

OVH具有IP负载平衡,但是我不能使它工作,我没有find解决问题的选项1。

我对包括使用第三方服务在内的任何提示或解决scheme感兴趣。

我也在考虑在每个位置(靠近主服务器的每一个)购买3台VPS服务器,这些服务器将充当网关。 在这样的解决scheme中,我可以使用AWS Route 53为VPS服务器提供延迟负载平衡,服务器将处理故障转移。 根据定义,它们将在100%的时间内处于活动状态,而主服务器将在不停机的情况下进行重新启动。

要更新我的答案 – 所有这些都是可选的。 可以closurescaching以允许dynamic响应。 只有在需要时才能通过HTTP提供stream量。

我当然喜欢的一个解决scheme是Cloudflare。 它几乎可以解决所有的问题,假设您使用的是HTTP / HTTPS,并且没有其他协议在原始问题中没有提到。

处理基于地理定位的内容服务 –

CF基本上可以通过stream量pipe理器引导您通过它发送的stream量。 这将find您的原始服务器之一的最快捷的路线,并保持这一点。 如果某些事情失败了,你需要从不同的位置服务内容–CF也可以在一个位置对多个服务器进行负载平衡,或者从下一个最近的服务器进行服务。

解决故障转移方面 –

如前所述的CF做了一个惊人的工作,在ping你的原始服务器进行状态更新,并确保它们适合用途。 但为了扩大这一点,CF还会caching通过其代理的某些types的资产。 这是他们的“始终在线”function,即使原始服务器处于脱机状态,也会尝试对该内容进行服务。

解决服务器更新 –

就我个人而言,我围绕着一个Docker集装箱式devise来devise我的所有环境,这使我可以进行“滚动更新”。 通过这种方式,我可以更新,销毁,在我的应用程序映像中进行任何理由的操作,并知道它将以安全的方式传播。 这显然也可以在需要的时候回滚。 但是,如果这是不可能的,那么CF可以允许您在该地理位置启动一个辅助虚拟机来更新映像,并有效地热交换DNS。

处理HTTP重写 – > HTTPS –

CF还允许将规则应用于stream量。 其中之一意味着你可以用一个301 HTTP响应来重写HTTPS的所有HTTPstream量(可以configuration,但是你想要的)。


(这确实假设你所有的DNSlogging都通过了CF的DNS,并且是'橙色阴云')。

还有一些有用的资源指向你正确的方向 – Cloudflarestream量pipe理器