如果发生故障,如何自动更改 DNS A 记录以将我的网站指向辅助服务器?

如果发生故障,如何自动更改 DNS A 记录以将我的网站指向辅助服务器?

我的托管公司向我收取每月 50 美元的费用,以将我的服务器放在同一个 VLAN,以便我使用网络负载平衡功能创建集群。

我确实不需要在服务器之间分担负载,我正在寻找一种简单的方法来创建故障转移方案以防止服务器故障。但是,我认为这笔费用有点贵。

有什么方法可以创建不使用 NLB 的集群吗?也许可以监视我的主服务器并在主服务器发生故障时更改域的 DNS?

答案1

DNS 不是模拟故障转移的良好选择。原因如下

  • DNS 记录在一段时间内有效,为了实现实时故障转移,您需要将 DNS 条目的 TTL 降低到非常低的水平,以便对您网站的每个请求都会导致 DNS 查找。这会严重降低访问者的体验
  • 有人怀疑,即使是现在,具有非常低 TTL 值的 DNS 条目也不受 ISP 和较旧的名称服务器的尊重。
  • 使用循环 DNS 不会提供故障转移,因为平均 50% 的请求将发送到列出的每个 IP。如果 HTTP 的高级协议内置了重试功能,这实际上会起作用。

我的建议是

  • 如果你的第二台服务器位于同一家托管公司,那么可以考虑租用一个真正的负载平衡器,供你自己使用,或者大多数托管公司可以向你出租其部分共享负载平衡基础设施
  • 使用 spread 或 linux HA 服务器之类的工具将服务分配给在物理服务器之间传递的浮动虚拟 IP。集群中的服务器相互监视并确定谁是虚拟 IP 的当前所有者。

我强烈建议阅读可扩展的互联网架构作者:Theo Schlossnagle他对此进行了详尽的报道

答案2

你可以设置一个单独的负载平衡盒董事,它可以监控您的 Web 服务器,并在当前运行的服务器之间进行负载平衡(并且,当一台服务器发生故障时,网站仍可正常运行)。我们使用此解决方案,可以重新启动两台 Web 服务器中的任意一台,而不会影响网站的正常运行时间。

事实上,如果你的 Web 服务器是 Linux 系统,你可以运行董事在网络服务器上,并使用心跳保持董事在直播盒上运行。

此解决方案允许您在两个或多个盒子之间共享一个公共 IP 地址(或多个),并完全避免 DNS 问题。

答案3

一种方法是将您的网站放在两个不同的服务器上,然后在第三个位置安装一个网站监视器,​​以监控与主服务器(您的 DNS 通常指向的位置)的连接。如果它检测到网站已关闭,请让监视器执行脚本或点击动态 DNS 提供商的更新 URL(例如域名解析服务[由我经营],或DynDNS网站) 替换为您的域/主机名指定的备份服务器的 IP 地址。这将更新 DNS 记录并将流量引导到您的备份 Web 服务器。当主站点重新上线时,监控可以运行另一个脚本或 URL,将“真实”IP 放回原处。

这里的一个关键是让 DNS 托管在其系统中具有 API 的提供商,以便您的域名可以快速更新,并且保持 TTL 足够低,以便访问者可以相对快速地重定向。

另一个原因是,必须从外部、客观的位置监控网站。您不能在网站所在的同一台 Web 服务器上运行监控。如果整个服务器瘫痪,监控/更新方法也会随之瘫痪。

答案4

DNS 变得简单允许你设置 DNS,这样如果服务器宕机,它会将你指向其他地方。在我们的例子中,我们有一个静态页面,上面写着该网站已关闭,请稍后重试。

如果您以这种方式使用 DNS,则需要配置一个相对较短的 TTL 来解决缓存问题。

相关内容