我想实现 Round Robin DNS 但不是为了负载平衡

Coo*_*rrr 3 domain-name-system

我有一项在大型托管设施中的服务器上运行的服务。此服务器是其他服务器报告通知 up/down 的地方。很基本的东西。每个远程服务器上的客户端代理都有 1 个条目指向 - 报告 - 并且该软件没有容错能力。

我想要做的是实现循环 DNS 来处理 colo 监控服务器的主要互联网连接。这个系统有一个很大的连接,但是如果它脱机,我会收到一堆错误警报,说代理服务器脱机 - 当它们实际上没有 - 它是 colo 线路已关闭或该线路的防火墙已关闭。

如果我在 DNS 中做 2 个条目,第一个是大带宽和主防火墙,第二个是较低带宽和较小的防火墙。那么来自目标代理的这些“我在线/离线”的小包会更好吗?我知道这不是最佳选择,但该软件没有用于代理尝试的 2 个单独条目的代码。报告服务器并未脱机,其坚如磐石(双 sans 和 3 个 VMWare 服务器 - 冗余)......但我在防火墙和主线上有一个单点故障。如果该线路或防火墙出现故障,只是想尝试使其更好一点。

想法?

Wes*_*ley 8

如果我在 DNS 中做 2 个条目,第一个是大带宽和主防火墙,第二个是较低带宽和较小的防火墙。那么来自目标代理的这些“我在线/离线”的小包会更好吗?

不。如果您的主防火墙关闭,将会发生以下情况:

  1. 客户端系统执行 DNS 查询并获取指向主防火墙的条目 #1。
  2. 您的客户端现在有一个 IP 地址。DNS 的责任已经完成。
  3. 客户端尝试访问 IP 地址,但该地址没有连接。
  4. 痛苦的眼泪。

DNS 是一个简单的键值存储,除此之外一无所知。如果它们使用循环法,您的系统仍然会失败。公平地说,他们有一半的时间会失败,这意味着在另一部分时间会成功。在其中一个防火墙关闭的情况下,循环将在一半的时间内给出您的托管空间中正常运行的防火墙/互联网连接的 IP 地址,结果非常不可预测。在任何时候,有两个防火墙往下两个循环赛的一个条目,一半只有一些的DNS查询将是正常运行的IP地址。所以,从好的方面来看,我想这总比没有好?

该问题的真正解决方案是通过更好的提供商、SLA 和硬件使连接更加可靠,或者使用某种链接绑定。使用类似 Elfiq 负载均衡器的东西来管理绑定。当然,这会引入新的单点故障。然后,您可以在主动/被动集群中将 Elfiq 加倍。然后你会注意到它们都在同一个电源电路上,所以你的机柜有一个单独的电源下降。然后你注意到两个电路在同一个网格上......

...然后您意识到永远不会有 SPOF 不存在的时候,因此您只需将该 SPOF 转移给另一个人,这样您就可以责怪他们,或者转移到足以令人惊叹的设备/系统你晚上睡觉。直到您意识到您的开发人员不会检查应用程序的输入。

  • 请记住,您的系统使用哪个 DNS 记录的选择是不确定的(取决于本地解析器)。可能的结果是“始终使用返回的第一条记录”、“始终使用返回的最后一条记录”、“从集合中随机选择一条记录并始终使用该记录”、“每次查找集合中的每条记录时都循环使用name from my local cache", "每次从本地缓存中查找名称时,从集合中随机选择一条记录"。为了让事情变得更有趣*** 没有规则说明 DNS 服务器需要以何种顺序返回记录... (5认同)

vor*_*aq7 6

您想要的不是 DNS Round Robin,而是冗余连接(您的主机提供商应该已经提供给您,至少在他们的边缘。如果他们没有多个冗余上行链路和正确的路由配置以在一个链接断开时进行故障转移去寻找一个新的托管设施)。

如果您有一个防火墙/网络上行链路,并且该单点故障对您来说是不可接受的,那么是时候投资冗余防火墙和连接到 ISP 核心的冗余链接(最好通过不同的接入交换机)。几乎任何名副其实的商业防火墙都可以做到这一点。如果预算有限,您甚至可以使用免费防火墙来实现。