如何自动更改DNS Alogging,以便在发生故障时将我的站点指向辅助服务器?

我的主机向我收取每月50美元的费用,将我的服务器放在同一个VLAN上,以便使用networking负载平衡function创build一个群集。

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

有没有什么办法可以在不使用NLB的情况下创build群集? 也许是一些监视我的主服务器,并更改域名的DNS当它closures?

DNS是模拟故障转移的不好的select。 原因是

  • DNSlogging一段时间的有效时间,以实现实时故障转移,您需要将DNS条目上的TTL降低到如此之低,以致您网站的每个请求都会导致DNS查找。 这将严重拖慢您的访问者的经验
  • 有一些人怀疑,即使在今天的DNS TTL值很低的情况下,ISP和旧的破坏的名字服务器也不会这样做。
  • 使用循环法DNS不会提供故障转移function,因为平均有50%的请求会转到列出的每个IP上。 如果HTTP的更高级别的协议内置了重试,这实际上是可行的。

我的build议是

  • 如果您的第二台服务器位于同一托pipe公司,那么请考虑租用真正的负载平衡器,以供您自己使用,或者大多数托pipe公司可以租用您的部分共享负载平衡基础架构
  • 使用像传播或Linux HA服务器的东西分配服务到浮动虚拟IP在物理服务器之间传递。 集群中的服务器相互监视并决定谁是虚拟IP的当前所有者。

我强烈推荐阅读Theo Schlossnagle的Scalable Internet Architectures ,详细地介绍了这一点

你可以用ldirectord来设置一个单独的负载均衡盒,它监视你的web服务器,并且在任何一个当前活动的站点(通过扩展,当一个服务器停机时保持站点向上)之间的负载平衡。 我们使用这个解决scheme,允许我们在不影响网站正常运行时间的情况下重新启动我们的两个networking服务器。

事实上,如果你的networking服务器是linux的话,你可以在networking服务器上运行ldirectord ,并使用heartbeatldirectord在live box上运行。

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

一种方法是将您的站点放在两台不同的服务器上,然后在第三个位置有一个站点监视器,用于监视与主服务器的连接(DNS通常指向的位置)。 如果检测到站点已closures,请让监视器执行一个脚本,或者使用指定的备份服务器的IP地址来访问dynamicDNS提供程序(如我操作的DtDNS或DynDNS.com )的更新URL您的域/主机名。 这将更新DNSlogging并将stream量导向到您的备份Web服务器。 当主站点恢复在线状态时,监视可以运行另一个脚本或URL,将“真实”IP置回。

这里的一个关键是将DNS托pipe在提供者的系统中,以便您的域可以快速更新,并且保持足够低的TTL,以便访问者能够相对快速地redirect。

另一个原因是该网站必须从外部客观的位置进行监控。 您不能在站点上运行相同的Web服务器上的监视。 如果整个服务器出现故障,监控/更新方法会随之下降。

SimpleFailover或多或less地做你想要的。 记住DNS获取caching,所以这不是一个完美的解决scheme。

关于多个Alogging,最近我已经看到关于Vista和Win Server 2008实现RFC3484的讨论 ,这意味着你不能依靠循环,并可能从这些客户端加载不均匀的服务器。

DNS Made Easy可让您设置DNS,以便在服务器closures时将其指向其他地方。 在我们的情况下,我们有一个静态页面,说该网站已closures,稍后再试。

如果以这种方式使用DNS,则需要configuration相对较短的TTL以解决caching问题。