多站点高可用

Mik*_*ike 16 failover high-availability load-balancing fault-tolerance

我们有一个需要高度可用的 SaaS 应用程序。我们已经拥有一个昂贵且维护良好的 Hyper-V 故障转移集群,但今天我们托管该集群的数据中心断电了五个小时,使我们完全离线。所以现在我们想知道是否有更好的方法是在两个独立的数据中心使用服务器。假设我们让所有的后端文件复制和数据复制在这两个站点之间工作,我们想知道如何处理前端路由——难怪我们如何解决这个问题,我们总是以负载均衡器结束单点故障。

所以问题是......我们如何在两个托管站点之间设置负载平衡,以使负载平衡器不是单点故障?有没有办法使用两个单独的负载平衡器,每个站点一个?我们应该考虑轮询 DNS 吗?

Mar*_*son 14

要正确执行此操作,您需要:

  • 两个数据中心中的两个独立实例(正如您已经确定的那样)
  • 两个数据中心之间的同步(正如您已经确定的那样)
  • 发生故障时将客户端从一个重定向到另一个的方法

有两种常见的方法可以做到这一点。一个简单,一个……不是。

域名系统

循环 DNS 并不是您想要的,因为您可能希望所有请求都发送到主 DC,而第二个 DC 仅在第一个 DC 停机期间使用。

可以做的是在您的 DNS 上设置一个非常低的 TTL(例如,30 秒或 5 分钟),这意味着如果您的 DC 确实出现故障,您只需更新您的 DNS,并在 5 分钟左右,所有您的客户将指向您的另一个 DC。

这意味着因为您的两个 DC 将具有不同的 IP 布局,您需要在数据中心设置中对此进行调整。

BGP

基本上,如果您要问这个问题,那么这超出了您的能力范围。简而言之,您的 IP 地址保持不变,但它们从一个数据中心“移动”到另一个数据中心。这涉及昂贵的路由器、昂贵的 IP 范围以及对 AS 编号和 IP 范围的本地注册的昂贵订阅。

您的 BGP 路由器停止在您的主数据中心为您做广告,并开始在您的辅助数据中心进行广告。然后互联网在离线数据中心周围路由并将流量发送到您的新 DC。


如果您使用 ESXi 和 vSphere 进行虚拟化,VMWare 有一个非常好的产品,我们曾经试用过它,称为VMWare Site Recovery Manager,它基本上可以为您完成所有工作。它使您的 VM 配置保持同步,并在第一个站点脱机时在第二个站点上启动它们。虽然是大笔钱。