DNS全局负载均衡(GSLB)基本原理

原理

采用全局负载均衡(GSLB)的前提是在不一样地区设立了多个数据中心,并非全部的互联网服务都能作GSLB,前提是业务已经作了分布式部署的规划,不管用户从哪一个IDC访问都能获得相同的结果,或者用户基本不会出现跨区域流动访问的状况,只会访问就近IDC,或者有一套入口调度机制,能将用户调度到所属的节点。html

如今不少CDN也都提供动态内容的加速,只不过这个加速只是数据传输上的优化,能够看作给你作了不少个转发节点,最终业务处理压力仍是源站承担。若是不具有分布式部署改造的条件,只是要解决远距离客户访问慢问题,能够考虑CDN。数据库


目前不少DNS服务商都提供了智能DNS服务,智能DNS能够经过多种负载均衡策略来将客户端须要访问的域名解析到不一样的数据中心不一样的线路上,好比经过各运营商分省IP地理信息数据来判断用户的就进性,并结合健康检查策略(一般是发一个固定的http请求)来分配访问量。

第三方智能DNS的不足在于经过公网健康检查可能会受到运营商网络拥塞的影响,目前国内域名服务商提供的服务目前还没法感知线路繁忙程度和后端服务器真实负载状况。除了使用智能DNS解析软件或者云服务,多数对可靠性和性能要求高的用户都会使用硬件的全局负载均衡解决方案。全局负载均衡设备以经过更丰富的维度来判断用户就进性,造成就进性表,除了分地域IP数据库外,还能够经过TTL、用户访问延时、服务器负载状况等来判断。

下例的全局负载均衡解决方案中,域名服务商处将域名的NS记录指向有智能DNS解析功能的GSLB设备,而后由GSLB设备来进行A记录解析。若是在多地部署了GSLB设备,它们都应该添加到NS记录中以保证高可用性,域名服务商处轮询地返回GSLB地址或者一次性返回所有地址。GSLB设备会对本身所在的IDC后端服务器以及其余IDC公网IP进行健康检查,健康检查结果会经过自有协议在不一样IDC的GSLB设备之间同步,最终根据全局负载均衡策略来选择最优的地址解析给用户。

解析的步骤示意以下图:
后端

  1. 用户向本级配置的本地DNS服务器发出查询请求,若是本地DNS服务器有该域名的缓存记录,则返回给用户,不然进行第2步;
  2. 本地DNS服务器进行递归查询,最终会查询到域名注册商处的受权DNS服务器,这里可能有多个步骤,图中只反映最后一步;
  3. 受权DNS服务器返回一条NS记录给本地DNS服务器。根据受权DNS服务器上的不一样设置,这条NS记录多是指向随机一个GSLB设备的接口地址或者是全部GSLB设备的接口地址;
  4. 本地DNS服务器向其中一个GSLB地址发出域名查询请求,若是请求超时会向其它地址发出查询;
  5. GSLB设备选出最优解析结果,返回一条A记录给本地DNS服务器。根据全局负载均衡策略设定的不一样可能返回一个或多个VIP地址
  6. 本地服务器将查询结果经过一条A记录返回给用户,并将缓存这条记录。

经过DNS解析报文中的TTL(Time To Live)字段能够控制客户端缓存这条记录的时间,在缓存时间内客户端会使用旧的查询结果,当缓存时间超时后才可能从新发出查询,TTL值过大会致使故障发生时切换时间过长,TTL值过小会形成查询频繁,对设备和网络的压力增大。缓存

局限性

请注意GSLB设备收到的DNS请求的源地址不是用户的地址而是用户所配置的本地DNS服务器地址,而GSLB的就进性探测是根据这个地址来判断的,在我国大多数ADSL拨号上网用户都能就近分配正确的数据中心,可是当用户用户经过4G移动网络上网的状况下,客户会一直使用归属地的DNS服务器,或这手动设定本地DNS而设置的DNS距离用户较远的状况,GSLB不能分配最佳的地址。这种状况很常见,国内有不少人使用google的公有dns或者opendns。服务器

这种状况可使用重定向来解决,SLB设备正式收到用户发来的请求时,会再次查找就进性表,当发现用户的最佳访问节点非本身时,经过http 302重定向来再次引导用户流量。网络

原文地址:http://www.cnblogs.com/foxgab/p/6900101.html负载均衡

 

若是以为本文对您有帮助,请扫描后面的二维码给予捐赠,您的支持是做者继续写出更好文章的动力!分布式

相关文章
相关标签/搜索