10

当服务器关闭时,如何使站点自动显示一个漂亮的“当前离线”页面(我的意思是,整个服务器都关闭并且请求无法到达 IIS)

手动更改 DNS 不是一种选择。

编辑:我正在寻找某种 DNS 技巧来重定向到其他服务器,以防主服务器出现故障。我可以对 DNS 进行永久性更改,但不能在服务器出现故障时手动更改。

4

8 回答 8

6

我使用DNSMadeEasy的正常运行时间服务取得了巨大成功。实际上,他们将 DNS TTL 设置为非常低的数字(5 分钟)。他们负责 ping 您的服务器。

如果发生中断,DNS 查询会被定向到辅助 IP。在 DNS 要求有限的小商店中“热备件”的绝佳选择。我已经使用它们 3 年了,没有一分钟的停机时间。

编辑:

这允许地理上冗余的故障转移,而提议的 NLB 解决方案没有解决这个问题。如果网络连接断开,标准 NLB 配置中的两台服务器都将无法访问。

于 2009-04-16T15:14:17.817 回答
3

某些服务器需要发出“当前离线页面”,因此如果您的服务器完全关闭,则必须有其他服务器为文件提供服务,因此您可以设置一个服务器集群(即使只是2)当第一个关闭时,第二个配置为仅返回“当前离线页面”。备份第一台服务器后,您可以安全地关闭第二台服务器(因为服务器 1 将承担所有负载)。

于 2009-04-16T15:03:25.910 回答
2

您可能需要第二台具有 100% 正常运行时间的服务器,然后添加某种故障转移负载平衡器。到它,如果主服务器在线重定向到它,如果它没有重定向到它本身,则显示一个页面说服务器已关闭

于 2009-05-13T09:42:06.857 回答
1

我相信如果服务器宕机了,你也无能为力。该请求将发送404网络错误,因为当 Web 地址解析为 IP 时,所请求的 IP 不存在(因为服务器已关闭)。如果您无法更改 DNS 条目,那么客户端浏览器将继续点击 xxx.xxx.xxx.xxx 并且永远不会得到响应。

如果服务器已启动,但网站已关闭,您可以选择。

编辑

您的编辑提到您可以永久更改 IP。但是您仍然需要两个服务器设置才能实现您所说的。您可以将 DNS 定向到能够将请求定向到当前处于活动状态的服务器的负载均衡器。但是,这仍然需要 DNS 指向的服务器 100% 的正常运行时间。

无论如何,如果 DNS 指向的服务器(您必须控制它以重定向流量)已关闭,那么所有请求都将收到404网络错误。

编辑感谢布赖恩指出我的 404 错误错误。

于 2009-04-16T15:03:09.903 回答
1

说真的,DNS不是服务器负载平衡或故障转移的正确答案。太多系统(包括存根客户端和 ISP 递归解析)将缓存记录的时间长于指定的 TTL。

如果两台服务器在同一个网络上,则使用路由协议通过让两台服务器向网络提供相同的 IP 地址来实现故障转移,但故障转移服务器仅在检测到(假定的)活动服务器时才会接管离线。

如果服务器是 Unix,这很容易通过在每台服务器上运行 Quagga,然后使用 OSPF 作为本地路由协议来完成。我个人将它用于冗余系统实际上位于另一个数据中心的热备用服务器,尽管它通过直接链接连接到主数据中心。

于 2009-04-16T16:00:11.893 回答
1

Certain DNS providers, such as AWS's Route 53, have a health-check option, which can be used to re-route to a static page. AWS has a how-to guide on setting this up.

于 2017-03-28T15:29:06.410 回答
0

我在想如果站点是负载平衡的,负载平衡器本身会检测到它试图将客户端重定向到的 Web 服务器已关闭,因此它会将用户发送到备份服务器,并带有指示技术问题的消息。

除此之外.....

于 2009-04-16T15:03:18.873 回答
0

我唯一能想到的就是控制调用页面。显然,这在所有情况下都不起作用......但是如果您知道对该服务器的大部分点击将来自特定来源,那么您可以将 java 脚本测试添加到源,并重定向到“服务器关闭" 在不同服务器上生成的页面。

但是,如果您试图处理来自所有来源的所有命中(其中一些是您无法控制的),那么我认为您不走运。正如其他人所说 - 当服务器关闭时,浏览器在尝试连接时会收到 404 错误。

...也许在两者之间有一种方法可以检测服务器返回的 404 错误并将其替换为“服务器已关闭”网页。您需要在服务器和 Web 客户端之间安装 HTML 防火墙或其他一些中间网络设备。

于 2009-04-16T15:14:57.660 回答