负载均衡就是智能调度
全局负载均衡(GSLB)的负载均衡主要是在多个节点之间进行均衡,其结果可能直接终结负载均衡过程,
也可能将用户访问交付下一层次的(区域或本地)负载均衡系统进行处理。
GSLB最通用的是基于DNS解析方式,还有HTTP重定向、IP路由等方法

DNS就是IP地址和网址互换
当需要访问abc.com这个站点时,
实际上我们想要浏览的网页内容都存放在互联网中对应某个IP的服务器上,
而浏览器的任务就是找到我们想要访问的这台服务器的IP地址,然后向它请求内容。

本地DNS服务器(local DNS server)是用户所在局域网或ISP网络中的域名服务器。
当客户端在浏览器里请求abc.com时,浏览器会首先向本地DNS服务器请求将 abc.com解析成IP地址,
本地DNS服务器再向整个DNS系统查询,直到找到解析结果。
客户端可以配置DNS服务器或通过DHCP来分配
DNS给使用它的互联网应用带来额外的时延,有时时延还比较大,为了解决问题,需要引入“缓存”机制。
缓存是指DNS查询结果在主机(local DNS server)中缓存。
在区内主机对某个域名发起第一次查询请求时,
负责处理递归查询的DNS服务器要发送好几次查询(先查.root,再查.com之 类,再定位IP地址等)才能找到结果,
不过在这过程中它也得到了许多信息,
比如各区域权威DNS服务器(就是告诉你最终abc.com在哪里的DNS服务 器)和它们的地址、域名解析最终结果。
他会把这些信息保存起来,当其他主机向它发起查询请求时,它就直接向主机返回缓存中能够找到的结果,直到数据过期。

客户端浏览器也可以缓存DNS响应信息。
Internet类资源记录分为
–A记录(address):域名->多个IP的映射。对同一个域名,可以有多条A记录
–NS记录(name server):指定由哪台DNS服务器来解析
–SOA记录(start of authority):指定该区域的权威域名服务器
–CNAME记录(canonical name):多个域名->服务器的映射
–PTR记录(pointer record):IP->域名的映射

DNS系统本身是具备简单负载分配能力的,这是基于DNS的轮询机制。
如果有多台Web服务器(多源)同时为站点 abc.com提供服务,abc.com的权威服务器可能会解析出一个或多个IP地址。
权威域名服务器还可以调整响应中IP地址的排列方式,即在每次响应中将不同的IP地址置于首位(取决于可服务能力和服务质量),
通过这种方式实现对这些Web服务器的负载均衡通过CNAME方式实现负载均衡:域名服务器获得CNAME记录后,
就会用记录中的别名来替换查找的域名或主机名(实现多个域名->服务器映射)。
后面会查询这个别名的A记录来获取相应的IP地址。

具体操作为:先将GSLB的主机名定义为所查询域名的权威DNS服务器的别名,
然后将GSLB主机名添加多条A记录,分别对应多个服务器的IP地址。
这样,本地DNS服务器会向客户端返回多个IP地址作为域名的查询结果,并且这些IP地址的排列顺序是轮换的。
客户端一般会选择首个IP地址进行访问。

负载均衡器作为权威DNS服务器:负载均衡器就会接收所有对这个域名的DNS请求,
从而能够根据预先设置的一些策略来提供对域名的智能DNS解析。
F5的DNS具有完整的DNS功能以及增强的GSLB特性,Foundry、Nortel、Cisco和Radware的产品 能实现部分DNS功能。

负载均衡作为代理DNS服务器:负载均衡器被注册为一个域名空间的权威DNS服务器,
而真正的权威域名服务器则部署在负载均衡器后面。
所有的DNS请求都会先到达负载均衡器,由负载均衡器转发到真正的权威DNS服务器,然后修改权威DNS服务器返回的响应信息。
真正的权威DNS服务器正常响应浏览器的DNS请求,返回域名解析结果列表,
这个响应会先发送到负载均衡器,而负载均衡器会根据自己的策略选择一个性能最好的服务器 IP并修改需要实现GSLB的域名的DNS查询响应,
对其他请求透明转发,这样就不会影响整个域名空间的解析性能。

在基于DNS方式下无论采用何种工作方式,都会有一些请求不会到达GSLB,这是DNS系统本身的缓存机制在起作用。
当用户请求的域名在本地DNS或本机(客户端浏览器)得到了解析结果,这些请求就不会达到GSLB。
Cache更新时间越短,用户请求达到GSLB的几率越大。由于DNS的缓存机制屏蔽掉相当一部分用户请求,从而大大减 轻了GSLB处理压力,使得系统抗流量冲击能力显著提升,这也是很多商业CDN选择DNS机制做全局负载均衡的原因之一。
但弊端在于,如果在DNS缓存刷新间隔之内系统发生影响用户服务的变化,
比如某个节点故障,某个链路拥塞等,用户依然会被调度到故障部位去。

智能DNS功能,它在向本地DNS返回应答之前会先根据一些静态或动态策略进行智能计算。
– 服务器的“健康状况”
– 地理区域距离
– 会话保持
– 响应时间
– IP地址权重
– 会话能力阈值
– 往返时间(TTL)
– 其他信息,包括服务器当前可用会话数、最少选择次数、轮询等

关于GSLB的部署问题

关于内容的缓存问题(如何智能调度最有效)和配置

在有些CDN中(用于视频网站加速的情况较多),网站需要加速的内容全部先缓存在OCS(内容中心),
然后再将一部分 (通常是热门的内容)分发到个POP节点(Cache边缘集群),
所以POP节点在某些时候会出现本地不命中而需要回OCS取内容或者从其他POP节点取内容的情况

纯粹基于DNS方式的GSLB只能完成就近性判断。
为实现智能调度,大多数解决方案需要在GSLB设备附近以旁路的方式部署一台辅助设备(为方便描述,我们可称之为GRM——全局资源管理设备),
用以实现和各POP节点的本地资源管理设备进行通信,完成CDN对各POP节点的状态检查,
并根据POP节点的状态和流量情况,重新制订用户调度策略,将策略实时发送到GSLB中去执行

因为DNS服务采用以UDP为基础的、默认无连接的访问方式,给分布式攻击(DDoS)带来了更大的便利。
(有DNSSEC可以提供某程度的DDoS攻击保护)
隐藏节点的存在很大程度上可以避免GSLB被攻击致瘫痪的机会,
实际隐藏节点的实现方法就是在实际组网时除了部署正常工作的GSLB以外,
再部署一台备份的GSLB设备,并将这一备份GSLB设备隐藏起来,不对外公布。

HTTP重定向(CDN GSLB用302重定向):在HTTP协议中,有三类重定向状态码:
301永久性转移(permanently moved)、
302暂时转移(temporarily moved)、
meta fresh在特定时间后重定向到新的网页
HTTP重定向只适用于HTTP应用,不适用于任何其他应用。
比如微软的MMS协议,RTSP协议,就不能使用这种方式 进行重定向。
其次,由于HTTP重定向过程需要额外解析域名URL,还需要与URL建立TCP连接并且发送HTTP请求,使得响应时间加长。
第三,不同于DNS方式,没有任何用户请求能被外部系统终结(不能缓存),
所有请求都必须进入GSLB系统,这将成为性能和可靠性的瓶颈。(流媒体用的比较多)

基于IP路由的GSLB
基于路由协议算法选择一条路由到达这两个本地均衡器中的一个。
因为每次访问请求的终端IP地址不同,路由条件也不同,
所以在多个路由器上优选的路由不同,从统计复用的角度来看基本是在负载均衡器1和2之间均匀分布的。
IP路由在多个POP点之间实现的负载均衡是一种概率上的均衡,而不是真正的均衡(没做智能调度)。

基于DNS解析方式,基于HTTP重定向方式,基于IP路由方式 这3种方式的比较

性能
基于DNS解析方式:本地DNS服务器和用户终端DNS缓存能力使GSLB的负载得到有效分担
基于HTTP重定向方式:GSLB处理压力大,容易成为系统性能的瓶颈
基于IP路由方式:借助IP网络设备完成负载均衡,没有单点性能瓶颈

准确度
基于DNS解析方式:定位准确度取决于本地DNS覆盖范围,本地DNS设置错误会造成定位不准确
基于HTTP重定向方式:在对用户IP地址数据进行有效维护的前提下,定位准确且精度高
基于IP路由方式:就近性调度准确,但对设备健康性等动态信息响应会有延迟

效率
基于DNS解析方式:效率约等于DNS系统本身处理效率
基于HTTP重定向方式:依靠服务器做处理,对硬件资源的要求高
基于IP路由方式:效率约等于IP设备本身效率

扩展性
基于DNS解析方式:扩展性和通用性好
基于HTTP重定向方式:扩展性较差,需对各种应用协议进行定制开发
基于IP路由方式:通用性好,但适用范围有限

商用性
基于DNS解析方式:在Web加速领域使用较多
基于HTTP重定向方式:国内流媒体CDN应用较多
基于IP路由方式:尚无商用案例

备注:随笔中内容来源于网上资料整理,仅供参考

CDN技术之--全局负载均衡(GSLB)的更多相关文章

  1. 全局负载均衡GSLB之“部署篇”

    http://virtualadc.blog.51cto.com/3027116/875622 前言 随着web应用的不断发展,客户对于业务的稳定性.可靠性等也提出更高的要求,已不再局限于IDC内部的 ...

  2. 全局负载均衡与CDN内容分发

    CDN简介 CDN的全称是Content Delivery Network,即内容分发网络.CDN是构建在现有网络基础之上的智能虚拟网络,依靠部署在各地的边缘服务器,通过中心平台的负载均衡.内容分发. ...

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

    原理 DNS全局负载均衡通过智能DNS解析来实现,通常在不同的地区设立多个数据中心,每个数据中心又使用多个运营商的线路.目前很多DNS服务商都提供了智能DNS服务,智能DNS通常是利用各运营商分省IP ...

  4. CDN工作机制和负载均衡

    定义:  CDN 即内容分布网络,(Content Delivery Netwrok) ,是构筑在现有Internet上的一种先进的流量分配网络,其目的是通过在现有的Internet中增加一层新的网络 ...

  5. nginx利用geo模块做限速白名单以及geo实现全局负载均衡的操作记录

    geo指令使用ngx_http_geo_module模块提供的.默认情况下,nginx有加载这个模块,除非人为的 --without-http_geo_module.ngx_http_geo_modu ...

  6. (转)nginx利用geo模块做限速白名单以及geo实现全局负载均衡的操作记录

    nginx利用geo模块做限速白名单以及geo实现全局负载均衡的操作记录 原文:http://www.cnblogs.com/kevingrace/p/6165572.html Nginx的geo模块 ...

  7. Nginx通过geo模式实现限速白名单和全局负载均衡 - 运维笔记

    Nginx的geo模块不仅可以有限速白名单的作用,还可以做全局负载均衡,可以要根据客户端ip访问到不同的server.比如,可以将电信的用户访问定向到电信服务器,网通的用户重 定向到网通服务器”,从而 ...

  8. 三种LVS负载均衡技术的优缺点----负载均衡调度算法

    三种LVS负载均衡技术的优缺点归纳以下表: VS/NATVS/TUNVS/DR 服务器操作系统任意支持隧道多数(支持Non-arp) 服务器网络私有网络局域网/广域网局域网 服务器数目(100M网络) ...

  9. 负载均衡技术在CDN中发挥着重要作用

    转载地址:http://www.qicaispace.com/gonggao/server/page01/info07.asp CDN是一个经策略性部署的整体系统,能够帮助用户解决分布式存储.负载均衡 ...

随机推荐

  1. 【HDOJ6600】Just Skip The Problem(签到)

    题意:询问n!模1e6+7的结果 n<=1e9 思路: #include<bits/stdc++.h> using namespace std; typedef long long ...

  2. paper 158:CNN(卷积神经网络):Dropout Layer

    Dropout作用 在hinton的论文Improving neural networks by preventing coadaptation提出的,主要作用就是为了防止模型过拟合.当模型参数较多, ...

  3. BZOJ 1018: [SHOI2008]堵塞的交通traffic(线段树分治+并查集)

    传送门 解题思路 可以离线,然后确定每个边的出现时间,算这个排序即可.然后就可以线段树分治了,连通性用并查集维护,因为要撤销,所以要按秩合并,时间复杂度\(O(nlog^2 n)\) 代码 #incl ...

  4. html 和 body标签的 css 设置

    个人猜测浏览器的机制:H5页面底板上有一张画布,画布高度可以被撑高.html.body等元素是固定在画布上的.浏览器中页面的滚动是跟着画布滚动的.(fixed定位是脱离这种机制的,相对浏览器窗口定位的 ...

  5. python中遍历列表字典元组

    遍历列表,打印:我叫name,今年age岁,家住dizhi,电话phone lt = [ {'name':'小王', 'age':18, 'info':[('phone', '123'), ('diz ...

  6. 同源策略和跨域资源共享(CROS)

    同源策略 Same-origin policy - Web security | MDN 跨站资源共享 Cross-Origin Resource Sharing (CORS) - HTTP | MD ...

  7. python,mock-server之moco

    python,mock-server之moco1.mock使用:mock除了用在单元测试过程中,还有一个用途,当前端开发在开发页面的时候,需要服务端提供API接口,此时服务端没开发完成,或者说没搭建测 ...

  8. Python Django 编写一个简易的后台管理工具3-运行项目

    编写view页面 def hello(request): return render(request,'hello.html') 编写html页面 <!DOCTYPE html> < ...

  9. AOM

    AOM ----  Automation Object Model (自动化对象模型) AOM就是一个可以自动化QTP的自动化对象模型,它可以对QTP的进行自动化配置操作以及QTP的运行回放进行自动化 ...

  10. js比较日期时间的大小

    var myDate = new Date(); var timed = myDate.toLocaleDateString(); var oDate1 = new Date(item.express ...