使用 BGP 实现 Web 服务器的 IP 级别故障转移(我疯了吗?)

使用 BGP 实现 Web 服务器的 IP 级别故障转移(我疯了吗?)

我曾考虑使用循环 DNS 故障转移,但由于 DNS 缓存级别不同,您可能会面临旧记录指向已关闭站点的风险。

如果我拥有自己的地址空间和 AS 编号,在数据中心 1 中,我可以从路由器向全世界宣布我的 1.1.1.x/x 网络,每个人都可以访问 1.1.1.1 处的负载均衡器,一切就都好了。然后,我可以在另一个数据中心使用相同的设置,那里的路由器也会向那里的不同上游提供商宣布我的 IP 空间和 AS 编号。用户显然会根据其本地 ISP 网络中的 BGP 的 AS-PATH 和其他指标访问离他们最近的设置。

现在,让我们假设数据中心 1 发生了一些可怕的事情,路由器 1 离线,我的 IP 空间和 AS 不再在那里发布,所有流量将回退到数据中心 2,流量将流向 1.1.1.1(负载均衡器)。人们会这样做吗?这是一个荒谬的想法吗?我是否错过了一些显而易见的关于为什么不应该这样做的原因?这不切实际,还是一个天才的计划?

答案1

它运行良好。只是需要更多的工程工作才能实现,您需要路由器、BGP 连接、您自己的 IP 空间等。我假设在上面的例子中,您的数据中心 1 和 2 一直在运行。

许多人都做得很好,查找“anycast”来了解您要做什么。这样做的大问题是它对基于 UDP 的服务(无状态)效果更好。如果您通过 HTTP 下载大型文件,并且路由器端发生中断,您的流量将转到新的 1.1.1.1,而它不知道发生了什么,并将断开连接。

答案2

除了 BGP,另一个选择是全局负载平衡。为了避免 DNS 传播,我一直在研究一种名为云杠杆的 SAAS 解决方案。他们使用 IPv6 Multicase 和专有负载平衡器来实现这一点。我们还没有采用它们,但这只是出于优先级考虑。

我知道它没有回答您的 BGP 问题,但为了以防万一,我还是想把它扔掉。

相关内容