基于容器的轻量资源交付技术试验
2017-09-15梁奂陈春华姚文胜乔宏明
梁奂,陈春华,姚文胜,乔宏明
基于容器的轻量资源交付技术试验
梁奂,陈春华,姚文胜,乔宏明
(中国电信股份有限公司广州研究院,广东 广州 510630)
为了解Docker技术成熟度、可运维能力和运行的可靠性,从软件开发、测试到部署等环节对Docker集群管理以及相关技术进行验证,介绍了容器实践中容器性能、应用容器化改造、规模部署与运维、安全性、容器兼容、持久化数据存储6个方面的测试结果,并分享了容器的实践经验和应用建议。
轻量资源 容器 Docker 镜像 虚拟机
1 引言
互联网业务和虚拟化技术的发展推动IT基础设施云化的进程,目前中国电信集团已经建立了集中资源池,支撑了集团总部/省公司的业务和应用,实现了IT资源资源共享和管理。在集中、开放的IT深化改革大背景下,集团总部和各省IT资源池规模越来越大,需承载的应用越来越多,需要资源池以更低的成本提供更加灵活、高效的资源服务能力。
目前资源主要是以虚拟机(VM)/裸机等重资源交付方式为主,存在虚拟机开通效率较低,虚拟机跨平台迁移困难,应用发布工作量大、耗时长,操作系统兼容性差等问题。为此,需要考虑采用新的技术来提升资源交付的效率。
本次试验是在IT资源池上验证轻量级资源交付技术,验证应用系统从开发、测试到部署的技术方案,以及容器技术的成熟度、可运维能力和系统运行可靠性。
2 轻量资源交付技术
容器技术是一种轻量的操作系统级虚拟化技术,也是一种轻量的资源交付技术。而Docker是目前容器中关注度最高的技术,可以说是当前容器技术的事实标准。
2.1 Docker容器
Docker容器技术是近年来新兴的虚拟化工具,它可以与传统虚拟机一样实现资源和系统环境的隔离。容器与虚机的实现框架如图1所示:
图1 虚机和容器的实现架构
Docker是一种操作系统级的轻量化虚拟化技术。与传统虚拟化技术相比,容器技术以容器引擎替代了传统虚拟化技术的用户操作系统(OS)层和虚拟化(Hypervisor)层,与宿主机共用操作系统内核。因为容器不需要为每个应用分配单独的操作系统,所以容器会拥有更高的资源使用效率。同时,容器实例规模更小,创建和迁移速度也更快,这意味相比于虚拟机,相同的硬件设备当中,可以部署数量更多的容器实例。因此,容器在资源交付效率、启动速度和运行性能上更有优势[1]。
2.2 容器镜像技术
Docker镜像跟传统虚机的镜像不一样。在虚拟机中,镜像是一个系统的完整体,包括了系统、用户在上面做的操作等。而在Docker中,镜像是一组文件的叠加。
图2 Docker镜像结构
如图2所示,Docker镜像是一个只读的静态文件,包含了其应用运行所需文件系统、应用二进制文件、应用运行依赖的软件包等数据。当镜像加载完成后,会产生容器,并随之创建一个读写层。之前加载的镜像都是只读的,所有的修改操作都会放在这个读写层中。如果修改的是下面只读层的内容,则会拷贝到读写层再修改,这样就保证了层的读写分离。Image不保存用户状态,可以用于模板重建和复制[2]。
镜像仓库是集中存放镜像文件的场所,仓库分为公开仓库(Public)和私有仓库(Private)两种形式。
2.3 容器的资源隔离和限制
容器通过Linux内核的namespace和cgroup技术实现资源隔离和限制[3]。
内核的namespace类型包括进程、网络、进程间通信信号、文件系统、用户等,不同的Docker使用不同的namespace。在同一个namespace下的进程可以感知彼此的变化,但无法感知外部进程的存在。这样就可以让容器中的用户产生错觉,仿佛自己置身于一个独立的系统环境中,以此达到独立和隔离的目的。
Cgroups是Linux内核提供的一种机制,这种机制可以根据特定的行为,把一系列系统任务及其子任务按资源划分等级划分到不同组内,从而为系统资源管理提供一个统一的框架。它不仅可以限制被namespace隔离起来的物理资源(包括CPU、memory、IO等),还可以为资源设置权重、计算使用量、操控进程启停等。
2.4 资源交付方案
容器技术(Docker)不仅是一个容器框架,也是一套应用打包和部署的解决方案。容器技术对于应用依赖封装完整,同一镜像可重复地在测试、集成、生产等环境部署,适用于持续集成、持续部署环境。容器技术所提供的轻量级虚拟化技术适用于微服务架构,实现秒级部署、弹性扩展,并更高效地利用计算资源。容器镜像正逐渐成为应用交付的标准,加之迅速成长的生态系统,将会是应用发布、分享的首选方式[4]。
Docker将应用和应用运行的依赖环境封装成为镜像,并将镜像作为交付物推送到镜像仓库中。在进行应用部署时,再从镜像仓库中下载镜像,部署到不同的运行环境中去,从而实现了应用“一次构建,处处运行”。
3 轻量资源交付技术验证与实践
3.1 Docker容器验证
为验证轻量级资源技术成熟度、运维支持能力和运行可靠性,我们从资源管理、容器平台和应用管理3个层面,选取企业关注焦点进行验证。验证的内容包括容器性能、应用容器化改造、规模部署与运维、安全性、互联互通、存储6个方面,涉及了软件构建、测试到部署的全过程。
(1)Docker容器性能测试
本次实验中采用sysbench 0.4.8作为压力测试工具,针对相同配置下(32核、64 G内存、Centos7.1)的不同场景,对CPU利用率、内存利用率、磁盘IO效率、网络IO和Redis访问效率进行测试。测试场景包括物理机、物理机+容器、虚机、虚机+容器等四种,测试结果显示:
1)CPU利用率:物理机容器CPU利用率比虚机高25%;
2)内存性能:物理机容器与虚机比较,内存读效率高27%、写效率高32%;
3)磁盘IO访问效率:虚机相对物理机性能下降超过50%,容器化与宿主机相比无差异;
4)网络IO访问效率:虚机相对物理机性能下降超过8%,容器化与宿主机相比无差异;
5)Redis读写性能:应用部署在物理机容器上与应用运行在虚机比较:前者读效率高20%、写效率高12%。
因此,我们认为:容器资源利用效率明显高于虚拟机,资源利用效率接近宿主机。
(2)持久化数据储存能力
根据容器的技术特性,用户数据会随着容器的销毁而丢弃,因此,用户须将持久化数据保存在容器外部。在容器实际应用中,容器支持以Volume数据卷方式挂载外部存储空间来保存持久化数据。
我们采用容器Flocker Plugin方式实现对外部储存(FusionStorage分布式存储系统)的访问。测试内容包括:新增、删除、查看和管理数据卷;删除容器后,验证容器数据卷完整性;验证可移动性:数据卷在集群中的任何容器上使用;验证容器跨主机迁移后数据卷是否随着容器在主机之间移动等。
通过本次测试,得出如下主要结论:
1)通过容器云平台可以实现对外部分布式存储,可以实现存储卷的创建、挂载、删除及迁移等功能。
2)通过第三方插件Flocker可以接收北向API收到的存储请求,如创建、删除、加载、卸载和迁移数据卷(volume)等,并传递给底层数据平面去完成实际的存储操作。
(3)容器安全隔离
容器技术是资源池管理和调度应用中的新技术,其安全性是生产应用中必须重点考虑的问题,为此结合电信业务场景和容器技术特点,对容器安全进行研究,并进行隔离能力验证,保障基于容器部署的IT服务能力满足企业安全管理和平稳运营要求。
本次验证将从容器常见的安全问题入手,选定5个验证项:Cgroup资源限制针对资源独占的问题;Namespace资源隔离针对内核漏洞及容器突破的问题;镜像安全针对含毒镜像及加密校验等问题;此外还选择了生产环境中应重点考虑的如网络隔离、安全增强等方面进行验证。
本次是基于福富公司的FCSP容器云平台进行测试,主要结论如下:
1)容器技术通过Cgroup可以实现容器与容器之间、容器与宿主机之间CPU、内存、磁盘IO的资源限制;
2)容器技术通过Namespace可以实现容器与容器之间,容器与宿主机之间UTS、IPC、PID、Network、Mount、User等资源的隔离;
3)通过创建多个overlay网络,可以实现不同Vxlan间的隔离;
4)镜像的安全访问通过镜像仓库的权限控制及镜像校验得到保障。
(4)容器兼容能力
容器技术是一种新型的虚拟化技术,在一定时期内,会与传统虚拟化技术并存,因此我们验证了容器技术与传统虚拟化技术混合组网的应用场景。服务端和客户分别部署在容器或VM环境中,进行相互之间的互通性测试。
选择生产环境中最常用的四个互联互通场景(HTTP、SSH、FTP、DB数据库),验证容器环境与传统物理、虚拟环境混合并存的可行性。选择某些在运行的应用系统,将部分应用(Web应用服务)进行容器化改造和部署,验证系统系统在混合部署模式下是否能正常运行。
测试的结果显示:
1)容器与虚机之间的应用服务访问(HTTP、SSH、FTP、DB数据库)正常;
2)部分模块容器化部署后,应用系统能够正常运行。容器环境与传统虚拟环境混合并存是可行的。
(5)应用交付效率
由于容器快速部署、环境一致性等特性,DevOps理论与实践也伴随Docker技术成为研究热点。因此,我们对Docker环境下的应用交付模式进行了测试,分析Docker交付模式与传统交付模式在开发、测试、部署和运维方面的差异以及两种交付模式下工作量对比分析。
本次是在Daocloud容器云环境对统一账户管理系统部分进行容器化试验,主要结论如下:
1)Docker模式下,开发人员构建镜像,运维及测试人员只需获取镜像启动容器即可(无需修改配置更新代码),减轻了工作量,节省资源;
2)容器启动时间短:轻量化的容器可以秒级启动;
3)应用容器化后可以在线升级:以新版本进行启动容器,旧版本容器关闭,在线更新;
4)大大缩短了应用交付的速度,水平扩容耗时短:
◆容器镜像启动,自动服务发现与负载均衡配置,耗时约5分钟;
◆虚拟机实例复制、负载均衡配置,耗时约20~60分钟。
(6)应用部署及运维能力
为了验证容器技术规模应用部署及运维支撑能力,本次试验选择了5家具有代表性的容器云平台,包括传统IT厂商和新兴互联网公司。测试主要从如下几方面进行测试验证:容器及平台管理、服务与应用管理、多租户管理、镜像管理、编排部署、运维支撑等。
本次是在广州研究院IT实验室进行测试,结果显示如下:
1)从参加测试的容器管理产品来看,商用案例还不多,成熟度仍有待提升;
2)传统IT厂商能从资源池管理角度,考虑了容器与虚机、物理机的联动管理;而互联网公司则主要关注容器的管理,不涉及底层物理资源管理;
3)参测的管理平台基本能提供控制台、容器启停、集群管理等运维管理功能,可查看容器信息、集群信息、性能信息和日志信息;支持应用快速扩展和负载均衡等能力;具备故障自动恢复能力。
3.2 应用实践效果
本次试验过程中,除了在实验室进行测试外,还分别对两个省公司应用系统的Docker化进行了实践。
截至2017年1月,安徽分公司已经有统一认证平台、统一日志平台、自动化运维平台3个生产系统部署在Docker云平台集群中,实现了生产系统的Docker化部署和微服务拆分。实测统一认证平台每秒认证次数达到1 000以上,并且运行稳定,达到了很好的应用效果。
广西公司将电信激活系统的服务接口模块、工单调度与解析模块、回单模块、前端Web模块等进行容器化改造(6个镜像),并在生产环境下进行验证。验证结果显示:容器部署成功,且可以进行新老接口的开通工单接收,完成工单/子工单的配置操作。
3.3 容器技术使用建议
通过本次学习和实践,认为容器集群管理平台、编排工具等已逐步成熟,生态体系较完整。容器技术属于操作系统级的虚拟化技术,是传统虚拟技术的补充,一定时期内并存,可以用来解决IaaS层与PaaS层的衔接问题,容器可以快速搭建企业PaaS平台,可以在基础设施优化、CI/CD、DevOps等领域发挥其独有的优势。
从目前的容器应用场景来看,容器非常适合于短连接、无状态的应用,如Web服务器、数据分析应用、restful API等,支持业务的快速、动态伸缩。但在支持有状态应用运行方面,目前尚未有更好的方案。
对于应用容器化引入时机方面,我们建议可以在自开发测试环境中积极使用,并逐步在生产环境扩大应用范围;可以扩大在生产系统的验证范围,如网厅/掌厅等BSS前端系统;可以基于容器的搭建Devops平台,解决应用的快速部署、伸缩和编排等问题。
4 结束语
通过本次试验,可知容器技术是一种轻量的虚拟化技术,是传统虚拟化技术的一种补充。由于容器技术本身也是在不断的完善中,实际应用过程中仍有存在很多的“坑”,使用就是不断填坑的过程。在容器技术大规模应用前,我们建议企业需要提前做好容器技术人才的储备,做好容器维护队伍建设和容器运维制度建设等方面的准备工作。
[1] 徐锦韬. 虚拟机、容器与Docker技术对比[J]. 科学与财富, 2016,8(4).
[2] 汪恺. 基于容器虚拟化技术研究[J]. 计算机技术与发展, 2015(8): 138-141.
[3] 伍阳. 基于Docker的虚拟化技术研究[J]. 信息技术, 2016(1): 121-123.
[4] 高礼. Docker技术在软件开发过程中的应用研究[J]. 软件, 2016,37(3): 110-113.
[5] 卫彪. 深入浅出Docker轻量级虚拟化[J]. 电子技术与软件工程, 2016(10): 252.
[6] 刘思尧. 基于Docker技术的容器隔离性研究[J]. 软件, 2015,36(4): 110-113.
[7] 于烨. Docker技术的移植性分析研究[J]. 软件, 2015(7): 57-60.
[8] 陆钢. 电信运营商对容器技术的探索和思考[J]. 电信科学, 2016,32(8): 159-163.
[9] 许丽婷,傅翔君,杨晶晶. 基于Docker技术的分层式数据安全性防护系统[J]. 信息化研究, 2017(1): 51-55.
[10] 张楠. 云计算中使用容器技术的信息安全风险与对策[J]. 信息网络安全, 2015(9): 278-282. ★
梁奂:国家正式注册咨询(投资)工程师,硕士毕业于暨南大学计算机软件专业,现任职于中国电信股份有限公司广州研究院,从事电信IT系统规划与IT服务管理方面的研究工作。
陈春华:高级工程师,硕士毕业于湖南大学工业自动化专业,现任职于中国电信股份有限公司广州研究院,从事电信企业信息化规划和IT服务管理方面的研究工作。
姚文胜:高级工程师,现任职于中国电信股份有限公司广州研究院,从事运营商信息化规划与建设相关工作。
Experiment on Lightweight Resource Delivery Technology Based on Container
LIANG Huan, CHEN Chunhua, YAO Wensheng, QIAO Hongming
(Guangzhou Research Institute of China Telecom Co., Ltd., Guangzhou 510630, China)
In order to understand the technical maturity, operation ability and reliability of Docker technology, the Docker cluster management and related technology were validated from aspects of the software development, test and deployment. The container performance, container transformation, scale development, operation, maintenance, security, container compatibility and persistent data storage in the container practice were introduced. The container practical experience and application suggestion were shared.
lightweight resource container Docker image virtual machine
10.3969/j.issn.1006-1010.2017.15.010
TP399
A
1006-1010(2017)15-0050-05
梁奂,陈春华,姚文胜,等. 基于容器的轻量资源交付技术试验[J]. 移动通信, 2017,41(15): 50-54.
2017-04-28
责任编辑:黄耿东 huanggengdong@mbcom.cn