如果不build议使用DNS故障转移,那是什么?

作为他非常stream行的问题的后续问题: 为什么不build议DNS故障转移? ,我认为,由于caching,DNS故障转移不是100%可靠的。

然而,最高票数的答案并没有真正讨论在两个不同的数据中心之间实现故障转移的更好的解决scheme。 唯一的解决scheme是本地负载平衡(单个数据中心)。

所以我的问题很简单,跨数据中心故障切换的真正解决scheme是什么?

整个数据中心需要closures或无法使用。 然后通过将IP地址路由到另一个数据中心来到达另一个数据中心的备份。 这将通过不再提供来自主数据中心的BGP路由公告来实现。 然后将使用辅助数据中心的辅助通知。

规模较小的企业通常不足以certificate便携式IP地址分配和自己的自治系统编号来宣布BGP路由的费用。 在这种情况下,供应商将多个地点是要走的路。

您必须通过您的原始IP地址或通过DNS所做的IP地址更改来联系您。 由于DNS不是按照“故障转移”意味着什么的方式来实现的(用户至less与TTL或某些caching服务器强加的TTL无法联系),因此转到备份站点相同的IP是最好的解决scheme。

这开始作为评论…但它太长了。

可悲的是, 上一个问题的大部分答案都是错误的:他们认为故障转移与TTL有关。 答案最多的是答案错误,尤其是没有提供资料。 TTL适用于整个区域logging,与循环赛无关。

从RFC 1794(这是关于循环DNS 服务

There is no use in handing out information with TTLs of an hour [or less] 

(IME距离你完全发射3个小时)。

从RFC 1035

 When several RRs of the same type are available for a particular owner name, the resolver should either cache them all or none at all 

RFC 1034规定了负面caching的要求 – 一种用于指示所有请求必须由授权DNS服务器(在这种情况下,TTL确实控制故障转移)的新鲜服务的方法 – 根据我的经验,对此的支持各不相同。

因为任何故障转移都必须在客户端堆栈中实现,所以它可以说并不是TCP / IP或DNS的一部分 – 事实上, TCP / IP 之上运行的SIP,SMTP,RADIUS和其他协议定义了客户端应该如何使用Round Robin – RFC 2616(HTTP / 1.1)在提及它应该如何performance时是显着的。

但是,根据我的经验,如果连接似乎比预期的要长,那么过去10年中编写的每个浏览器和大多数其他HTTP客户端都将透明地检查附加的A RR。 这不仅仅是我:

故障转移时间因实施情况而异,但在几秒钟之内。 这不是一个理想的解决scheme,因为(由于DNS的限制)发布失败的节点需要DNS TTL – 同时您必须依靠客户端检测。

循环法不能代替站点的其他HA机制。 但是它可以补充它(编写HAProxy的人推荐使用通过循环DNS访问的一对安装)。 它是跨多个站点实现HA的最佳支持机制:事实上,据我所知,它是唯一支持标准客户端上故障转移的机制。

双DC冗余最简单的方法是在两个站点之间build立L2 MPLS VPN,并维护两者之间的BGP会话。

然后你就可以在每台服务器上拥有一个物理IP,并在两者之间浮动一个虚拟IP(HSRP / VRRP / CARP等)。 你的DNS将被路由到这个特定的IP,并相应地指示。

接下来的考虑是脑裂 – 但这是另一个问题。

瞻博networking写了一篇关于使用MPLS进行双DCpipe理的优秀白皮书,您可以在这里获取PDF http://www.juniper.net/us/en/local/pdf/whitepapers/2000407-en.pdf