我有一个网站,开始有大量流量,就在前几天,我们的负载均衡器 (haproxy) 所在的数据中心发生了网络中断。这让我很担心,因为尽管我尽了一切努力使系统完全冗余,但我仍然无法使我们的 DNS 冗余,我认为这不是一个简单的解决方案。
我唯一能找到的就是从 dnsme 等网站注册 DNS 故障转移服务……但对于初创企业来说,这些服务的费用太高了。即使是他们的企业计划也只提供每月 5000 万次查询,而我们在一周内就用完了。
所以我的问题是,是否有任何自托管 DNS 可以让我们提供像 dnsme 那样的故障转移功能?
答案1
DNS 的设计旨在实现冗余。在不同的数据中心设置两个绑定服务器。将其中一个设置为另一个的从属服务器。确保两个服务器均列在您的域名注册商处。完成。
以下是随机选择的有关设置从属服务器的指南:http://docstore.mik.ua/orelly/networking_2ndEd/dns/ch04_08.htm
好的,您正在通过将 A 记录切换到不同的 IP 地址来寻求故障转移。如果您使用 BIND 作为名称服务器,这也很容易做到。您可以编写一个脚本,该脚本将调用 nsupdate 来添加/删除/更改您的 DNS 记录。无论您使用哪种集群或监控系统,都可以检查您的负载均衡器是否无法访问,并将 DNS 记录更改为指向仍然有效的记录,或者使用循环 DNS 删除失败的节点,并在它们恢复时将其重新添加。
答案2
我做了类似的事情,并在世界各地的几个数据中心运行多个 haproxy 实例(甚至每个数据中心都集群有故障转移)。我还需要基于 GeoIP 的流量隔离到这些不同的数据中心,所以我选择了 Dyn.com 的“高级流量管理”解决方案,它允许将世界不同地区的服务提供给它们全球最快的位置,但也可以像您寻找的那样处理监控和故障转移。Dyn(我相信还有其他公司)提供监控/故障转移解决方案作为独立产品,例如,http://dyn.com/dns/dynect-managed-dns/active-failover/
如果您想以低成本完成此操作,并且当您说 haproxy “关闭” 时,意味着由于数据中心中断而没有响应,您可以尝试为每个请求提供来自 DNS 服务器的多个 A 记录。这实际上会将请求轮询到不同的服务器,如果第一个服务器失败,则让客户端尝试其他服务器。
不过,我还是建议使用托管解决方案,因为对我来说效果很好。我认为 DnsMadeEasy 也提供了类似的地理分布产品,其中也包括监控功能(比 Dyn 的产品更便宜)。
当然,您可以自己构建一些解决方案,但您应该考虑这样做的总成本与专注于公司提供的核心服务。一切都是权衡利弊…… :)
此外,如果您的 DNS 查询量达到每周 50M,除非您有大量一次性访问者(我实际上有很多),否则这听起来很多。确保您的 TTL 设置不要太低。如果太低,您可能会预期您将不得不为托管服务支付比您所需的更多费用。