如何在出现故障时自动更改 DNS A 记录以将我的站点指向辅助服务器?

hol*_*ira 6 domain-name-system failover load-balancing

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

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

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

Dav*_*ney 9

DNS 是模拟故障转移的糟糕选择。原因是

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

我的建议是

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

我强烈推荐阅读Theo Schlossnagle 撰写的Scalable Internet Architectures因为他详细介绍了这一点

  • +1 - DNS _不是_高可用性_或_负载平衡的答案 (2认同)