我目前正在运行一个网站,其stream量现在分布在7个镜像服务器中(使用DNS循环)。 但是,鉴于持续增长的高stream量,很快就会有更多的镜子。
当使用循环DNS时,是否有任何实际的build议限制与给定的域名关联的IP地址的数量?
另外,当镜子数量多的时候,你会推荐什么样的解决scheme(例如10或20个以上的镜子)?
谢谢。
有一件事要记住,默认情况下,DNS查找使用UDP。 如果响应大于可以放入单个数据报中的数量,则将返回适合的数量,并在报头中设置TC(截断)位。
请求者可以select处理返回的内容,或者使用TCP重新尝试查询。
cachingDNS服务器不应该caching截断的响应,因为他们不知道返回的logging集是多么完整(响应不会说“我给你12个28条logging”)。
所以logging的最大数量是你可以在一个UDP数据报中保存多less的因素。 请记住,响应需要包括权限部分,根据该区域的SOAlogging,权限部分的大小会有所不同。
如果您正在使用CNAMElogging,则还会增加响应的大小,因为您将返回CNAME和所logging事件的Alogging。
你最好的select是使用dig或“host -v”来查看各种数量的Alogging,以查看查询何时穿越UDP响应的最大大小。
没有硬性限制,但大多数网站不会运行超过5或10个镜像。 如果网站在地理上是分开的,那么通过DNS循环进行镜像是非常有用的,这样除了负载分配以外还有冗余。
随着镜像数量的增加,由于DNS轮询不考虑需要更多资源的不同请求,所以使用DNS轮询作为负载分担的效率降低。 最好使用前端负载平衡来分配CPU负载和服务器可用性的工作负载,这也将简化维护,因为服务器可以在不进行DNS更改的情况下立即取消,导致客户端尝试从caching的DNSlogging访问closures的服务器。
我迟到了这个问题,但是我认为能够提到你能做的事情的实际限制是很好的。 我所知道的没有理论上的限制,但有几个ISP不会拿过去36年的任何东西。实际上,如果包含更多的内容,它不仅不包括额外的服务器,而且完全不理会你。 Verizon和Comcast是我遇到的两个问题,但我相信其他人会受到影响。
也就是说,如果您有足够的stream量来保证36个镜像,请不要使用循环DNS。
如果你有很多的服务器,也许最好的答案是像Akamai一样使用Anycast DNS服务器和循环法。 换句话说,该区域的DNS服务器分布在networking周围,全部具有相同的IP地址,以及在最近的服务器处的networking路由点客户端。 每台服务器以循环方式回答可能的服务器完整列表的子集。
我们做一些非常相似的事情,但我们使用硬件负载平衡器(思科ACE btw),这样的唯一的限制是子网的大小(如果是)。