2017年4月12-13日,2017亚太CDN峰会在北京隆重召开,大会由亚太CDN领袖峰会、国际CDN论坛、电视新媒体CDN论坛、视频云论坛、未来网络论坛、C未来视频峰会、亚太CDN展览会等7大部分组成。在13日下午的视频云论坛上,高升控股华东研发主管陈一骏作了题为《高升CDN平台的容器化分享》主题报告。
图为:高升控股华东研发主管陈一骏
陈一骏的演讲主要围绕容器化对于CDN方面的落地问题,在当下这样一个CDN环境下,量大且业务复杂,所有的CDN行业从业者需要做出的内容和改动属于近几年来探索过程中十分艰难的部分。容器化本身是一个好现象,它可以将所有CDN纷繁复杂的业务以一个比较标准的方式去部署、实现、落地,容器化的相关技术也能够提升CDN相关的服务质量。
CDN发展历程回顾
在谈到容器化之前,陈一骏先谈到了CDN的发展历程以及高升科技为什么在CDN3.0的时候尝试使用容器化。CDN最早出现的时候只是为了解决缓存,将网站页面上缓存在各个就近的节点上的内容减少,使用户访问网站的等待时间减少,提高网站的响应,随机才开发了网页的加速。在CDN2.0时代,由于互联网的整体发展,互联网上内容开始逐渐丰富,因此整个CDN都开始尝试进行各个内容方向的缓存、加速和视频转码、解码各方面的努力。从2014年开始,经过2015年2016年直到现在,CDN出现了爆炸式的增长。
最后一个阶段的CDN是云时代CDN,需要面临的最大的问题是流量指数增长和基础设施阶梯增长的矛盾。近两年,流媒体的直播成为行业爆点,整个CDN将近90%的流量都是和流媒体相关,整个互联网流量从有云时代的网络爆发开始不论是直播、点播、叫车业务等等和2014年相比是一个长足式的爆发。然而流量太多之后,所有旧有时代的技术都已经落后了。在面对大流量、大业务时,与之而来就是开发大量设备,Docker和容器化应运而生。此时Docker和容器化主要面对的问题有四个:1、流量突发式的爆发,2、安全的防护问题。3、响应和延迟的不稳定。4、量变引起的质变。
高升之于CDN3.0的解决方案
高升在现在的环境下有300多个CDN节点,3000+的带宽,以及大量的服务器。高升的VPN业务有将近90个以上的虚拟专用网节点,IDC有超过200家IDC的星级机房,还有覆盖北美、南亚、欧洲和澳洲相关的国际CDN的业务。
陈一骏谈到容器技术并不是比较新鲜的概念,反而Docker是比较晚出现的容器技术的解决方案。Docker出现以后做了两个突出贡献:一是它提供了准化的容器的解决方案,二是它在2015、2016年和各大公司协商了两个标准化。
容器为什么能减低运维?陈一骏解释说因为容器化是云计算世界中的“集装箱”。集装箱在海运或者货运中起到了非常重要的作用,高升容器化对于业务的部署跟装卸货是一样的概念,容器技术的好处是将所有的业务应用软件打造成一个个的集装箱,这样系统效率会大幅度提升,整体运维会下降,地球上任何一个地方会快速的到达和快速的部署、落地。
容器化带来的优势是其以及其配套的一整套的编排环境和相关自动化流程的软件带来的。第一容器化可以自动化部署,第二可以持续敏捷的进行开发和持续集成,第三是因为容器化本身的标准化,它的架构天然倾向于分布式架构,整体资源出现问题时候的自动调度和恢复都非常的方便;最后也是CDN比较常用的问题,因为容器化是标准化的东西,它可以将不同的业务部署在同一台服务器上而不用担心互相干扰或者污染,对于资源复用也很有用。
容器化特质是将这些业务可以打成镜象,并且以环境变量的形式输出出去,通过环境变量进行快速部署。其次是日志业务,这涉及到了大数据开发对于容器化如何结合分布式存储等等方面的工作。最后是计费,计费和日志系统息息相关。
整个容器化分为四大的组件,最底层的就是Docker。它提供简单想标准、提供容器化,资源隔离复用保持整体环境在业务上的统一。在Docker使用过程中会体验数据存储、检索、消息队列等基础功能,然后是编排软件(mesos),主要解决资源的分布式条度问题。
由于此次陈一骏的演讲主题是“落地”,所以演讲中他分享了几个落地组件的方案。在此前编排过程中,高升在mesos、swarm、kubernetes中选择,最终选择了mesos,swarm一直在测试中。舍弃kubernetes的原因是虽然它的活跃度很高,整个软件在大发展,但是在资源调度的一些概念或者封装上比较封闭,并不适合高升业务的二次开发。mesos本身只提供调度的算法或者调度的方案,在mesos上面,用户要自己写框架或者使用一些已有的框架,比较开放也比较成熟。
高升的容器化主要分为三个部分:
1、mesos的管理中心。mesos的master cluster管理中心有十几台机器保证运作,将近三个大的mesos集群,每个至少保证三台。还使用了马拉松自有的框架来进行业务调度,在马拉松的基础上抛弃了马拉松自己写了一些关于资源的复用或者调动的小框架组件,整体的马拉松又有一些需求的组件,考虑到后续还有业务本身(因为不仅仅PKV的是要给容器服务,还要跟容器配合),所以高升还做了etcd级的cluster,方便CT业务本身。
容器业务本身使用它,在这当中也开发了管理界面直接对配置管理中心做更改。高升自己有一套CI和CD系统将代码自动成镜像,通过分支进行,不同的分支会打成不同相应的镜像存储到Docker的镜像仓库中。最后mesos的slave cluster接受mesos master的调度来接受整体的架构。
2、配置管理。除了服务器,其他业务包括容器调度本身的信息全部写在配置管理器,用户业务使用的时候会分门别类的寻找相关的业务配置,最后通过环境变量或者业务本身的接口调用传递到业务本身。因为Docker本身是无状态的,推行无状态标准化,所以最好有界面能够给开发或者极少量的运维人员上线进行维护。
3、服务复用。Docker在高升的CDN使用不仅仅是持续集成提高开发迭代速度或者配置管理,统一配置将CDN中各种各样的任务比如直播、点播、转码都部署在各地的服务器上,更多的是做一个服务的复用。两大主要业务复用:首先是直播业务,直播和点播业务有一点区别,虽然都与转码相关,但是直播业务本身的时效性对内存有比较高的需求。第二是点播内容,高升尝试把点播和缓存部署在一台机器上,在后台的业务中JSLB包括IP探索的一些小软件也可能单独构建成复用框架。
除了服务复用以外CDN本身业务的特殊性对网络带宽的需求也是非常大的。SDN定义网络本身因为容器业务的迁移和漂流,对网络消耗是很大的。目前大部分是用直联的网络,但是对于个别业务特别是包含和客户相关的定义的调度,比如统一IP之类的业务则需要SDN网络支持。在这一方面,高升的落地方案尝试过包括基于Docker的第三方的网络插件,Docker自带的网络方案等。
由于不同的人、不同的业务对CDN的网络解决方案的需求都不一样,总体来说虚拟网络或者软件定义的网络分为两个方向隧道技术、封装技术。在整个容器落地之后,
容器化技术算是整个产品线或者是整个集团产品线的润滑剂和纽带,一旦容器技术应用,之后所有的业务本身都有标准的部署平台可以将APM、虚拟专用网进行整合,并且对于用户来说可以通过容器化下发容器自定义调度节点。