调度DNS是互联网中不可或缺的一部分,它通过将域名解析为IP地址,帮助用户访问所需的网络资源,本文将详细探讨调度DNS的相关内容,包括其原理、地理位置调度不准确的问题、规则变更生效时间不确定以及高可用性等方面,并附有相关问题与解答。
DNS简介
DNS(Domain Name System)即域名系统,是互联网的一项基础服务,其主要功能是将人类可读的域名转换为机器可读的IP地址,一个完整的DNS解析过程如下:
1、本地缓存查询:用户发出域名解析请求,首先查询本地缓存中是否有该域名对应的IP,如果有直接返回,否则进行下一步。
2、根域名服务器查询:本地缓存服务器向根域名服务器发起DNS查询请求,根域名服务器会回复负责该顶级域(如.cn)的域名服务器地址。
3、顶级域名服务器查询:本地缓存服务器根据收到的地址继续向顶级域名服务器发起查询请求,得到二级域名服务器的地址。
4、权限域名服务器查询:继续迭代查询,直到找到实际负责该域名的权限域名服务器,得到域名的实际IP地址。
5、结果返回和缓存:本地缓存服务器将结果返回给客户端并写入自己的缓存中,以便下次查询使用。
DNS调度原理
DNS调度是通过DNS来实现负载均衡和区域调度的方法,大部分应用和业务采用域名作为服务的入口,因此用DNS来负载均衡和区域调度是非常普遍的做法,网易云的DNS调度系统会根据用户的地理位置,将请求调度到离用户最近的服务器节点,从而减少延迟访问。
DNS调度也面临一些问题:
地理位置调度不准确
在DNS解析过程中,与权威服务器通信的只有DNS缓存服务器,所以权威服务器只能根据DNS缓存服务器的IP来进行调度,DNS调度的前提假定用户使用的缓存DNS与用户本身在同个网络内,即至少在同一个AS(自治域)内,但近年来,公共DNS的推广使得这一前提不再成立,导致调度结果不准确。
规则变更生效时间不确定
当缓存服务器向权威服务器查询得到记录后,会将其缓存起来,在缓存有效期内,如果收到相同记录的查询,缓存服务器会直接返回给客户端,而不需要再次向权威查询,这个缓存有效期即是TTL(Time To Live),虽然DNS的缓存机制在大多数情况下缩短了客户端的记录解析时间,但缓存也意味着生效同步的延迟,当权威服务器的记录变更时,需要等待一段时间才能让所有客户端能解析到新的结果。
高可用性
为避免受DNS缓存的影响,需要保证DNS中A记录的IP节点高可用性,对此,网易云DNS调度系统采用的方案是在同一区域的多台直播服务器节点之间做负载均衡,对外只暴露一个虚IP,这样,即使某台服务器宕机,负载均衡能迅速感知到,排除故障节点,而对DNS而言,因为虚IP不变而不受影响。
单元表格:DNS解析流程
步骤 | 描述 |
1 | 用户发出域名解析请求,首先查询本地缓存中是否有该域名对应的IP,如果有直接返回。 |
2 | 本地缓存服务器向根域名服务器发起DNS查询请求,根域名服务器会发送一个回复说,.cn的域名已经委派给.cn这台域名服务器了,给你这台服务器的地址,你去哪里查吧。 |
3 | 本地缓存服务器收到这个答复后又向.cn域名服务器查询,如此迭代,sina.com.cn的DNS服务器会收到这个请求,返回域名的实际IP给本地缓存服务器。 |
4 | 本地缓存服务器收到这个答复后,会将这条记录返回给客户端,同时将该记录写入自己的缓存中,以便备查。 |
相关问题与解答
问题1:为什么使用公共DNS会导致DNS调度不准确?
答案:使用公共DNS会导致DNS调度不准确的原因是因为公共DNS的节点通常远少于各个ISP的节点,广州电信用户可能使用了某公共DNS,但该公共DNS里用户最近的是上海电信节点,甚至更极端的情况如Google DNS 8.8.8.8在中国大陆没有节点(最近的是台湾),这种情况下,国内有不少用户使用了Google DNS,实际上降低了他们的网络访问体验。
问题2:如何缩短DNS记录变更后的生效时间?
答案:要缩短DNS记录变更后的生效时间,正确的做法是至少提前5个小时修改记录,仅改小TTL值(例如改为5分钟),等待该变更同步到全网之后,再进行修改指向的操作,确认无误后再将TTL修改为原本的值,虽然DNS协议标准里建议缓存服务器应该记住或者缩短TTL的值,但实际上,有一些DNS缓存会修改权威服务器的TTL,将其变大,这在国内几大运营商中是很常见的。
来源互联网整合,作者:小编,如若转载,请注明出处:https://www.aiboce.com/ask/115881.html