DNS 循环中 IP 地址的实际限制是多少?

Get*_*ree 8 domain-name-system traffic load-balancing

我目前正在运行一个站点,其流量现在分布在 7 个镜像服务器中(使用 DNS 循环)。但鉴于持续增长的大量流量,很快将需要更多的镜像。

使用循环 DNS 时,与给定域名关联的 IP 地址数量是否有任何实用的建议限制?

此外,当镜像数量较多时(例如超过 10 或 20 个镜像),您会推荐什么样的解决方案?

谢谢。

Jam*_*s F 10

要记住的一件事是,默认情况下,DNS 查找使用 UDP。如果响应大于单个数据报所能容纳的大小,则返回尽可能多的数据,并在报头中设置 TC(截断)位。

请求者可以选择处理返回的内容,或者使用 TCP 重新尝试查询。

缓存 DNS 服务器不应该缓存截断的响应,因为它们不知道返回的记录集有多完整(响应没有说“我给你 28 条记录中的 12 条”)。

因此,最大记录数是您可以在 UDP 数据报中保留多少的一个因素。请记住,响应需要包含权限部分,该部分的大小将根据区域的 SOA 记录而有所不同。

如果您正在使用 CNAME 记录,这也会增加响应的大小,因为您会返回 CNAME 和指向的事物的 A 记录。

最好的办法是使用 dig 或“host -v”处理各种数量的 A 记录,以查看查询何时超过 UDP 响应的最大大小。


小智 8

没有硬性限制,但大多数站点不运行超过 5 或 10 个镜像。如果站点在地理上是分开的,因此除了负载共享之外还有冗余,通过 DNS 循环进行镜像是最有用的。

随着镜像数量的增加,使用 DNS 轮询作为负载共享的效率降低,因为 DNS 轮询没有考虑需要更多资源的不同请求。最好使用前端负载平衡通过 CPU 负载和服务器可用性来分配工作负载,这也将简化维护,因为可以立即关闭服务器而不更改 DNS,从而导致客户端尝试从缓存的 DNS 记录访问已关闭的服务器.