跨机房故障转移设计,DNS层面的故障转移?

11

我对Web应用的跨机房故障转移策略感兴趣,以便如果主站点发生故障,用户可以无缝地转到另一个机房的备用站点。

就应用程序而言,大部分已经解决了,在机房之间设置主从数据库,并设计了可以恢复并能够在运行中断时继续执行的服务。我正在尝试找出从主站点向备用站点转移流量的策略。即使使用低TTL的DNS故障转移,似乎也存在相当大的延迟

如果假设主机房的服务器不可访问,您会推荐哪些快速移动机房之间流量的策略?

如果您有其他有趣的经验/智慧之言关于跨机房故障转移,我也很愿意听取。

3个回答

4
DNS基于机制很麻烦,即使您在区域文件中设置了低TTLs也无法解决。这是因为许多应用程序(例如MSIE)维护自己的缓存,而这些缓存会忽略TTL。其他软件将执行单个gethostbyname()或等效调用并存储结果,直到重新启动程序为止。更糟糕的是,许多ISP的递归DNS服务器已知会忽略低于其首选最小值的TTL,并强制实施自己更高的TTL。
如果该站点要从两个数据中心运行而又不改变其IP地址,则最终需要通过全局BGP4路由公告来进行“多宿主”安排。使用多宿主,您需要获得至少一个/24的“提供者独立”(又名“PI”)IP地址空间,然后仅在主站点离线时从备份站点向全局路由表公告。

现在正在阅读Multihoming维基百科页面,非常感谢。您对这种技术的有效性和设置难度有什么建议吗? - Parand
这个问题有点棘手,实际上需要ISP级别的建议,并且还需要两个站点提供连接的网站的合作。并不是所有的ISP都允许客户自己宣布路由。 - Alnitak

3

关于DNS,我喜欢参考 "为什么基于DNS的全球服务器负载平衡不起作用"。对于其他所有内容,使用BGP

使用BGP设计网络以实现负载均衡仍然不是一项易事,并且我自己肯定也不是专家。它比维基百科上介绍的更加复杂,但是有一些有趣的文章详细介绍了如何实现:

如果您搜索BGP和负载平衡,您将会发现更多内容。互联网上还有一些白皮书描述了Akamai如何进行全球负载平衡(我认为也是使用BGP),这总是很有趣的阅读和学习。

除了您可以使用软件和硬件实现的明显概念外,您可能还希望与您的ISP/提供商/colo联系以设置您的系统。

另外,关于您选择的colo(提供者是谁?)没有冒犯之意,但大多数地方都应该设置好应对停机等问题,不应要求您采取行动。当然,洪水或外星人总是可能袭击,但在那种情况下,我想有更重要的问题需要解决。 :-)


根据我的经验和与使用各种colo提供商的朋友聊天的情况,我找不到一个没有因为colo提供商而遭受任何形式的停机时间的人。我希望能找到一个优雅地处理这个问题的提供商,请随意推荐。 - Parand
我知道你在说什么。但是,例如我们从未与ServerCentral遇到过任何问题。在欧洲,我正在Telial POP中进行合作。虽然昂贵,但没有问题!在PEER1(纽约市),我们一直很好,实际上当他们的路由器电源失败时,我们遭受了轻微的停机时间。 :( - Till

0

多播没有用 - 其余的互联网将对此毫不知情。 - Alnitak
多播将取决于机房之间的对等连接。任播则可以在整个互联网上运行。你可能错过了我帖子中的这一部分,我不小心在完成之前保存了帖子... :-) - Brian Knoblauch
确实 - 那时候它还不存在。然而,anycast通常用于无状态UDP服务,并且与TCP不兼容(请参阅维基百科文章中的注意事项)。 - Alnitak

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接