我们有一个SaaS应用程序,我们需要高度可用。 我们已经有了一个维护良好的,维护良好的Hyper-V故障转移群集,但是今天我们托pipe这个群集的数据中心有五个小时的停电,导致我们完全脱机。 所以现在我们想知道更好的方法是在两个独立的数据中心使用服务器。 假设我们获得了这两个站点之间的所有后端文件复制和数据复制,我们想知道如何处理前端路由 – 难怪我们如何处理这个问题,我们总是结束负载均衡器单点故障。
所以问题是…我们如何build立两个托pipe站点之间的负载平衡,使负载平衡器不是单点故障? 有没有办法使用两个独立的负载平衡器,每个站点一个? 我们应该考虑循环赛DNS吗?
要做到这一点,你需要有:
有两种常见的方法来做到这一点。 一个简单的,一个…不。
循环DNS不是你想要的,因为你可能想要所有的请求去主要的DC,而第二个DC只在第一个DC的停机时间使用。
你可以做的是在你的DNS上设置一个非常低的TTL(比如说30秒,或者5分钟),这意味着如果你的DC确实下降了,你只需更新你的DNS,5分钟左右,你的客户将指向你的其他DC。
这意味着,因为您的两个DC将有不同的IP布局,您需要在数据中心的设置中对此进行调整。
基本上,如果你问这个问题,那么这是不可能的。 简而言之,您的IP地址保持不变,但是它们从一个数据中心“移动”到另一个数据中心。 这涉及到昂贵的路由器,昂贵的IP范围,以及昂贵的本地注册机构对AS号码和IP范围的订阅。
您的BGP路由器停止在您的主要数据中心发布广告,并开始在您的辅助数据中心进行广告宣传。 然后互联网路由离线数据中心,并将stream量发送到您的新DC。
如果使用ESXi和vSphere进行虚拟化,VMWare会有一款非常不错的产品,我们曾经试用了一款名为VMWare Site Recovery Manager的产品 ,它基本上为您做好了一切准备。 它使您的虚拟机configuration保持同步,并在第一个站点下线时在第二个站点上启用它们。 虽然是大钱。
您需要对负载平衡器进行负载平衡。
你可以用DNS循环做这个,但是这个方法有很多问题。 您无法控制caching条目超出所需长度的客户端,也无法强制stream量到达特定位置。
您也可以使用全局服务器负载平衡(GSLB)来执行此操作。 这是一个更高级的方式来利用DNS,让您从互联网上看到多个数据中心。 简而言之,您设置了一些机制将stream量分成多个切片,并使用DNSselect一个切片。 我们使用configuration的DNSparsing器的散列来为客户端进行查找。 其他人则使用地理信息路由到“最近的”数据中心。 您需要添加某种机制,以便在该数据中心或群集的某个单点故障停止时,快速从GSLB中删除IP。
http://www.eukhost.com/web-hosting/kb/global-server-load-balancing/
最后,一些真正先进的人用Anycast DNS来解决这个问题。 这又试图利用“最接近”的数据中心方法。 select服务意味着您将需要消除任何“状态”。 这可能很困难。
几年后…但对于那些仍然在看这些似乎是最经济实惠/简单的DNS故障转移解决scheme: