基于Docker的应用部署管理平台研究
2017-07-12邹保平黄文思张文晋韩泽华程仲汉
邹保平,黄文思,张文晋,韩泽华,程仲汉
(国网信通亿力科技有限责任公司 福建 福州350003)
基于Docker的应用部署管理平台研究
邹保平,黄文思,张文晋,韩泽华,程仲汉
(国网信通亿力科技有限责任公司 福建 福州350003)
针对现有应用管理平台在云储存服务器托管过程中资源过度消耗的问题,本研究利用Docker容器设计了一套应用部署管理平台,由Spring MVC框架编写Web管理界面,并选择虚拟机建立私有注册表保存预先设计的应用部署管理程序,实现了自动化巡视、自动化部署和自动化配置3个方面的应用部署管理。为了验证Docker容器机制的即时有效性,同时选取CBSD机制对自动化巡视子系统的应用程序中不同Slave节点运行时间进行对比,结果表明:当节点数量为200和400时,CBSD机制处理时间约为Docker容器机制的2倍和6倍,随着应用程序的节点数量的增加,Docker容器的处理方式优势显著。
Docker容器;MVC模式;虚拟机;应用管理;系统设计
随着互联网技术的发展和云计算技术的普及,公司或企业都在试图建立一个私有云平台[1]。云平台作为共享计算资源的一种形式,由特定形式的开源程序充分利用计算资源集[2]。基于资源共享的云平台可以分为 3个层次[3]:IaaS(基础设施即服务)、SaaS(软件即服务)和PaaS(平台即服务)。其中,PaaS为应用软件提供了一个更容易操作和部署环境,但是现有的PaaS平台仍有一些不足之处:首先,应用托管环境的PaaS平台单一,其只能提供运行环境特定的编程语言或脚本语言[4];其次,PaaS平台的组成部分是封闭的;最后,虚拟机消耗过多的资源[5]。因此,为了找到更轻量级的虚拟化解决方案以减少资源消耗,本研究通过Docker容器开发一套应用部署管理平台,在该平台中提供了各种应用程序的运行环境。不仅支持流行的编程语言和脚本语言,而且提供了更强的兼容性和更灵活的操作环境。
1 系统设计
1.1 应用环境
将应用部署平台部署在开栈并使用开栈虚拟机部署。正是在这样的群主-从结构,该API服务器部署在主节点作为输入系统[6]。它封装了Docker容器添加,删除,修改等操作,并提供给外部客户和内部组件来调用。
1.2 Web管理界面
由Spring MVC框架编写Web管理界面[7]。它主要是通过独立的模型,视图和控制器角色从接口分离应用的业务逻辑。通常情况下,模型负责封装应用程序数据的视图层显示。图只显示这些数据,它不包含任何业务逻辑。该控制器负责接收来自用户的请求,并回叫服务来处理业务逻辑。处理后,后台业务层可能会返回一些数据并显示在视图层。控制器收集数据,并在该视图层制备的模型和显示。MVC模式的核心思想是将业务逻辑从界面分开,并允许数据在不影响彼此独立时进行改变。在Spring MVC应用中,模型通常由POJO对象组成,主要负责业务层和持久层的处理[8]。通常由JSP编写标准标记库模板[9],而控制器部分是负责调度servlet[10]。在数据密集小群和节点的状态的集群中,也实现了创建、删除和Web界面等操作。用户可以更方便的通过图形界面进行操作。
1.3 Docker集群管理
Docker集群通信采用flannel网络配置模式。flannel网络允许集群中的不同节点创建具有集群唯一虚拟IP地址的Docker容器[11]。因此,可以直接通过IP网络在不同的容器与Docker容器进行通信。VNC服务器可以用来实现到Docker容器Web访问,VNC服务器满足分布式用户共享服务器资源[12]。而NoVNC是一个基于HTML5的VNC客户端。安装VNC服务器到Docker容器中,并通过IP访问Docker窗容器,即端口。使用的Docker注册表是私有注册表,根据用户的需求,可以使用Docker文件实现Docker图像,方便了用户建立应用或环境。
1.4 应用功能划分
IT运维的自动化应用部署管理平台主要包括3个方面:自动化巡视、自动化部署和自动化配置。其中,自动化巡视是通过构建API接口服务器实现模型功能模块与监控无缝对接,将可视化的应用程序连接到控制器,最终在主机中通过VNC客户端运行Docker注册表,实现对用户操作规范的约束、操作审计、合规性检查和对IT资源进行实时监控。自动化部署是通过自动监控和管理模型实现故障或问题综合处理和集中管理。例如,在自定义周期内进行自动触发完成对IT运维的例行巡检,形成检查报告,包括自动运行维护,以完成对系统补丁的同步分发与升级、数据备份、病毒查杀等工作。而自动化配置则是将事件与流程相关联,被监控系统发生性能超标或宕机,触发相关事件以及事先定义好的流程,可自动启动故障响应和恢复机制。自动化工作平台还可帮助IT运维人员完成日常的重复性工作 (如升级、备份、巡检等)。
2 平台实施
本研究基于Docker容器设计和实现的应用部署管理平台,是建立在Docker技术上提供应用程序、该部署操作,服务发现,体积减少和其他功能的膨胀容器资源调度。其结构图如图1所示。
图1 应用部署管理平台结构图
基于OpenStack的平台选择3台虚拟机部署应用部署管理平台,kubernetes系统框架为Docker容器集群管理系统的容器化应用提供应用程序的资源调度与部署运行[13]。因此,运用kubernetes系统框架和Ubuntu 12.04操作系统上的源编译构造主-从结构,即有两个仆从的节点和一个主节点,并且主节点也是仆从节点[14]。Flannel网络中,不同的节点的通信方式是不同的。Flannel网络运行的一个代理在每个主机上负责分配子网的一个预配置地址空间,同时,使用ETCD来存储网络配置中分配子网和辅助数据(如主机的IP)报文的转发,使用的是终端服务器来实现。最简单的终端服务器是UDP和使用TUN器件封装每个IP片段的UDP包,形成一个覆盖网络。ETCD作为使用的所有空闲API对象的持久存储和键值存储。系统源代码通过提供集群协调、状态管理和规范存储作为分布式系统的核心。
使用Docker作为基本组成部分,并在每一个节点进行应用部署。传统的虚拟化技术是在硬件层面上的虚拟化,并且需要有附加的虚拟机管理应用和虚拟机操作系统层。Docker容器通过使用本地主机操作系统上的虚拟化,可以直接实现操作系统级别的虚拟化过程[15]。比较Docker技术虚拟化架构与传统的虚拟化,如图2所示。
图2 Docker虚拟化与传统虚拟化对比
在管理平台的应用部署处理流程中,使用Spring MVC框架作为仪表板,其中,API的总体程序可为用户创建、更新、删除或者通过标准的HTTP传输协议实现检索对象的描述,而这些API优先接受并返回JSON,然后分析网络信息中心的JSON字符串并对应用部署管理平台进行自动化巡检、自动化部署和自动化配置等功能。如图3所示。
图3 Spring MVC模式流程
VNC服务器满足分布式用户在服务器上直接共享服务器资源,而noVNC是基于HTML 5的VNC客户端。它被广泛应用于各大云计算和虚拟机的控制面板,如OpenStack云计算管理平台和OpenNebula功能集[16]。noVNC是通过WebSockets进行实现,但是目前许多VNC服务器不支持WebSockets,则noVNC不直接连接到VNC服务器。因此,需要利用代理的WebSockets和TCP控制协议之间进行转换。
Docker使用Docker中转站存储应用程序,用户可通过从Docker中转站选择应用程序包创建容器,但由于网络传输的带宽限制,延迟时间较长。因此,通过建立私有注册表保存预先设计的自动化巡检、自动化部署和自动化配置的子系统模块。通过Dockerfile建立注册表并保存在节点的容器内,以满足用户的需求。
在这个Docker集群中建立一个DNS集群插件,运行 DNS集群中的 3个子容器:skydns、ETCD和kube2sky。该ETCD是skydn和kube2sky流程时间在服务器上的变化,然后将信息写入ETCD并读取skydns。
3 平台的实现与性能测试
3.1 应用部署管理平台的实现
1)自动化巡视子系统的实现
通过监控工具实现对用户操作规范的约束和对IT资源进行实时监控,包括服务器、数据库、中间件、存储备份、网络、安全、机房、业务应用和客户端等内容,通过自动监控管理平台实现故障或问题综合处理和集中管理。子系统同样也是处理来自Server端的HTTP请求,这样做的目的是为了在程序进程中对每个节点进行运算上,通过定时周期性的向Resource Scheduler上报CPU占用率、硬盘剩余空间和内存使用率等信息,实现对应用部署管理系统的自动巡检。而通过适配底层的Docker容器,又可获取其上每个容器的负载临界数据,包括CPU占用率、硬盘读写状况和内存使用率等。
2)自动化部署子系统的实现
作为是整个系统的核心,当一个申请应用程序的请求通过API服务器到达系统内部的时候,是由其决定数据流的方向。对于部署子系统实现自定义周期内进行自动触发完成对IT运维的例行巡检,形成检查报告。包括自动运行维护,以完成对系统补丁的同步分发与升级、数据备份、病毒查杀等工作。客户端接受来自Server端的请求,并且在Client端口对该请求进行解析,如果是部署应用请求,则直接进入系统的部署模块,即发送给处理器,通过控制器将部署应用请求发回主机。在动态的资源调度器中,对应用程序终端Docker容器中的配置程序进行二次调度,并按照Dockerfile预先建立的私有注册表对部署策略进行选择
3)自动化配置子系统的实现
自动化配置主要提供了对应用程序的删除和修改,采用CGI构架与Server端进行交互使用,并发送一个请求激活对应的CGI应用程序,接着接收到Server端返回的HTTP配置请求。控制器在对请求参数信息进行提取分析,若该请求为配置请求,则由配置应用程序执行,即表明系统处于稳定状态,若该请求为删除请求,则由删除应用程序执行,即表明业务系统的健康程度、硬件系统的生命周期、负载临界、事件关联性等多个维度都可以发现问题产生的潜在因素。
3.2 性能测试
基于Docker的应用部署管理平台中的应用自动化巡视、自动化部署和自动化配置3种子系统均是通过预先根据模型设计的应用程序所执行,则Docker容器在对应用程序中的节点进行计算的过程中,由于各应用程序的节点数量不同,其运行时间随配置的Slave节点的数量增加而增加。因此,通过构造虚拟机的方式建立伪分布实现仿真对平台的性能进行测试。其中,硬件的CPU采用Core i7 6700K,最大达到4.2 GHz。系统采用Windows 8操作系统和boot2Docher。通过Docker集群管理,登录到主节点并执行如下kubectl命令。其中,节点IP信息、集群名称、状态和位置信息的节点,如图4所示。
图4 节点信息
为了说明Docker容器在处理应用程序的即时有效性,本研究对自动化巡视子系统的应用程序分别选取100,200,300和400个Slave节点。采取5次运行时间的平均值作为Docker容器执行自动化巡视子系统的应用程序的结果,并与传统的CBSD机制运行结果对比,如图5所示。
图5 运行不同节点数的时间对比
由图5可见,当Docker容器执行的节点数量较少时,与传统的CBSD机制在时间上差距不大。而随着应用程序的节点数量的不断增加,Docker容器的处理方式优点则表现显著。当节点数量为200时,CBSD机制处理时间是Docker容器机制处理时间的2倍左右;当节点数量为400时,两种处理方式的时间相差6倍左右。因此,自动化巡视子系统包含的众多应用子程序伴随着节点数量的增加,Docker容器的执行将更为便捷。
4 结 论
本研究基于Docker容器设计了一种应用部署管理平台,满足了开发者的开发环境的需求,使得虚拟机的资源消耗和托管环境更简化。利用Docker容器可以提供给开发者轻量级开发环境和各种应用程序的运行环境,该Docker容器机制也可以在许多其他平台实现。对于用户而言,这个平台可以通过简单的Web界面来使用。用户可以更灵活地构建基于Docker容器的私有云和虚拟化,且便于维护使用。在对应用程序中的节点进行计算运行的过程中,Docker容器的处理方式优势显著。
[1]王有元,蔡亚楠,王灿,等.基于云平台的变电站设备智能诊断系统 [J].高电压技术,2015,41(12):3895-3901
[2]许丞,刘洪,谭良.Hadoop云平台的一种新的任务调度和监控机制 [J].计算机科学,2013,40(1):112-117.
[3]李仲生,魏叶华.智能云教学资源共享平台架构研究[J].计算机教育, 2015(21):33-37.
[4]崔立真,刘士军.云制造PaaS平台中协同过程构建与定制方法[J].计算机集成制造系统,2012,18(10):2331-2339.
[5]徐鹏,张岩江,苏森.PaaS云资源调度技术研究[J].华中科技大学学报:自然科学版, 2013,41(2):52-56.
[6]姜毅,王伟军,曹丽,等.基于开源软件的私有云计算平台构建[J].电信科学, 2013,29(1):68-75.
[7]薛峰,梁锋,徐书勋,等.基于Spring MVC框架的Web研究与应用[J].合肥工业大学学报:自然科学版, 2012(3):337-340.
[8]李容.基于MVC模式的Web应用研究 [J].软件导刊,2010,9(1):19-21.
[9]胡甜甜,曹旻.基于本体理论的关系数据库存储模式[J].计算机工程与设计, 2014,35(9):3075-3079.
[10]常祖政.利用JSP+JavaBean编写资源(文件)管理器[J].电脑编程技巧与维护,2010(5):34-37.
[11]李朝东.基于数字图像处理技术的苎麻叶片信息研究[D].长沙:湖南农业大学,2010.
[12]孔祥真,邢宏健.Linux操作系统VNC服务器的配置与管理[J].网络安全技术与应用,2014(4):68-68.
[13]李小宁,李磊,金连文,等.基于OpenStack构建私有云计算平台[J].电信科学, 2012,28(9):1-8.
[14]刘志广,占伟,孟宪纲,等.Ubuntu12.04系统下Bernese5.0安装与升级详解 [J].全球定位系统,2013,38(3):79-83.
[15]伍阳.基于Docker的虚拟化技术研究[J].信息技术, 2016(1):121-123.
[16]刘宇.企业私有云平台构建技术研究[J].计算机时代, 2011(6):37-41.
Application deployment management platform based on Docker
ZOU Bao-ping,HUANG Wen-si,ZHANG Wen-jin,HANG Ze-hua,CHENG Zhong-han
(State Grid Info-Telecom Greate Power Science and Technology Co.,Ltd, Fuzhou 350003,China)
Problems of the prior application management platform in the cloud storage server hosting the process of excessive consumption of resources,this study designed a mechanism Docker container application deployment management platform,by the Spring MVC framework for writing Web management interface and select the virtual machine to establish private registration table holds predesigned application deployment management program, automated inspection, automated deployment and automated configuration management application deployment in three areas.In order to verify the effectiveness of the Docker immediate container mechanism,but the mechanism for selecting CBSD different Slave node running the application automated tour subsystems time to compare results showed that:when the number of nodes 200 and 400,the processing time is about Docker CBSD mechanism container mechanism 2 and 6 times, with the number of applications of nodes increases, the advantage Docker container handling significantly.
Docker container; MVC pattern; virtual machine;application management;system design
TN915.85
A
1674-6236(2017)12-0041-04
2016-05-16稿件编号:201605154
邹保平(1971—),男,福建龙岩人,高级工程师。研究方向:数据中心,大数据。