在阅读了负载分配替代方案并考虑到我在该领域的有限技能后,我倾向于循环 DNS 策略。
据我所知,DNS Round-Robin 的一个关键方面是设置较低的 TTL 值,避免缓存。
我主要担心的是,我的所有流量都来自移动网络,其中近 30% 来自 T-Mobile 3G。以下是一些问题:
1) 是否有可能同一移动网络上的几乎所有客户端都会被重定向到 TTL 帧中的同一 IP? 这将破坏分发技术。
2) 如果我选择非常低的 TTL(零或一)。这会直接影响客户端性能吗?每次都会发生 DNS 丢失,还是这个设置只影响 DNS 服务器?
任何帮助都将不胜感激。谢谢
答案1
- 每次连续查找都会重新排序 A 记录,大多数客户端会将多 A 记录响应解释为使用列表中的第一个。如果您有许多客户端使用同一个 DNS 缓存 DNS 服务器,您可能会看到负载不平衡。
Android 默认会缓存 DNS 10 分钟。需要考虑这一点。
- 设置较低的 TTL 将影响您的 DNS 服务器负载,但由于该协议非常轻量,因此除非您的规模很大,否则这并不重要。
另外,考虑 A 记录列表中的某个 IP 失败的情况。
答案2
我建议你看看这个问题,它可以让您了解 DNS 循环的工作原理及其主要缺点。
关于您的具体问题:
这是 DNS 循环的主要缺点之一,因为记录不仅缓存在 DNS 层次结构本身中,还缓存在操作系统和浏览器或其他应用程序中。所有这些缓存级别的组合可能非常难以管理。
我想说影响很小但可以衡量,但我不建议这样做,因为它不能解决真正的问题。需要考虑以下几点:许多 DNS 解析器不遵守权威 DNS 定义的 TTL,而是使用自己的策略,并且如上所述,还有其他缓存级别需要考虑(操作系统、浏览器等)。以下是对类似问题的几个很好的答案。
如果你正在考虑将 DNS Round-Robin 用于 Web 应用程序,我建议你看一下HAProxy,可以实现廉价但真正的冗余。
希望这可以帮助!