Total Pageviews

Thursday, 11 January 2018

简析DNS轮询技术及其应用

通常我们说,一个域名是唯一对应到一个IP地址上的,我们在浏览器里输入一个域名,则将请求传递给DNS服务器,DNS服务器解析出这个对应的IP后返回给浏览器。但在一些情况下,一个域名可以对应多个IP地址,这种方式就叫DNS轮询。通过DNS轮询,我们可以达到一些正常情况下难以达到的目的。首先来介绍一下DNS轮询的基本概念。
我们知道,在设置域名解析时,一般一个域名对应CNAME或者A记录到仅一个IP上。这样,如果我们访问这个域名时,就能被转换到这个IP上进行访问。然而,如果在DNS区域文件中设置同样的域名的A记录到两个或者多个不同IP上,那么在访问时会发生什么呢?实际上,DNS服务器还是会照常解析。这就产生了矛盾——我们到底访问到的是哪一个IP。这与地理位置、访问速度等诸多因素有关,但利用这种IP选择机制,我们可以完成许多有意义的事情。具体的解析过程是这样的:首先,客户机发请求给递归服务器(地方宽带运营商服务器),递归服务器发请求给解析服务器;然后,解析服务器将域名设置的所有轮询主机服务器IP返回给递归服务器,递归服务器将这些IP再返回给客户机;最后,客户机的浏览器会随机对其中的一个IP 进行访问。于是,利用这种同一域名对不同IP的访问,我们可以做到许多事情。
首先是实现均衡负载与故障时保证访问。对于大型的网站,比如大型的wordpress网站,几乎是一定会用到均衡负载的。如果采用DNS轮询技术,将一个域名解析到多台服务器的各自的IP地址上,利用浏览器的随机访问对流量进行分摊,则会降低每台服务器的压力,实现均衡负载。故障时保证访问是它的另一个重要应用。从之前的原理的简述我们可以看出,轮询时DNS服务器会将所有的IP返回给浏览器,浏览器自身的机制会使其在连接出错时继续连接下一个IP,直到所有IP都无法连接或者连接成功为止。这样,只要两台服务器不同时宕机,那么我们几乎可以让网站在线率达到将近百分之百。类似地,在更换服务器地址时,使用另一台服务器做DNS轮询进行过渡是一个很好的方法。
第二个重要的作用是CDN加速。DNS轮询是CDN的基础,通过对于不同访问线路的不同解析,达到最快的访问速度,这是非常有用的功能,当然前提是你有很多台服务器。DNSPOD提供了类似的功能,大家可以自行尝试。
第三个重要的作用是实现内外网的不同访问内容与内容的加速访问。我们学校的所有有线网与无线网组成大规模的局域网,局域网内所有电脑互通。我之前有个站点放在国外的VPS上,校内访问的速度还是很不理想的。最近想让校内访问速度提高,并且给内网访问者提供一个查询的功能(不想让校外访问者使用),就在自己电脑上搭建了一个服务器,校内所有的角落登录速度飞快,并且能够使用查询功能。此时再做DNS轮询,分别解析到校外服务器地址与校内本机的局域网内IP地址,这样校内客户机访问的就是我的电脑上的高速服务器;而校外访问时连不上校内局域网的IP,就会轮询访问到外部服务器,也不会访问到不能访问的内容,效果非常好。
还有很多事情可以利用这一项功能来完成。目前国内支持DNS轮询的解析商不多,可以用前面说的DNSPOD或者自己来搭建.

No comments:

Post a Comment