2018 年 11 月, 源于阿里巴巴的云原生镜像分发系统—— Dragonfly 在 KubeCon 上海现场亮相,成为 CNCF 沙箱级别项目(Sandbox Level Project)。前端
Dragonfly 主要解决以 Kubernetes 为核心的分布式应用编排系统的镜像分发难题。2017 年开源即成为阿里巴巴最为核心的基础设施技术之一。开源一年以来,Dragonfly 已在诸多行业落地。git
DCOS 是浙江移动容器云平台,目前在平台式运行的应用系统已有 185 套,包括手机营业厅、CRM 应用等核心系统。</span>本文将主要介绍浙江移动容器云(DCOS)平台以 Dragonfly 为改革“利器”,成功解决了运营商大规模集群场景下分发效率低、成功率低以及网络带宽控制难等问题;并反哺社区,在 Dragonfly 界面功能、生产高可用部署层面对 Dragonfly 进行了升级。github
随着浙江移动容器云(DCOS)平台的持续完善,承载应用不断增长,在运行容器数量接近 10000 个。采用传统 C/S(Client-Server)结构的分发服务体系已经愈来愈没法适应大规模分布式应用在代码包发布、文件传输时的场景:算法
P2P(Peer-To-Peer)是一种点对点网络技术,经过各结点互联,将网络中的资源和服务分散在各个结点上。信息的传输和服务实现直接在结点之间进行,避免了传统 C/S 结构可能的单点瓶颈。docker
CNCF 开源文件分发服务解决方案 Dragonfly,是一种基于 P2P 与 CDN 技术,构建了适用于容器镜像和文件的分发系统,有效解决了企业大规模集群场景下文件和镜像分发效率、成功率低以及网络带宽控制的问题。数据库
Dragonfly 的核心组件:服务器
Dragonfly 分发工做原理(以镜像分发为例):
容器镜像不一样于普通文件,由多层存储构成,下载也是分层下载,非单一文件。每层的镜像文件都会被分割为 block 数据块并做为种子。下载结束后,经过每层镜像惟一的 ID 和 sha256 算法,从新组合成完整的镜像。确保下载过程的一致性。网络
<span data-type="color" style="color:inherit">Dragonfly 镜像下载模式的过程以下图所示:</span>架构
根据 Dragonfly 的上述特性,浙江移动容器云平台结合生产实际决定引入 Dragonfly 技术对现行代码包发布模式进行改造,经过 P2P 网络分摊发布时产生的单一文件服务器传输带宽瓶颈,并利用 Docker 自己的镜像 pull 机制来保证整个发布过程镜像文件的一致性。并发
在 Dragonfly 技术的基础上,结合浙江移动容器云生产实践,统一分发平台的整体设计目标以下:
基于上述目标,统一分发平台的整体架构设计以下:
根据上述平台设计目标与整体架构分析,容器云团队在开源组件的基础上进行了平台功能的二次开发,具体包括:
平台核心服务层(Docktrans)和 API 服务网关层(Edgetrans)都是是无状态、面向集群的、可动态横向扩展的核心组:
以下图所示,统一分发平台的核心模块在进行任务分发时的工做流程具体以下:
截至目前,生产共运行 200 余个业务系统 1700 多个应用模块,已所有优化为镜像发布模式。发布耗时和发布成功率获得明显改善:
采用 P2P 镜像发布后,业务多应用一次上线的月均发布成功率稳定在 98%。
4 月后容器云平台开始用 P2P 镜像发布方式代替传统分发系统的代码包发布方式,多应用一次集中上线发布耗时相较与改造以前大幅下降,平均降低 67%。
同时,容器云平台选取了多个应用集群进行单应用的 P2P 镜像发布改造效果测试。能够看出,单个应用发布耗时相较于改造前大幅下降,平均降低 81.5%。
统一文件分发平台已有效解决了浙江移动容器云应用在代码发布过程当中的效率和一致性问题,成为平台的重要组成部分之一。同时,也支持更多大规模集群中进行高效文件分发的场景。可陆续推广至:集群批量安装介质分发以及集群批量配置文件更新。
目前,客户端界面化开发工做基本完成,已进入生产测试和部署中。分发平台整体规划 4 大核心功能:任务管理,目标管理,权限管理和系统分析,现已开放前三项功能。
权限管理,即用户管理,为不一样用户提供个性化的权限管理功能,具体以下:
目标管理,即用户进行任务分发的目标集群结点管理,为用户提供管理集群的 P2P 组网和集群结点状态信息健康功能,具体以下:
任务管理提供文件或镜像分发任务的建立、删除、中止、信息查看等功能,具体以下:
预计后续将开放系统分析功能,为平台管理员、用户提供任务分发耗时、成功率等数据和任务执行效率统计图表,经过数据统计与预测,有效支撑平台向智能化方向演进。
镜像库主备容灾部署,主备之间经过镜像同步保持数据一致性。
目前,咱们计划把界面功能展现贡献给 CNCF Dragonfly 社区,进一步丰富 CNCF Dragonfly 社区周边生态。将来,咱们但愿更多人参与进来,一块儿为社区繁荣贡献力量。
本文做者:
陈远峥 浙江移动云计算架构师
王淼鑫 浙江移动云计算架构师
Dragonfly 社区贡献者太云在 Dragonfly Meetup 分享到:
“目前,Dragonfly 已经成为 CNCF Sandbox 项目,Star 数 2700+,有不少企业用户正在使用 Dragonfly 来解决他们在镜像或者文件分发方面遇到的各类问题。将来,咱们将不断完善和改进 Dragonfly,为云原生应用提供更加丰富强大且简便的分发工具。期待与你们共同努力,让 Dragonfly 早日成为 CNCF 毕业项目。”
https://github.com/dragonflyo...