作为他非常流行的问题的后续问题:为什么不推荐DNS故障转移?,我认为大家一致认为,由于缓存,DNS故障转移并不是100%可靠的。
然而,最高投票的答案并没有真正讨论在两个不同的数据中心之间实现故障转移的更好解决方案。提出的唯一解决方案是本地负载平衡(单个数据中心)。
所以我的问题很简单,跨数据中心故障转移的真正解决方案是什么?
发布于 2012-09-06 03:56:03
一个完整的数据中心需要停机或无法到达才能应用。您在另一个数据中心的备份将通过将IP地址路由到另一个数据中心来实现。这将通过不再提供的主数据中心的BGP路由公告来实现。然后将使用来自辅助数据中心的辅助通知。
规模较小的企业通常不足以支付可移植IP地址分配和自己自主的系统编号来宣布BGP路由的费用。在这种情况下,提供程序需要多个位置。
您必须通过您的原始IP地址,或通过更改IP地址通过DNS。由于DNS的设计并不是按照“故障转移”含义所需的方式(只要您的TTL或某些缓存服务器强制使用的TTL,用户可能无法访问),所以使用相同的in到备份站点是最好的解决方案。
发布于 2012-09-06 11:49:50
这是从comment...but开始的--时间太长了。
可悲的是,前一个问题的大多数答案都是错误的:他们认为故障转移与TTL有关。最高投票的答案是SPECTACTULARLY错误的,值得注意的是没有引用任何消息来源。TTL适用于作为一个整体的区域记录,与Round无关。
来自RFC 1794 (这是关于循环罗宾DNS服务)
There is no use in handing out information with TTLs of an hour [or less]
(IME
来自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列出了负缓存的要求--这是一种指示所有请求必须从权威DNS服务器新鲜处理的方法(在这种情况下,TTL确实控制故障转移)--在我的经验中,对此的支持各不相同。
由于任何故障转移都必须在客户端堆栈中实现得很高,因此可以说,它不是TCP/IP或DNS的一部分--实际上,SIP、SMTP、RADIUS和其他在TCP/IP之上运行的协议定义了客户机应该如何与Round 2616 (HTTP/1.1)一起工作,这在没有提到它应该如何工作的情况下是值得注意的。
但是,根据我的经验,过去10年中编写的每个浏览器和大多数其他HTTP客户端都将透明地检查附加的A RRs,如果连接所用的时间似乎比预期的要长。不仅仅是我:
故障转移时间因实现而异,但在秒范围内。这不是一个理想的解决方案,因为(由于DNS的限制),发布失败的节点需要DNS TTL -同时,您必须依赖客户端检测。
圆罗宾并不是一个网站内其他HA机制的替代品.但是它确实是对它的补充(编写HAProxy的人推荐使用通过循环DNS访问的一对安装)。它是跨多个站点实现HA的最佳支持机制:实际上,据我所知,它是标准客户端上唯一可用的故障转移机制。
发布于 2012-09-06 13:17:48
实现双DC冗余的最简单方法是在两个站点之间建立一个L2 MPLS,同时维护两个站点之间的BGP会话。
实际上,您可以在每台服务器上拥有一个物理IP,并在这两个服务器之间浮动一个虚拟IP (HSRP/VRRP/CARP等)。您的DNS将被路由到这个特定的IP并相应地定向。
下一个考虑是大脑分裂--但这是另一个问题。
Juniper写了一份很好的关于MPLS双DC管理的白皮书,您可以在这里获取http://www.juniper.net/us/en/local/pdf/whitepapers/2000407-en.pdf的PDF。
https://serverfault.com/questions/424785
复制相似问题