有什么可靠的设备可以从外部检测我的互联网连接是否已中断?

有什么可靠的设备可以从外部检测我的互联网连接是否已中断?

我们在办公室的服务器上托管一些网站。我们有两个互联网连接,一个主连接和一个备用连接(具有单独的 IP 地址范围)。 我们需要能够从 LAN 外部检测到主互联网连接是否已失败。

我们使用一种特殊的 DNS 服务,当主地址离线时,该服务会将 DNS 记录切换为指向我们的备用 IP 地址。它通过 ping 服务器或在我们这边加载网页来检测我们的主地址是否已离线,如果失败,它会将我们的 DNS 切换到辅助 IP 地址。

我们确实让它检查了 Web 服务器上是否存在页面,但问题是,当我们重新启动 Web 服务器进行 Windows 更新时,它会认为互联网连接已断开并切换到辅助连接,这会导致问题。几分钟后,服务器重新启动后,它会切换回来。

直到最近,我的程序都是登录外部 DNS 并禁用故障转移,然后重新启动服务器,然后重新启用它。这不是最佳解决方案,因为必须在每个域的基础上设置故障转移,而且有相当多的域。

我希望故障转移检查始终处于 100% 开启状态的设备。最好 UPS 上没有移动部件,这样它就永远不会出现故障。我尝试使用 Hawking 打印服务器,它具有基于 Web 的界面,但它似乎不可靠,因为它检测到互联网连接已失败,但实际上并没有。最糟糕的情况是,我可以构建一台无风扇 PC,可能从 USB 启动,并且只运行精简版 unix 版本,带有一个提供一页服务的 Web 主机。

是否有任何简单的、 100% 可靠的设备可以投入使用并可 ping 通,或者提供可用的网页?

答案1

好的,所以我最初的回答假设您谈论的是故障转移 Web 服务器。您想要的与此完全不同。感谢您更新您的问题。

我们刚才所做的一切都是通过 BGP 实现的。我们有 2 家提供商,每家都为我们提供了一条 BGP 链路。然后,我们有一个 IP 范围,每家提供商都会通过 BGP 进行通告。当任一链路发生故障时,BGP 会负责路由网络。这就是链路中断时互联网的工作方式。您根本不需要更改 DNS,而且它比您现有的 DNS 更可靠,而且完全自动化。这对您来说是一个选择吗?


抱歉,但在我看来,故障转移正在按照您的意图运行。如果您重新启动服务器,则在服务器完全重新启动且服务启动之前,服务器不会提供任何内容。如果您不想检查 Web 服务器,那么只需进行简单的 ping 即可。但是,当用户尝试访问您的网站时,这仍然不是理想的选择,因为即使您可以 ping 通它,IIS 可能尚未启动。

使用 DNS 进行故障转移永远不可靠。看来您已经通过艰难的方式发现了这一点。

原因是 DNS 条目缓存在整个互联网上,DNS 缓存和服务器可以选择忽略您的 TTL 值,即使设置得相当低,例如 30 秒。如果您将其设置为 5 分钟,那么至少要等这么长时间才能恢复正常。无论如何,听起来您的备份服务器也没有按预期运行,还是只是一个静态网页,表示该网站暂时关闭?

有更好的解决方案,即故障转移 Web 服务器。我不清楚微软具体是如何做的,但我相信 Microsoft Cluster Server 是该产品的正确名称。或者您可以将 Web 服务器切换到 Linux。如果您需要 apache Web 服务器下的 .NET 支持,可以使用 mono 和 mod-mono。这些都是免费的。我认为 MS 集群服务器并不便宜。

第三个选项可能是在您的网络内设置一个 Linux 路由器。然后编写一个脚本,每分钟检查一次 Web 服务器。如果服务器宕机,该脚本可以更改路由或重定向到静态页面或其他服务器。您甚至可以使用 iptables 重定向来做到这一点。无论如何,这只是一些想法,我知道这是一个老问题了。

答案2

一些小型的单板计算机,例如Gumstix Overo基于微型计算机或树莓派可以。对于 Web 服务器,您可以使用 Python 内置的 Web 服务器和监控程序或其他 Web 服务器。

我已经运行 Gumstix 超过 3 周了,没有过热或停机。

相关内容