DNS轮询中IP地址的实际限制是多少?


8

我目前正在运行一个站点,该站点的流量现在分布在7个镜像服务器之间(使用DNS轮询)。但是考虑到流量的不断增长,不久之后将需要更多的镜像。

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

另外,当镜像数量很高(例如,超过10或20个镜像)时,您会建议哪种解决方案?

谢谢。

Answers:


10

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

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

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

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

如果您使用的是CNAME记录,这也会增加响应的大小,因为您会获得指向该对象的CNAME和A记录。

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


1
如果接收到整个部分,则实际上允许缓存服务器缓存响应。如果“答案”部分很好,但“其他”部分被截断了,则可以缓存该答案。
Alnitak

8

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

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


3

我迟到了这个问题,但是我认为最好提及您可以做的事的实际限制。我没有理论上的限制,但是几个ISP不会超过36个。实际上,如果您提供的不止36个,它不仅不会包括额外的服务器,而且它们会完全忽略您。Verizon和Comcast是我遇到的两个问题,但是我敢肯定其他人也会受到影响。

也就是说,如果您有足够的流量来保证36个镜像,请不要使用轮询DNS。


2

如果您有很多服务器,也许最好的答案是像Akamai一样,并使用任播DNS服务器轮询。换句话说,该区域的DNS服务器分布在整个网络中,所有IP地址都相同,并且路由将客户端指向网络上最近的服务器。每个服务器轮流回答所有可能服务器的子列表。


1

我们做的事情非常相似,但是我们使用硬件负载平衡器(Cisco ACEs btw),这样唯一的限制就是子网大小(如果有的话)。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.