Answers:
要正确执行此操作,您需要具备:
有两种常见的方法可以做到这一点。一个简单,一个...不。
轮循DNS并不是您想要的,因为您很可能希望所有请求都发送到主DC,而第二个DC仅在第一个DC的停机期间使用。
不过,您可以做的是将DNS的TTL设置为非常低的TTL(例如30秒或5分钟),这意味着,如果DC确实出现故障,您只需在5分钟左右的时间内更新DNS,您的客户将指向您的其他DC。
这意味着,由于您的两个DC具有不同的IP布局,因此您需要在数据中心的设置中对此进行调整。
基本上,如果您要问这个问题,那么这是您无法企及的。简而言之,您的IP地址保持不变,但是它们已从一个数据中心“移动”到另一个数据中心。这涉及昂贵的路由器,昂贵的IP范围,以及对本地注册的AS编号和IP范围的昂贵订阅。
BGP路由器停止在主要数据中心发布广告,并开始在辅助数据中心发布广告。然后,Internet在脱机数据中心周围路由,并将流量发送到新的DC。
如果您是使用ESXi和vSphere虚拟化的,则VMWare拥有一个相当不错的产品,我们曾经对其进行过试用,称为VMWare Site Recovery Manager,它基本上可以为您完成所有工作。它使您的VM配置保持同步,并在第一个站点离线时在第二个站点上启动它们。虽然这是一大笔钱。
您需要对负载均衡器进行负载均衡。
您可以使用DNS轮询来做到这一点,但是这种方法存在许多问题。您无法控制缓存条目的时间超过所需时间的客户端,也不能强制流量流向特定位置。
您也可以使用全局服务器负载平衡(GSLB)进行此操作。这是利用DNS的更高级方法,可让您从Internet看到多个数据中心。简而言之,您可以设置某种机制将流量分成多个切片,然后使用DNS来选择一个切片。我们使用DNS解析器的哈希值,该哈希值配置为对客户端进行查找。其他人则使用地理位置来路由到“最近的”数据中心。如果该数据中心或群集出现单点故障,则需要添加某种机制以快速从GSLB中删除IP。
http://www.eukhost.com/web-hosting/kb/global-server-load-balancing/
最后,一些真正高级的人使用Anycast DNS解决了这个问题。这再次尝试利用“最接近的”数据中心方法。任播您的服务意味着您将需要消除任何“状态充实”。这可能很难证明。