内容分发网络即cdn网络,是在用户和服务器之间增加边缘Cache服务层,主要是通过接管DNS,在localDns上增加一次域名解析实现,将用户的请求引导到临近且可用的边缘Cache服务器上,获得从源服务器上缓存下来的数据。这里先特别注意到几个点:“引导”、“临近”、“可用”、“从源服务器上缓存”。CDN网络的调度方式主要分为传统DNS调度和HTTP协议调度,下面就针对以上几点来对比DNS调度和HTTP协议调度,并分析HTTP调度的优势与不足。
Ⅰ.传统DNS调度加速系统
CDN服务提供企业会在全球范围内(网络边缘)建设大量的服务节点。用户访问时,通过DNS调度,将用户的访问请求调度到最近、最优的服务节点。纵观其提供的服务有以下三个特点。
1)基于DNS解析调度
传统的CDN方案借助于DNS的解析来进行调度,使用LocalDNS出口地址作为查询IP,根据查询IP对用户进行地域调度,但这里可能不是用户真实的所在地址。在用户设置Nameserver错误时,例如:国内用户使用google public dns(Nameserver 8.8.8.8/8.8.4.4),我们得到的DNS出口IP是74.125.16.208,该IP属于美国的加利福尼亚州山景城谷歌公司。此时,DNS调度会返回离美国加州最近的CDN节点给用户提供CDN服务。如此情况,就违背了CDN服务“引导”“临近”的初衷。
2)基于故障切换的调度
一套完备的cdn系统都会具备边缘服务节点故障切换机制,并同时满足人工切换和自动切换的要求。但无论何种故障切换,总归是产生故障后的补救措施,会产生CDN加速的服务质量波动。
目前,直播、视频、游戏、电子商务为流量带来了高速增长,CDN市场出现了白热化的竞争,显然出现服务质量问题是各CDN服务提供商所忌惮的,“可用”的服务是CDN服务提供商努力的重点。
3)基于边缘服务节点轮询的调度
CDN服务商通过架设权威DNS服务器,将某个域名在各个区域的对应边缘cache服务节点A记录集合提供给LocalDNS解析查询和缓存。A记录集合最多可为13个,LocalDNS再从13个A记录里通过轮询挑选提供给URL访问用户,又或者全部提供给互联网的用户客户端,由客户端自行挑选。
这里存在一个问题点:同一份互联网资源,可假设为某张图片,最多要在13台边缘cache服务节点都存储一份,而且有可能都需要到互联网企业的源站进行13次的缓存获取。如此,对互联网企业源站所造成的访问压力以及带宽成本,也是需要CDN服务提供商积极考虑的地方,“从源服务器上缓存”的不节制将带来加速客户的不满和反抗。
Ⅱ.基于HTTP调度的内容分发网络系统
内容分发网络的HTTP调度系统,包括决策中心服务器、一个或多个调度中心服务器以及一个或多个边缘调度Cache服务器。决策中心获取全局的服务器集群带宽和负载情况,统一决策全局生成决策策略。调度中心执行中心决策策略,与用户客户端直接建联,在收到客户端内容请求时,根据客户端所在的实际地理位置及请求内容,选择一精准的首选服务器集群,提供给客户端通过302跳转访问,获取缓存内容,实现CDN加速服务。HTTP调度系统相对传统CDN加速服务有以下几方面优点:
1)基于HTTP协议调度
通过增加DNS解析,客户端请求全部被引导至调度中心服务器,双方通过HTTP协议直接建联。调度中心服务器从客户端的请求中获取HTTP头:HTTP_CLIENT_IP,直接取得互联网用户的公网IP,以此作为CDN调度选取边缘cache服务节点的基准,能够精准无误的“引导”请求到真实“临近”的最优边缘服务节点。从根本上消除DNS解析调度在Nameserver设置准确性上的依赖问题。
2)基于带宽、负载调度
HTTP调度系统决策中心依赖CDN网络的节点采集系统,获取CDN系统全网服务节点的实时带宽信息,以及集群的实时健康系数,作为负载数据。决策中心统筹全网负载数据,通过优秀的决策算法快速演算得出决策策略,第一时间将决策策略提供给调度中心执行。
所谓的预防胜于治疗,决策中心及时对全网中负载较高的边缘cache服务节点进行流量的牵引以及执行备选服务集群,提前防范负载高的服务节点硬抗流量出现故障宕机,确保了“可用”的CDN服务。
3)基于边缘服务节点精准调度
随着在线业务网络游戏、网络视频、电子电商等的兴起以及智能硬件、VR、4K高清视频等新技术的出现,CDN行业迎来了一个全新的发展时期。
各大CDN厂商也都在加大力度发展,其主要靠资源驱动,大都是与电信运营商合作,购买丰富的网络节点资源,囤积大量的带宽资源形成行业壁垒。因此,一份互联网资源,例如某张图片,多个边缘cache服务节点都能提供最优的CDN加速服务。然而,调度中心依托决策中心的决策策略,通过精准算法,能对每份互联网资源进行唯一的演算,确定唯一边缘cache服务节点提供CDN加速服务。由此,避免一份互联网资源在边缘cache服务节点的多份缓存,减少“从源服务器上缓存”给互联网企业源站带来的压力和成本开销。
Ⅲ.剖析HTTP调度的优劣
1)优势
从以上分析不难看出,相对于传统的DNS解析调度,HTTP协议调度能够根据互联网用户的真实IP地址将其请求引导到临近的边缘cache服务节点,实现绝对有效的CDN加速服务。
另外,由于HTTP服务器即调度中心服务器与用户端直接建立了连接,能够做到单机级别的精准调度,并实时根据当前带宽信息与集群负载状况,做出决策调度调整,大大提高CDN加速服务的质量与客户满意度。
再者,HTTP服务器上可做的文章巨大,比如能够轻松实现互联网加速需求企业对于不同加速资源的个性化加速策略,这也是传统DNS调度所无法比拟的。
2)不足
思考一个点,HTTP调度中心的HTTP服务器是如何被互联网用户访问到的呢?在当前anycast在国内并常规使用的情况下,一般都是先通过DNS解析来访问到HTTP服务器,然后再由HTTP服务器接管CDN加速服务。
由此可见,在DNS调度的基础上,HTTP调度多了一次TCP三次握手建连的时间消耗。另外,如果互联网用户访问的是一个网页页面,页面上充斥着各种小元素文件,比如CSS、js等等,每个小文件资源的获取如果都需要增加一次TCP三次握手的时间消耗,那显然不是一种最优的加速方式,所以HTTP调度方式并不太适用网页客户,而适用流媒体互联网企业,存在使用场景的局限性。
Ⅳ.结语
总体来看,HTTP调度虽然存在一些不足点,但是瑕不掩瑜,在anycast逐渐使用的未来,使用anycast方案替换第一步的DNS解析方式,相信它的使用场景能够更为广阔,且有可能在CDN加速企业内部替代掉传统的DNS调度,实现更佳的CDN加速方案,也让互联网用户享受更流畅的上网体验,让我们拭目以待。
2. 调度系统设计
2.1 系统架构
爱奇艺CDN调度系统全流程架构如下图所示。
图2-1 IPv4/IPv6调度架构图
以下是架构图中各个系统的角色介绍:
客户端:爱奇艺提供的播放客户端,覆盖手机、平板、电脑、电视和网页等多个平台,客户端首先访问DNS解析HTTP视频调度域名,然后请求HTTP视频调度获取CDN下载地址,最后从CDN下载视频数据;探测服务器:一组开启双栈的HTTP服务器,为全网客户端提供探测服务,帮助客户端判断本地IPv4和IPv6可用情况;Local DNS:客户端使用的DNS服务器地址,由用户所在运营商提供;客户端向Local DNS发起域名解析请求,Local DNS递归查询到爱奇艺Anycast DNS,最后把结果返回给客户端;Anycast DNS:爱奇艺自研的高性能DNS系统,单机QPS可达近百万,基于Anycast技术部署,为全球用户提供高可用的DNS服务,支持IPv6后可提供IPv6 AAAA记录查询解析;HTTP视频调度:CDN核心系统之一,根据客户端请求来源地址归属运营商和区域,为用户选择服务质量最优的CDN,确保用户享受极致播放体验;爱奇艺混合CDN:包括自建cdn和商业CDN,为爱奇艺数亿用户提供就近下载服务;
资源管理平台(天工):资源统一管理平台,实现从资源需求收集、商务拓展、资源采购、资源部署、资源管理、基础运维和成本计算的统一管理,旨在打造以流程管理为基础的自动化运维平台;调度管理平台(伏羲):调度管理平台,管理DNS调度和HTTP视频调度各种配置和策略。调度管理平台从资源管理平台中自动同步机房和服务器基础信息,借助配置管理平台实现配置的快速下发和生效;同时支持通过域名和IP维度进行拨测,实时探测全网服务器健康状态,自动下线故障服务器;配置管理平台(Fast):作为CDN 服务器的管理平台,联动资源管理平台和调度管理平台等多个系统,同步资产和服务等基础信息。利用部署在多个运营商+区域的 Proxy 集群,保证全网 CDN 节点的连通率,提供稳定可靠的配置管理服务。SDN管理平台:网络配置管理平台,实现基于模板支持自定义业务场景的网设配置功能,支持批量下发自定义业务场景配置,支持netconf、ssh和snmp多种管理方式。通过生成配置架构及网元全量配置,实现核心IDC建设自动化建设。
2.2 系统设计
爱奇艺技术团队对客户端、调度和后台管理等多个系统做了大量设计工作来支持IPv6。
下面简要说明各个系统模块针对IPv6功能的设计工作:
客户端:爱奇艺提供了包括手机、平板、电脑、电视和网页等多种播放客户端,覆盖数亿用户。目前绝大多数客户端都已经支持IPv6。当客户端启动以及检测到网络变化时,访问爱奇艺IPv6探测服务器,分别通过IPv4/IPv6发出HTTP请求,以此判断本地IPv4/IPv6网络连通性;在支持IPv6的前提下,客户端优先解析视频调度的IPv6地址;客户端在通过IPv4或IPv6请求调度器时,携带Net-Stack header,告知视频调度器本地协议栈支持情况;Anycast DNS:开启双栈,支持通过IPv4/IPv6 DNS查询A记录和AAAA记录。同时提供永远在线的IPv4&IPv6权威DNS服务;HTTP视频调度:开启双栈,支持通过IPv6地址查询客户端归属运营商和区域;根据用户请求头中的Net-Stack参数以及来源IP地址,判断客户端IPv4/IPv6支持情况,结合调度策略开关和IPv6资源负载,为用户返回IPv4或IPv6下载地址。对于仅支持IPv6的客户端,返回IPv6下载地址;对于支持双栈的客户端,会在IPv6资源允许的情况下,返回IPv6下载地址;对于部分支持双栈的客户端,当IPv6资源紧张的情况下,返回IPv4下载地址;对于仅支持IPv4的客户端,返回IPv4下载地址;流程如下图:
图2-2 IPv4/IPv6调度流程图
HTTP请求头Net-Stack取值示意含义如下:
= X:标识客户端仅支持IPv4;
= Y:标识客户端仅支持IPv6;
= Z:标识客户端支持双栈;
爱奇艺混合CDN: 包括爱奇艺自建CDN和商业CDN,都需要开启双栈,同时支持IPv4和IPv6,结合调度管理平台,可支持部分节点和部分商业CDN支持IPv6的资源模式,可保证资源可以灰度平滑上线;资源管理平台:为了支持IPv6,资源管理平台实现了IPv6地址段管理闭环,其中包括:基于IDC的IPv6地址段录入、自动分配、拨测和回收等功能,为了完成全网IPv6地址的分配,开发了基于命令行的自动化分配工具,结合配置管理平台完成了全网存量的IPv6的配置。在服务器上线(装机子流程)流程根据IDC IPv6的状态,可以自动分配IPv6地址。调度管理平台:从资源管理平台自动同步服务器IPv6配置,增加DNS调度和HTTP视频调度IPv6地址库,拨测系统兼容IPv6;基于区域和机房两个维度的增加IPv6开关,精细控制IPv6上线节奏,在保障用户体验的同时,逐步增加IPv6流量占比;配置管理平台:各个CDN 节点接收到 IPv6 配置任务后,使用自己的资产和服务信息对任务模板进行二次渲染,得到最终的配置命令并执行,执行完毕后上报修改状态;SDN管理平台:全面支持IPv6,通过生成配置架构及网元全量配置,实现一键完成核心机房IPv6相关配置,有效提升IPv6机房资源交付效率;
2.3 网络资源准备
为保障各业务上线IPv6的基础网络资源需求,数据中心和网络的双栈改造是最早启动的工作环节,在2018年底基本完成了数据中心和网络能力的IPv6工作。
下面是关键基础网络能力准备情况:
数据中心IPv6就绪:爱奇艺的数据中心包括Core、Storage和Cache三类,目前已经完成所有自建机房的IPv6地址申请、部署、分配和注册备案工作,确保IPv6网络出口安全可用,全面支持业务双栈上线。网络能力IPv6就绪:爱奇艺自有全球骨干网QNET完成IPv6升级工作,实现三大运营商和教育网等多家基础电信服务商的IPv6对接,并对基于QNET的Anycast系统进行IPv6升级,为DNS核心业务提供高可用的IPv6服务;IPv6网络质量监控:流量监控和网络监控系统完成双栈升级,对比分析IPv6和IPv4网络质量差异和不同区域IPv6网络质量差异,指导和保障IPv6业务上线。
2.4 IPv6节点改造
IPv6节点改造关键是机房基础设施和服务的改造,其中涉及到CDN节点和核心的平台。
下面简要介绍一下节点IPv6改造的流程:
(1) 通过资源管理平台管理节点的IPv6地址段,并为节点的每个服务器和网络设备自动生成IPv6地址;
(2) SDN管理平台从资源管理平台获取节点中网络设备的IPv6信息,通过生成配置架构及网元全量配置,实现一键完成核心机房IPv6相关配置下发与生效;
(3) 在配置管理平台中创建任务模板,自动下发IPv6配置和软件配置到服务器,服务器重启网络,软件配置平滑升级,服务支持IPv6;
(4) 服务支持IPv6后,向调度管理平台注册告知自己具备IPv6服务能力;
(5) 调度管理平台自动调整调度策略,在区域开启IPv6的情况下,自动切入IPv6流量;
整体流程图如下:
图2-3 节点改造流程
借助于爱奇艺CDN完善的支撑平台,无论在硬件资源准备,还是服务软件管理,针对IPv6的支持已经完全自动化,尤其体现在基础网络设备配置、操作系统支持、IPv6资源管理、服务IPv6支持、服务注册和自动调度等方面均已实现自动化管理并上线。
2.5 客户端调度流程
下面是IPv4和双栈客户端访问DNS、视频调度和视频CDN的时序图,从图中可以看到爱奇艺DNS、HTTP视频调度服务和视频服务均已支持IPv6,可以根据客户端不同的请求方式返回IPv4或者IPv6的资源。
图2-4 IPv4/IPv6播放流程图
3. 平滑上线
上一部分详细介绍了整个IPv6业务调度架构和流程,本部分介绍系统上线的关键步骤,其中包括操作系统和软件层面的IPv6配置支持以及如何在调度管理平台进行平滑切量上线。
3.1 系统配置
系统层面配置包括内核调整和系统IPv6配置启用,IPv6启用方法如下:
(1) grub配置开启IPv6
删除/etc/default/grub配置文件中“ipv6.disable=1”配置
(2) 重新生成grub ,配置
使用命令 grub2-mkconfig –output /boot/grub2/grub.cfg 生成新的grub配置文件
(3) IPv6全局开关配置
新增/etc/sysconfig/network配置文件中“NETWORKING_IPV6=yes”配置
(4) 配置网卡IPv6地址
更新配置文件/etc/sysconfig/network-scripts/ifcfg-ethx,增加如下选项
(5) IPv6地址生效
在CentOS 7系统中,需要重启系统,IPv6地址配置才能100%确保生效,CentOS 6 系统只需要执行 service network restart即可生效
(6) 测试网络连通性
通过ping6命令,可以测试IPv6地址与外部IPv6网络连通性
以上工作已经开发出完善的命令行工具,实现自动获取分配IPv6信息并配置的功能。
系统初始化还需要调整以下内核参数:
以上针对系统内核参数、网络配置和IP地址自动分配相关的运维工作,我们使用自研的配置管理平台,已经实现自动化任务模板。针对存量设备,自动从资源管理平台获取IP地址,自动配置;针对新设备,装机流程中自动会分配IPv6地址,自动调整相关系统配置。
3.2 服务软件配置
(1) 调度器和视频Cache服务器开启IPv6端口监听
调度器和视频Cache是基于Nginx开发的,线上环境在server{}模块增加IPv6监听配置示例如下:
(2) DNS服务器开启IPv6端口监听
爱奇艺自研DNS是基于开源的acl[1]框架,为了支持IPv6,acl框架在基础模块和配置方面都做了很多优化,开启IPv6相关的配置如下:
3.3 业务切量
通过爱奇艺调度管理平台,可以灵活的对IPv6流量进行调整控制,对于管理的视频IDC节点,设置开启IDC的IPv6服务支持选项,即可在IDC节点层面打开视频服务的IPv6访问支持:
调度管理平台支持按照用户区域和运营商配置IPv6的开启:
实际的推进过程中,也是通过对用户区域和调度资源(IDC)两个维度进行配置实现灰度切量的,确保不影响用户体验并对用户无感知。
4. 总结和展望
经过一年多的努力,爱奇艺调度系统已经全面具备IPv6服务能力,正在按照区域和运营商,逐步增加IPv6用户覆盖。截至2019年6月底,爱奇艺IPv6月活用户达到上亿级别,峰值带宽达到数百G;
未来,我们仍将继续推进IPv6部署,稳步增加IPv6带宽占比,充分利用IPv6技术优势,为用户带来更好的播放体验。同时,推进IPv6网络部署和系统架构改造,进一步提升用户体验和降低成本。
原文链接:https://www.cnblogs.com/dream397/p/13378757.html
原创文章,作者:优速盾-小U,如若转载,请注明出处:https://www.cdnb.net/bbs/archives/22104