容器管理平台测试标准研究与应用

2018-01-15 01:42邱红飞黄春光
现代计算机 2017年34期
关键词:镜像容器部署

邱红飞,黄春光

(中国电信股份有限公司广东研究院,广州510360)

0 引言

按照云计算的服务模型划分,云计算可分为软件即服务(SaaS)、平台即服务(PaaS)、基础设施即服务(IaaS)。目前,在IaaS层上的虚拟机技术是最主流的虚拟化技术,它实现了极高的隔离度和标准化,但是虚拟机占用了宿主机的资源,同时虚拟机本身的启动速度比较缓慢。随着云平台研究的进展,PaaS层和IaaS层日趋融合,其核心价值为加速应用、弹性伸缩、动态编排、高效运维,代表性的是容器技术的推广应用。容器也是一种虚拟化技术,Docker容器引擎及其上的容器管理平台使得云平台构建简单高效,容器相关技术的优势主要体现在下列四个方面。

(1)应用的快熟部署

在传统的基础设施环境下,容易造成应用打包的依赖关系遗漏以及开发测试环境不一致问题。通过容器镜像方式,可以把镜像分成基础镜像包、应用镜像包、镜像库等层次,再通过dockerfile构建镜像包,最后发布镜像包之后,保持了开发和测试环境一致性的部署。

(2)统一资源管理和调度

在传统虚拟机环境下,IaaS虽然通过虚拟机的技术实现物理资源的池化,但往往还是静态独占资源,并不能很好的解决共享和资源利用率的问题。容器管理平台能够跟IaaS层对接,屏蔽直接对IaaS资源的获取,通过容器应用按需的方式,进一步加大平台资源的使用率;同时容器具备资源隔离的能力,可以提高应用在宿主机上的部署密度,提升资源利用率。

(3)平台弹性伸缩

在传统虚拟机环境下,在流量快速上升和下降时,短时间内完成应用的扩容和收缩都是很困难的事情。容器管理平台可以满足业务突发高峰时应用的处理能力要求,实现对业务动态变化的敏捷响应。容器管理平台有很强的弹性,支持手动和自动的扩容方式,自动方式可以根据设定的动态伸缩指标,完成应用的快速扩容和缩减。

(4)应用升级和回滚

传统模式下应用软件的升级,除了应用软件本身的升级,还会包含依赖软件包的升级。由于依赖关系的复杂性,所以在传统的环境下回滚一般比较困难。通过使用容器技术,应用软件升级时,制作一个新的容器镜像,升级过程就是先部署一个新的容器,然后停掉旧的容器,再启动新容器。回滚过程就是把新的容器停掉,启动旧的容器,整个过程相对简单。

本文旨在研究电信企业容器管理平台的测试方法,包括性能、可扩展性、高可用性、可移植性等技术指标,从而真正建立一套完整的容器管理平台的测试标准,为企业内选型和采购提供依据。

1 主流产品介绍

(1)容器技术

利用应用容器引擎,开发者可以打包应用以及依赖包到一个可移植的容器中,然后发布到电信的应用Linux服务器上,容器使用沙箱机制,相互之间没有接口。容器运行后几乎没有性能开销,可以很容易地在机器和数据中心中运行。容器将单一应用程序划分成一组小的服务,服务之间互相协调、互相配合,可针对各种特定生产需求而定制个性化的功能。Docker是dotCloud开源的一个基于LXC(Linux Container)的应用容器引擎。Docker扩展了LXC特性并使用高层的API,利用轻量级虚拟化技术进行资源隔离,让开发者可以将应用程序、依赖的运行库文件打包,然后发布到任何系统为Linux的机器上。

(2)容器管理平台

容器管理平台实现业务的快速弹性伸缩,提升资源使用效率,满足业务突发高峰时系统的处理能力要求,实现对业务动态变化的敏捷响应。容器管理平台,具有强大的集群管理和应用调度能力,应用支撑能力,包括服务注册和服务发现机制,内建负载均衡器,强大的故障发现和自我修复能力,服务滚动升级和在线扩容能力。目前有两种比较主流和应用广泛的容器管理平台,Kubernetes和 Mesos。

Kubernetes:遵从Apache2.0开源协议,是为Docker设计的容器编排技术。生态链完善,文档齐全,发展速度迅猛。国内外很多大型互联网公司,都基于Kubernetes构建了容器云系统。Kubernetes是为Docker而设计,能够很好的和Docker技术进行结合。并且生态圈成熟,发展迅速,因此,在容器云编排方面,首选Kubernetes,基本能够满足大多数的应用场景。

Mesos:遵从Apache2.0开源协议,推出时间较早。产品成熟,在国内外很多大型互联网公司有很多成功应用案例。产品技术栈复杂,灵活性不高。要在已经存在的工作任务(Hadoop、Spark等)上做容器化,推荐使用Mesos。

2 现有开发测试存在问题

传统的开发测试部署包括以下部分,如图1:

图1 传统的开发测试部署

传统的开发测试部署过程存在如下几个问题:

(1)对比容器,传统的物理机和虚拟机部署的资源利用效率都比较低;

(2)物理机多应用在进程空间、CPU资源、磁盘无法有效隔离;

(3)对比容器,虚拟机的密度较低,无法部署较多的应用;

(4)物理机和虚拟机的测试和版本管理复杂,测试包和生产包可能存在不一致等问题;

(5)由于需要重新搭建环境及部署操作系统,虚拟机的迁移成本高;

(6)对比容器,传统虚拟机的空间占用大、启动速度慢,另外管理上也比较复杂。

3 容器的测试内容

现有的开发测试部署包括以下部分,如图2:

图2 基于容器的开发测试部署

开发阶段从仓库获取标准镜像,开发完成后将结果镜像保存在镜像仓库中;测试阶段从镜像仓库中获取开发完成的镜像,并进行验证测试,测试通过后提交镜像至仓库;生产阶段获取最新的镜像进行部署,同时对原有镜像进行备份处理。

比较传统的开发测试部署流程和以容器为基础的开发测试部署流程,现有的开发部署存在下列优点:

①简化了环境搭建的步骤,采用容器技术后,不需要自己安装操作系统,安装各种中间件软件和依赖库;

②提高资源利用率,由于容器技术隔离性好,在测试环境和生产环境中可以部署更多的应用;

③提高了开发质量和交付速度,采用容器技术后,测试阶段完成的镜像文件可以放到生产环境中运行,因为镜像本身就带有自己的依赖文件和环境参数,不需要进行修改和调整。

由于容器技术在开发测试部署中优点,本文从容器管理平台的操作易用性、集群、可伸缩、可扩展、高可用等功能和性能要求来制定的一个基于电信系统平台的容器测试技术规范,具体内容如下:

(1)性能指标

①容器网络能力:测试使用容器时,容器同宿主机之间访问请求的性能,同不使用容器时进行对比检查;测试使用容器时,跨宿主机容器之间访问请求的性能,同不使用容器时进行对比检查。

②容器应用并发访问测试:容器的并发访问性能达到性能指标要求,测试并发 100,200,300,400,500个用户,对比系统吞吐量TPS(Transaction Per Second)测试结果。

(2)可用性测试

①容器应用的高可用性:支持容器应用的集群高可用部署;支持容器应用的故障恢复机制。

②容器管理平台的高可用性:管理平台故障,不影响业务应用的正常运行;管理平台支持高可用部署。

③镜像仓库的高可用性:镜像仓库支持集群部署,同时容器镜像支持多副本备份,存储和磁盘故障可快速恢复。

(3)弹性伸缩

①应用手动扩缩容:支持管理员根据业务的实际情况,手动进行应用的扩缩容。

②应用自动扩缩容:支持自动扩缩容的机制,支持CPU、MEM等指标,以及时间周期等指标触发自动扩缩容机制。

(4)可维护性

①容器监控管理:支持容器应用以及所在宿主机的各项指标的监控,包括CPU、MEM、网络、磁盘等。

②告警管理:支持根据监控的关键指标设置告警的规则和阈值,支持告警的上报和查询。

③日志管理:支持容器日志以及应用业务日志的采集和汇总,提供容器统一日志查询机制。

(5)开放性

①API开放能力:能够提供北向API,根据应用场景调用容器管理平台的API完成管理操作。

(6)安全性

①用户管理:提供用户注册和审批等用户管理能力。

②权限管理:提供基于角色的权限管理能力。

③资源隔离:支持用户之间资源的隔离。

(7)基础功能指标

①镜像仓库

(a)镜像上传/下载:提供应用镜像的上传和下载机制,兼容 Docker Registry V2 API;

(b)镜像版本管理:提供应用镜像的多版本管理;

(c)镜像权限控制:提供镜像权限管理机制,通过权限控制镜像的查看。

②容器生命周期管理

(a)容器应用创建和删除:能够进行创建容器应用和删除容器应用;

(b)容器应用启动和停止:能够完成容器应用的停止然后重新启动,删除后列表检查;

(c)容器应用部署和调度:应用部署时支持多种调度算法;

(d)容器应用部署后健康检查和故障恢复:容器应用部署后支持监控检查的机制,当发现容器故障时,平台负责故障容器的快速恢复。

(e)容器管理平台和镜像仓库的对接:容器管理平台在部署应用时直接从镜像仓库拉取镜像进行部署。

③容器网络和存储

(a)跨主机容器网络能够互通:能够提供支持跨宿主机的容器之间的网络互通;

(b)容器网络和宿主机网络互通:支持容器和宿主机网络的互通,容器应用和非容器应用之间的网络互通;

(c)容器支持宿主机本地磁盘:容器支持宿主机本地磁盘挂载容器卷;

(d)容器支持网络存储:容器支持网络存储挂载容器卷。

④应用编排和管理

(a)应用编排管理:提供复杂应用编排能力,完成应用的一键化部署;

(b)应用配置管理:提供应用配置管理能力,针对应用的配置进行统一的管理和下发;

(c)应用滚动升级:提供应用滚动升级的机制,实现应用不间断对外提供服务,同时支持应用的版本的回退;

(d)应用负载均衡:提供应用负载均衡能力,支持应用多实例的负载均衡。

4 性能测试实施解决方案

容器性能测试包括容器网络性能、容器应用并发访问性能。容器网络性能主要指容器同通宿主机之间访问请求的性能,跨宿主机容器之间访问请求的性能。容器应用并发访问性能是指容器的并发访问性能达到性能指标要求,主要是测试并发100,200,300,400,500个用户的TPS。具体实施方案主要是部署qperf客户端和服务端镜像、通过编写LoadRunner脚本来获取系统的各项性能指标,大致的方法如下:

(1)测试数据准备

测试场景准备如表1:

表1 测试场景数据准备

(2)容器网络性能测试过程

容器网络性能测试的测试步骤示意图如图3。

①步骤1:预置集群内服务器运行容器,容器软件、容器集群管理软件已安装就绪,使用qperf作为基准测试工具;

②步骤2:将qperf分别安装部署在两台主机A、B,设主机A为client端,B为Server端,通过主机A向主机B请求,测试其带宽,作为基准值Val;

③步骤3:设主机A仍为client端,将主机B系统环境与qperf一起构建为镜像C启动该镜像,设为Server端,测试Client与Server的带宽Val1;

④步骤4:设主机A系统环境与qperf一起构建为镜像B,启动该镜像,并设为client端;启动镜像C,设为Server端,测试Client与Server的带宽Val2。

预期的测试结果,程序运行正常,所有数据包均可正确收发,Val1>=Val*80%,Val2>=Val*70%。

(3)容器应用并发访问性能测试过程

容器应用并发访问性能测试部署图如图3。

图3 容器网络性能布署图

①准备压力测试工具LoadRunner,采用镜像A部署容器应用,准备好测试脚本。

②分别并发100、300、500用户,压测此容器应用查看此应用的TPS和平均响应时间。

③每次并发持续10分钟。

④填写 100、200、300、400、500并发的 TPS和平均响应时间。

图4 并发访问性能测试部署图

5 结语

Docker是一种轻量级的虚拟化技术,相比传统的虚拟机架构有很大优势,目前电信企业应用系统平台都有采用容器技术部署各类业务系统的规划。本文针对容器管理平台的集群系统的部署、高可靠性、开放性、安全性、基础功能和性能等问题,设计了测试标准和评估方法,该设计与企业应用系统相结合并得到了应用,具有很高的可靠性和效率。本文希望建立一套完整的容器管理平台的测试标准,能够衡量和评估不同的容器管理平台的功能和性能。

[1]张忠琳.基于 OpenStack云平台的 Docker应用[J].设计研究与应用,2014,35(11):73-76.

[2]伍阳.基于Docker的虚拟化技术研究[J].信息技术,2016(1):121-126.

[3]常煜芬.中间件技术研究[J].计算机应用与研究,2001,12(12)233-236.

[4]陈琳.网络中间件的测试方法研究[J].计算机应用研究,2005,8(9)137-139.

[5]周相兵.面向服务的网构软件中间件研究[J].计算机应用研究,2008,10(9)56-59.

[6]华为实践小组.Docker技术入门与实践[M].机械工业出版社,2016.

猜你喜欢
镜像容器部署
一种基于Kubernetes的Web应用部署与配置系统
晋城:安排部署 统防统治
镜像
部署
难以置信的事情
镜像
液体对容器底及容器对桌面的压力和压强
部署“萨德”意欲何为?
取米
镜像