基于GIC+Docker的文件分发网络黎为民首都在线关于我们•全球一体化云平台服务提供商•全球14个云数据中心•业务覆盖北美,欧洲,东南亚等地区•18年数据中心及网络服务•提供电商,游戏,金融,政府,视频,教育,移动应用等行业解决方案全球多节点分布挑战&需求•作为一个提供全球云计算业务的运营商来说,不管是本身海外节点业务的拓展、平台扩充还是客户定制模板业务的需求,都会涉及大文件的传输。一些普通的ISO系统镜像文件,一些客户定制的系统模板,少则十几G,多则几十G。如此庞大的文件在全球多个节点之间传输,如何保证其稳定、快速的实现,最重要的是文件的完整性的要求,是我们客观面对的问题。•传统的FTP,rsync之类的文件传输无法满足大文件的传输要求。我们经常遇到,辛苦一天传输的模板到一个数据中心节点,结果告知文件已经损坏,无法部署。可靠性无法保证。•客户迫切需要实现全球各个节点之间的大文件快速,可靠的分发,同步。GPN=全球互联GPN+P2P+Docker=全球分发实现思路•稳定快速:大文件的分发的稳定性受限于传输网络,受限于传输协议。我们的分发网络建立在GPN之上,传输网络的稳定性得到保证,传输协议采用的P2P传输,很明显优于FTP等相关协议。•开发:P2P(BT)相关的的软件,工具社区已经有很多成型的产品,因此我们没有必要自己研发。只需要选择适合的开源工具,进行二次开发即可。云计算时代,开发效率是最关键的。•部署交付:分发网络Docker容器化部署,镜像交付。基于Docker的轻量,跨平台特性,标准统一的打包方案,生成可交付的镜像产品。具有良好的RESTAPI,很适合自动化测试和继续集成,分发网络的动态扩展。实现•网络:文件分发网络构建在GPN全球互联网络之上。•tracker:采用集中式的P2P传输模式,tracker使用peertracker。peertracker是一个简单,高效,快速的BTTracker。负责记录每个peer的信息;可以搭建多个tracker做冗余,防止一个tracker宕机导致集群不可用。•peer:使用的是transmission,是一个跨平台的自由软件,自带web界面,支持API调用,可编程性好。•agent:基于flask+dockerapi开发,封装了一整套dockerapi相关操作,提供认证机制,接收中心控制节点的调度,创建peerdocker容器,执行相关任务。部署层级与transmissionpeer端一致。•控制节点:基于django+celery开发。可实现监控整个分发网络运行情况,分发任务执行情况,动态扩展分发节点,下发任务等操作。交付&使用•整个分发网络集群采用D...