cdn的关键技术主要有内容路由技术、内容分发技术、内容存储技术、内容管理技术等,而本文介绍的GSLB是属于CDN中的内容路由技术的关键技术。
一、内容路由技术简介:
CDN负载均衡系统实现CDN的内容路由功能,它的作用是将用户的请求导向整个CDN网络中的最佳节点。最佳节点的选定可以根据多种策略,例如距离最近、节点负载最轻等。
负载均衡系统是整个CDN的核心,负载均衡的准确性和效率直接决定了整个CDN的效率和性能。通常负载均衡可以分为两个层次:全局负载均衡(GSLB)和本地负载均衡(SLB)。负载均衡可以通过多种方法实现,主要的方法包括DNS、应用层重定向、传输层重定向等等。
1.全局负载均衡(GSLB)主要的目的是在整个网络范围内将用户的请求定向到最近的节点(或者区域),因此,就近性判断是全局负载均衡的主要功能。
对于全局负载均衡而言,为了执行就近性判断,通常可以采用两种方式,一种是静态的配置,例如根据静态的IP地址配置表进行IP地址到CDN节点的映射。另一种方式是动态的检测,例如实时地让CDN节点探测到目标IP的距离(可以采用RRT,Hops作为度量单位),然后比较探测结果进行负载均衡。当然,静态和动态的方式也可以综合起来使用。
2. 本地负载均衡一般局限于一定的区域范围内,其目标是在特定的区域范围内寻找一台最适合的节点提供服务,因此,CDN节点的健康性、负载情况、支持的媒体格式等运行状态是本地负载均衡进行决策的主要依据。
对于本地负载均衡而言,为了执行有效的决策,需要实时地获取Cache设备的运行状态。获取的方法一般有两种,一种是主动探测,一种是协议交互。
1)主动探测针对SLB设备和Cache设备没有协议交互接口的情况,通过ping等命令主动发起探测,根据返回结果分析状态。
2)另一种是协议交互,即SLB和Cache根据事先定义好的协议实时交换运行状态信息,以便进行负载均衡。
比较而言,协议交互比探测方式要准确可靠,但是目前尚没有标准的协议,各厂家的实现一般仅是私有协议,互通比较困难。
二、GSLB的常用技术
GSLB常用技术主要是下面三种:
1) DNS调度:基于请求端local dns的出口IP归属地及运营商属性的DNS调度; 2) 302调度:基于客户端IP归属地及运营商属性的302跳转调度; 3) 路由调度:基于Anycast技术(BGP路由)的机房流量调度;
1.DNS调度
执行步骤如下所示: ① 提交域名 ② 客户端解析域名 ③ NS解析到GSLB- // 3的GSLB服务器(例如阿里云、腾讯云等)一般是厂商的调度服务器, // 对于加速域名来说,域名的关联关系为: // a.com-->加速域名的cname: a.XXX.com---> // 厂商提供服务的线路a.XXXX.ali.com(这个往往是GSLB的服务器) ④ GSLB解析并返回IP // 4通过最终客户的域名经CDN的调度域名解析出CDN节点的IP,将对应的IP地址返回给GSLB服务器 // 这里的域名解析往往是通过,当前访问加速域名的用户所在的“地区+供应商”,例如 “上海电信” // 到dns服务器上去查询,对应的CDN所在地区和厂商的最近IP所属的那些服务器IP。 ⑤ 客户端请求IP ⑥ 返回结束
例子如下所示:
$ dig p200107.ping.dnsv1.com 。。。。。。 p200107.ping.dnsv1.com. 588 IN CNAME k97hqyk4.tweb.sched.ovscdns.com. k97hqyk4.tweb.sched.ovscdns.com. 168 IN A 203.205.137.254 k97hqyk4.tweb.sched.ovscdns.com. 168 IN A 203.205.137.123 k97hqyk4.tweb.sched.ovscdns.com. 168 IN A 119.28.164.234 k97hqyk4.tweb.sched.ovscdns.com. 168 IN A 119.28.165.56 k97hqyk4.tweb.sched.ovscdns.com. 168 IN A 203.205.136.55 k97hqyk4.tweb.sched.ovscdns.com. 168 IN A 119.28.165.55 k97hqyk4.tweb.sched.ovscdns.com. 168 IN A 203.205.136.62 。。。。。
这种方式的优缺点:
优点: 1.简单易用、用户无感知 2.客户端兼容性好 缺点: 1.调度策略非实时生效 原因:DNS是树型分布式系统,所有节点上都会按域名的TTL来做缓存, 这就导致CDN的调度策略其实并不是实时生效的。 2. 调度不够精确 原因:大量的local DNS不支持edns协议,拿不到客户的真实IP, CDN绝大多数时候只能通过local DNS ip来做决策, 而local DNS ip有时候不太靠谱。 (一种是厂商配置的localDNS 并不是本地的IP地址,例如上海的IP配置了北京的DNS, 一种是8.8.8.8这种Public DNS,接入IP是Anycast IP没有归属地一说, 出口IP经常变动,比如中国大陆使用时,出口IP经常是中国台湾的google机房。)
2. http redirection 302跳转
执行步骤如下所示: ① 提交域名 ② 客户端解析域名 ③ DNS解析域名为GSLB // 这里的GSLB服务器与上面的一致,都是厂商提供的 ④ 客户端提交请求给GSLB服务器 ⑤ GSLB解析出目标IP并发起HTTP转发 // 这里返回的CDN服务器IP,往往通过CDN的负载情况、RTT时间, // 每个CDN服务器的权重、以及用户与服务器之间的位置和供应商来决策, // 当然这些决策也是由厂商(例如阿里、腾讯)等给出的。 ⑥ 客户跳转发请求到目标IP ⑦ 返回结束
例子如下所示:
HTTP/1.1 302 Moved Temporarily Server: stgw/1.3.6.2_1.13.5 Date: Sun, 16 Dec 2018 19:38:58 GMT Content-Type: text/html Content-Length: 168 Connection: keep-alive Location: http://61.142.166.245/p73.ping.dnsv1.com/a.php // 备注: 这里的61.142.166.245 是302 跳转之后,厂商返回的CDN 服务IP。
(例子来源于:https://cloud.tencent.com/developer/article/1394677)
这种方式的优缺点:
优点: 1.实时调度、准确性高 原因:由于可以拿到请求的出口IP,每次拿到的最终IP都是实时计算的结果, 所以调度策略是实时生效的,也是当前网络中的最真实情况提供的IP。 缺点: 1.业务兼容性: 要求用户的客户端必须支持302跳转。 2.增加了访问的延迟:使用于对延时敏感业务。 原因:这种模式的调度,每个请求都会多出一次http交互。 比如web静态小资源就不太合适,适用于客户端兼容性好的大文件下载业务。
3.路由调度
Anycast路由技术使得物理分布在全球/全球不同区域的不同服务器具有相同的IP地址,客户端对这个IP的请求会在路由层面引导到最近的物理服务器上。常见于国外的CDN厂商,例如Cloudflare,这不做进一步介绍,可以参考:
https://www.cloudflare.com/zh-cn/learning/cdn/glossary/anycast-network/
参考资料:
http://www.idcquan.com/CDN/720016.html
https://blog.csdn.net/zhaqiwen/article/details/42024045
https://my.oschina.net/u/2822116/blog/736558
https://sking7.github.io/articles/1006724251.html
https://cloud.tencent.com/developer/article/1394677
https://chongit.github.io/2015/04/15/GSLB%E6%A6%82%E8%A6%81%E5%92%8C%E5%AE%9E%E7%8E%B0%E5%8E%9F%E7%90%86/
https://www.cnblogs.com/peon/archive/2007/12/30/1021219.html
LVS:http://www.linuxvirtualserver.org/zh/lvs1.html
欢迎关注公众号:灰子学技术
原文链接:https://blog.csdn.net/zhghost/article/details/112504664?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522165918321816781685391701%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fblog.%2522%257D&request_id=165918321816781685391701&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~blog~first_rank_ecpm_v1~times_rank-13-112504664-null-null.nonecase&utm_term=cdn
原创文章,作者:优速盾-小U,如若转载,请注明出处:https://www.cdnb.net/bbs/archives/312