DNS全局负载均衡(GSLB)基本原理[通俗易懂]

DNS全局负载均衡(GSLB)基本原理[通俗易懂]原理采用全局负载均衡(GSLB)的前提是在不同地区设立了多个数据中心,并不是所有的互联网服务都能做GSLB,前提是业务已经做了分布式部署的规划,无论用户从哪个IDC访问都能得到相同的结果,或者用户基本不会出现跨区域流动访问的情况,只会访问就近IDC,或者有一套入口调度机制,能将用户调度到所属的节点。现在很多CDN也都提供动态内容的加速,只不过这个加速只是数据传输上的优化,可以看做给你做了很多个转发…

大家好,又见面了,我是你们的朋友全栈君。

原理

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

现在很多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设备之间同步,最终根据全局负载均衡策略来选择最优的地址解析给用户。

解析的步骤示意如下图:

DNS全局负载均衡(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


版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/137414.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • windows服务器审计日志存放位置,windows服务器审计日志存放位置[通俗易懂]

    windows服务器审计日志存放位置,windows服务器审计日志存放位置[通俗易懂]windows服务器审计日志存放位置内容精选换一换Manager的审计日志默认保存在数据库中,如果长期保留可能引起数据目录的磁盘空间不足问题,管理员如果需要将审计日志保存到其他归档服务器,可以在FusionInsightManager设置转储参数及时自动转储,便于管理审计日志信息。若用户未配置审计日志转储,当审计日志达到十万条,系统自动将这十万条审计日志保存到文件中。保存路径为主管理节为加强对…

    2022年6月4日
    175
  • java简单的除法运算_Java除法运算的陷阱[通俗易懂]

    java简单的除法运算_Java除法运算的陷阱[通俗易懂]3、求余:和除法差不多。System.out.println(23%4);System.out.println(23%-4);System.out.println(-23%4);System.out.println(23f%4);System.out.println(23d%4);System.out.println(23%4f);System.out.println(23%4d);System….

    2022年6月4日
    40
  • angular面试问题_kafka面试题

    angular面试问题_kafka面试题Angularv8+面试系列Angular面试题汇总1-基本知识Angular面试题汇总2-Component/Service目录Angular中的测试有哪些种,基于哪些测试框架什么是Karma?在Angular中有什么作用?什么是Jasmine?在Angular中有什么用?什么是protractor?单元测试UnitTest什么是Angular中的单元测试?AngularUT的最佳实践测试Service时,有其他依赖如何处理?端到端测试(e2e)Angular中的测试有哪些.

    2022年9月16日
    0
  • docker菜鸟教程_k8s部署docker镜像

    docker菜鸟教程_k8s部署docker镜像前记:最近跟着哔站码神之路做了一个SpringBoot练手项目,第一次操作碰到了很多困难和问题,尤其是在部署部分,走了很多弯路,这里写下自己的部署过程,供大家参考,也欢迎大家提出宝贵的意见。哔站码神视频链接:https://www.bilibili.com/video/BV1Gb4y1d7zb?p=36我的网站:www.zhangshidi.space前置知识以下知识点希望大家首先搜一搜,读一读,有一个大概的了解。什么是Linux以及掌握Linux的一些基本指令。什么是docke

    2022年10月19日
    0
  • python3异常可直接抛出_python自定义异常

    python3异常可直接抛出_python自定义异常python抛出异常的方法发布时间:2020-08-1411:10:34来源:亿速云阅读:89作者:小新这篇文章主要介绍python抛出异常的方法,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!异常是Python对象,表示一个错误。当Python脚本发生异常时我们需要捕获处理它,否则程序会终止执行。python学习网,大量的免费python视频教程,欢迎在线学习!常见异常#…

    2022年10月18日
    0
  • 超详细的tomcat的下载安装和配置教程「建议收藏」

    超详细的tomcat的下载安装和配置教程「建议收藏」tomcat运行的前提是安装并配置了JDK,若没有安装配置JDK,先去安装配置JDK。如下链接:JDK_1.8的下载安装和环境变量的配置【详细步骤】一、下载tomcat1.进入tomcat的下载tomcat下载官网2.点击进入,点击:v8.5.73/3.选择bin4.选择:apache-tomcat-8.5.73-windows-x64.zip,点击即可下载二、tomcat安装1.解压到指定的位置,我解压后的如下2.配置环境变量①配置环境变量,此电脑—>属性—&gt

    2022年5月19日
    33

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号