主链路中断时的故障转移默认路由

主链路中断时的故障转移默认路由

我有 2 个 ISP,以及一个有两个 IP 地址的服务器,如下所示:

eth0: 161.0.0.2
eth1: 171.0.0.2

我设置了www.example.com两条A记录,这样我就有了DNS LB。

应用程序以这种方式工作正常,并且 Linux 盒子设置了基于策略的路由,以避免连接的不对称路由。传出数据包通过建立传入连接的同一接口离开。

现在,剩下的唯一问题是我设置了一个默认网关,161.0.0.1.我也想实现 LB 或至少对传出连接进行故障转移。

我可以做到的一种方法是使用 cronjob 来 ping 某些主机,如果 ping 失败,则将默认路由更改为171.0.0.1,但这种方法似乎太不可靠了。

关于如何故障转移默认路由有什么建议吗?

答案1

如果您不想了解真正的路由协议,最好的建议是连续运行程序,定期 ping 前两个跃点(使用您编造的地址,即 161.0.0.1 和 171.0.0.1)并安装其中的一个作为默认路由进行响应。您可能可以使用您选择的脚本语言来完成此操作,尽管我自己可能会使用 C 语言来完成此操作。事实上,我有(但不再能找到该代码)。它非常简单且正确,并且用 C 语言实现可以大大降低对服务器的影响。

答案2

我有一个答案,尽管你不会喜欢它。 DNS 中的多个 RR A 不会为您带来高可用性。答案很大程度上取决于客户端/他们的 DNS 服务器。

如果客户端解析了已关闭的 ISP 的 IP 地址,它会将其保留在缓存中,并且不会尝试其他客户端,因此您将拥有一组可以访问的客户端,而其他客户端则抱怨该站点已关闭。

低 TTL 也无济于事,因为一些 DNS 客户端/大型 ISP 以忽略低 TTL 而闻名,因此即使 DNS 中的 TTL 较低,您也会有一组无法访问的客户端。

可能的解决方案之一是使用 CND 的服务,例如云耀,并在那里配置两个 IP 地址。

另一种获得外部路由冗余的更复杂方法是​​请求 AS 编号,为两个网络使用提供商独立的 IP 地址空间,并与提供商进行 BGP 对等。

至于离开时的路由,为了利用两个ISP的流量,我建议制定策略以使用相应的网关、基于源的路由。http://www.novell.com/support/kb/doc.php?id=7008874

相关内容