如何使用两个 ISP 为单个 Web 服务器设置故障转移?

如何使用两个 ISP 为单个 Web 服务器设置故障转移?

我有一台 Web 服务器和两个 WAN 连接(1 条电缆、1 条 DSL)。DNS 在异地运行,并指向其中一个 ISP 分配的 IP 地址。当主连接发生故障时,如何让第二个连接接管?

我发现可以有两个 A 记录,每个记录指向不同的 IP,但这有几个问题。真正的解决方案是什么?我想这是一个非常常见的问题。

附加信息:

该服务器实际上是一个电子病历服务器,必须位于办公室现场。他们的网站和 DNS 托管在一个大型托管设施中。

我认为办公室方面的计划类似于之前提到的 Peplink Balance 或Cradlepoint MBR-1200

Peplink 的 DNS 切换功能听起来像是一个解决方案,但我不确定我是否愿意将 DNS 放在他们的办公室而不是数据中心。我一定会进一步研究这个问题。

在与我们的托管机构沟通后,他们建议我们研究一下第三方服务,比如动态 DNS。我认为这基本上是一种监控服务,当一个 IP 出现故障时,它会进行切换。

速度确实不是问题;他们更关心高可用性。

答案1

我想这是一个非常普遍的问题。

其实不是。大多数甚至较小的网站都由处理此事的托管商运营。托管商拥有多个上行链路、自己的地址空间,并通过 BGP 向对等方公布其路由。

这也更加节省带宽,因为基本上……典型最终用户连接的上行速度非常糟糕。

我想说的是,大多数人都“不专业”到试图通过电缆/ DSL 链路运行网站......而且也没有两个连接。

答案2

我认为最“真实”的方法是获取一组 IP,然后通过 BGP 亲自向两个 ISP 公布这些 IP。这比电缆和 DSL 更像“真实”的连接。对于这些级别的连接,我认为使用 DNS 故障转移可能与您的设置相当。

正常的下一步是转向共置并从共置设施或数据中心本身提供的 ISP 获得稳定的连接。他们可以为您提供两个可能使用 HSRP 的分支,它们可以直接进入一个或多个交换机。这不会是完美的完全冗余,但却是向前迈出的一大步。

答案3

更新 DNS 是这里的关键。循环 DNS(多个 A 记录)本身不进行任何健康检查。您使用的是哪种类型的多 WAN 路由器?我知道PepLink 平衡系列包括路由器上的 DNS 服务器,当其链接断开时,它会更改记录。如果您的路由器无法自行执行此操作,您可能需要编写脚本或找到一个服务,从外部检查/轮询两个连接并定期更新 DNS 服务器。

此外,对于那些建议使用 coloc 的人来说 - 虽然这对于生产服务器来说是一个理想的答案,但很有可能这是一个可能正在安装或充当办公文件服务器的暂存/开发服务器,其中来自 LAN 的访问速度比上行速度和稳定性更重要。

答案4

拥有两个 A 记录确实不是提供故障转移 - 基本上,一半的用户将尝试连接到一个 IP,另一半将连接到另一个 IP,无论这些 IP 是否可用。

您可以使用动态 DNS 来实现这种故障转移。订阅任何动态 DNS 服务并在您的服务器计算机上设置动态 DNS 客户端。它会定期检查您的(可访问的)外部 IP,并且每当 IP 发生变化时,都会更新 A 记录。

如果您的 DNS 提供商不支持动态 DNS,您可以 - 将您的 DNS 移至其他提供商,或者订阅具有某些 3 级域的动态 DNS,并在主域上创建指向动态主机名的 CNAME 记录。(后者适用于 www.,但不适用于区域顶点)。

相关内容