网易dns 网易MC:DNS调度原理解析

球探体育

DNS是现代互联网发展中最不可缺少的服务之一。从访问网页到发送电子邮件,我们一直使用DNS提供的服务。众所周知,DNS的核心工作是将域名翻译成计算机IP地址。完整的域名解析过程如下:

1.当用户发送www.sina.com.cn域名解析请求时,首先查询本地缓存中是否有该域名对应的IP,如果有,则直接返回,否则,进入第二步;

2.本地缓存服务器向根域名服务器发送DNS查询请求,根域名服务器会发送回复说我已经委派的域名。cn连接到这个域名服务器,所以我会给你这个服务器的地址,你可以在哪里查找?

3.收到此回复后,本地缓存服务器会查询的域名服务器。cn。迭代后,的DNS服务器。sina.com.cn将收到这个请求,并将域名的实际IP地址返回给本地缓存服务器。

4.收到此回复后,本地缓存服务器会将此记录返回给客户端,并将其写入自己的缓存以供将来参考。

●●●

域名系统调度原则

目前大多数应用和服务都是使用域名作为服务门户,所以使用DNS进行负载均衡和区域调度是非常常见的。网易云也有基于DNS的调度系统。有些用户在推送直播时并不使用网易云的直播SDK,而是使用一些第三方推送软件,比如obs,所以无法使用我们的GSLB全球调度服务器进行调度。对于这些用户,我们使用DNS调度对来自不同区域的请求返回不同的解析结果,并将请求调度到最近的服务器节点,从而减少延迟访问。

乍一看,DNS调度这么简单方便,为什么不让所有用户都通过DNS调度呢?想知道为什么?来吧,我们继续。

●●●

地理位置调度不准确

在dns解析过程中,只有dns缓存服务器与权威服务器进行通信,所以权威服务器只能根据DNS缓存服务器的IP进行调度。所以DNS调度是有前提的:假设用户使用的缓存DNS和用户本身在同一个网络中,也就是至少在同一个as(自治域)中。在这个前提下,DNS解析是准确的。一般用户使用ISP提供的本地缓存,本地DNS通常和用户在同一个网络,所以DNS调度是有效的。

但近年来,很多互联网厂商都在推广基于BGP Anycast的公共DNS,而这些Anycaset IP的节点一般都远远少于各种ISP。例如,广州电信用户可能使用一个公共DNS,但是这个公共DNS中最近的用户是上海电信节点,甚至更极端,比如Google DNS 8.8.8.8,中国大陆没有节点(最近的是台湾省)。可惜国内很多用户使用谷歌DNS,实际上降低了他们的网络访问体验。一般来说,使用公共DNS实际上破坏了上述前提,导致DNS区域调度失败。用户以为自己获得了更快更安全的DNS解析,实际上却获得了错误的解析,增加了网络访问延迟。

传统DNS协议的区域调度过程示例如下图所示。假设一个服务在foo.163.com向外界提供服务,一个节点在北京,一个节点在东京。该服务预计mainland China用户将访问北京节点,而非大陆用户将访问东京节点。因为权限根据DNS缓存决定返回的结果,所以当用户使用不同的DNS缓存时,可能会解决不同的结果。

2011年,以Google为首的几家公司提出了一个DNS扩展方案edns-客户端-子网(以下简称ECS)。扩展方案的核心思想是将原始请求的IP(即客户端的IP)添加到DNS请求消息中,以便授权机构根据信息返回正确的结果。目前节目还在选秀阶段。该方案解决了上述远程DNS带来的解析不准确的问题,但也带来了一些问题:

至少需要缓存和权限的支持才能完成完整的ECS解析;

ECS增加了很多缓存压力,因为理论上可能需要为每个IP段分配空来缓存解析结果

●●●

规则改变的有效时间是不确定的

当缓存服务器查询权威服务器获取记录时,会进行缓存。如果在缓存有效期内收到相同记录的查询,缓存服务器将直接返回给客户端,而不需要再次查询权威。当有效期到期时,缓存需要再次启动查询。该缓存的有效期为TTL。

虽然DNS的缓存机制在大多数情况下缩短了客户端记录解析的时间,但是缓存也意味着有效同步的延迟。当权威服务器的记录发生变化时,所有客户端都需要一段时间来解析新结果,因为缓存服务器很可能仍然缓存旧记录。

我们把权威记录变化到在整个网络上生效的过程称为传播,其时间是不确定的。理论最大值为TTL值。对于记录更改或删除,这个时间是记录的原始TTL,对于记录添加,是域的NTTTL值。

如果一个域名记录的原始TTL是18000,可以认为理论上需要等待5个小时才能保证该记录在全网生效。假设域名的服务商要缩短切换时间,正确的做法是至少提前5小时修改记录,只需将TTL改为5分钟,等待更改同步到全网,然后修改指向操作,确认无误后再将TTL改为初始值。

虽然DNS协议标准建议缓存服务器要记住或缩短TTL值,但实际上有些DNS缓存会修改权威服务器的TTL,使其变大,这在国内几家运营商中是很常见的。例如,一个域记录的TTL值实际上设置为60,但在运营商的DNS缓存中变成600或更多,甚至有些DNS缓存不遵循TTL机制。这些都会影响域名的实际有效时间。

●●●

高度可用

为了避免DNS缓存的影响,需要保证DNS中A记录的IP节点的高可用性。为此,网易云DNS调度系统采用同区域多个直播服务器节点负载均衡的方案,对外只暴露一个虚拟IP。这样,即使一台服务器宕机,负载均衡也能快速感知并排除故障节点,但对于DNS来说,并没有因为虚拟IP不变而受到影响。

●●●

总结

因此,我们建议您使用我们的网易云实时SDK访问更准确的调度系统,以确保用户体验。

以上由网易企业信息服务提供商、湖南领先网络科技发布。

网易企业服务(qiye163.co)是网易基于其20年的品牌优势和经验,为进一步布局企业市场而打造的企业级产品矩阵,致力于提供一站式企业信息解决方案。湖南领先网络科技是网易企业产品授权经销商,为企业信息化提供一站式专业解决方案,如网易企业邮箱、网易办公套件等。为了处理与网易公司电子邮件及其公司产品相关的业务,我们需要湖南领先的网络技术。电话:400-0908-163;在线QQ1043860820;

标签: 网易dns