谢 睿,段 盛,于 芳
(湘南学院 软件与通信工程学院,湖南 郴州,423000)
现阶段,PaaS作为一个平台,主要是为用户提供了一个较为完善的应用程序和开发环境,缩短了开发者的应用部署时间,降低了开发成本。原来PaaS平台中也存在一定的不足,很多基础构建是建立在虚拟机中,而虚拟机需要消耗较大的资源,继而导致资源利用效率较低。但是在计算机实验教学中,往往需要机房提供统一的Linux环境进行相关实验。学生在学习完操作系统、网络互联等课程,需要在同一主机上安装部署虚拟机,操作实现各个基础实验;学习完网页设计、网站开发等课程后往往还有开设虚拟主机部署网站的数据库、web服务等应用的需求。因此要将PaaS平台进行全新的设计,使得运行环境多样化,提高资源的利用效率,减少平台消耗[1]。具体包括:镜像存储设计、平台基础构建设计、资源调度设计以及控制台设计等,根据课程实验所需,对其中的模块进行设计,保证模块得到真正的实现[2],因此设计实现了基于Docker的课程实验平台。
图1 平台部署图Fig.1 Platform deployment diagram
基于Docker设计实现计算机课程实验平台,将实际的实验镜像托管在PaaS管理的云基础设施中,从而节省大量的机房PC机安装的同传和维护工作,还可以预防在同一操作系统上安装过多的服务软件产生冲突,按照这个结构实现基础设施即服务(IaaS)和平台即服务(PaaS)的协同工作,并达到高端开发周期,从而达到高效利用资源和降低成本的目的。该系统的基本平台部署图如图1所示。
课程实验平台由Docker容器服务模块、课程实验镜像管理模块、资源调度模块、集群管理模块及Web管理服务模块五大模块组成,平台架构如图2所示。
图2 课程实验平台架构图Fig.2 Experiment platform architecture
容器服务模块主要用于为使用本课程实验平台的普通用户提供对个人容器的管理服务,Docker容器是镜像存储的运行实例,想要启动Docker容器有两种方式,一种为基于镜像下新建容器并启动,另外一种为处于终止状态下容器重新启动,第一种方式中用户通过Docker Private Registry下载镜像来创建具体容器,第二种方式中用户可以发送命令docker psa的方式来获取终止状态下的容器,并且通过docker start加容器id的方式,启动终止状态的容器。
课程实验平台的实现步骤,首先,学生做实验时可以在web端执行docker run命令,然后,系统在本地镜像中找到所需要的镜像,如果没有找到就要从镜像库中下载。第三,创建并且启动容器,为容器分配一个文件系统,并且在镜像层挂载可读写层,第四,建立桥接并且分配IP地址给容器,以此执行学生实验的应用程序。
学生做实验时,创建容器会从平台中选择教师已经定制好的每次课程的系统镜像作为容器的初始镜像,这种系统镜像称为本PaaS平台中的镜像。系统管理员通过镜像管理模块对镜像的创建、镜像的状态(开放/停用)、调整镜像的初始性能参数及对模板进行更新。
课程实验的Docker镜像也有两种创建方式,如下图3所示。
图3 Docker镜像制作流程图Fig.3 Docker image production flow chart
第一种是利用docker build这一命令,运行一个可以自定义的Dockerfile,继而在已有镜像的在基础上,额外构建一个新的layer。第二种是为已有镜像创建一个容器,并且在容器中安装相应的软件,继而执行docker commit,来保存镜像。以第一种创建方式为例,在第一种方式中教师可以根据计算机课程中所需要的配置和软件,自定义Dockerfile文件,其中包含两类命令,一类是修改上一层image,另一类是config信息。比如,RUN为命令,是修改上一层image的内容,而EXPOSE为命令,是以该镜像为容器时,捕获容器内的端口监听情况。具体的运行流程如下:首先,教师或管理员利用Docker Client向Docker Server发送docker build命令,然后,将指定的Dockerfile等相关内容也通过Docker Client送出,在接收到相应的请求后,发送给Docker Daemon,以此解析最终镜像[3]。
资源调度模块的实现主要包括了四个步骤,分别为:请求、探测、分配、监控,将这四个阶段实现后,就能够实现整体的资源调度功能。在学校中有很多机房中,经常是很多班级同时在不同机房上不同的实验课,在实际操作阶段需要的计算机实验环境不一样,因此为了实现在不同的服务器上资源利用平衡、合理,本系统使用Docker容器作为Mesos的执行器,来承担执行任务的工作,资源调度结构图如下图4所示。除此之外Mesos还提供了一个Marathon框架,主要用以支撑诸如web应用等长运行任务。
图4 Mesos资源调度结构图Fig.4 Mesos resource scheduling architecture diagram
在集群管理模块中,主要是针对集群的域名解析、通信模块和权限管理等功能,集群管理架构如下图5所示。在学校机房中进行实验课时,大量学生做实验利用Docker,需要合理分配各个容器里的IP地址,因此在平台中利用flannel网络,为容器分配IP地址,完善使用规则,并且让内网IP通信进行全面的完善,而在域名解析中则采用了SkyDNS作为集群服务器,并支持不同的记录查找功能。
图5 集群管理架构图Fig.5 Cluster management architecture diagram
在前端管理平面的管理子系统中,根据平台使用过程中使用者的角色不同,管理子系统分为两个门户网站,一个是面向实验的学生门户,另一个是面向教师的管理员门户。平台使用者通过不同的门户网站,实现对整个平台的使用和维护。
为了对比Docker容器与KVM虚拟机两者虚拟化对性能带来的损失,对应于测试规模,设置分配充足的资源给测试的容器和虚拟机[4]。测试系统都是使用Ubuntu Server系统,分别安装Docker 容器和 KVM 虚拟机软件,调试配置合适的参数,促使其可以发挥最佳的性能从而比较出两者虚拟化性能的差异,性能测试如下图6所示。
由于整个 PaaS 平台是基于 Docker构建的,但是 Docker 存在运行操作系统平台单一、隔离机制相比 KVM 等虚拟化方案较差导致安全性较差、资源分配颗粒不够精细及网络管理机制薄弱的问题[5]。实验小组将在以后的开发实现中尽可能地探索各个优化先进的方案解决这些暂时问题。
图6 FLOPS测试Fig.6 FLOPS test
综上所述,云计算技术的飞速发展,PaaS技术得到了各界的青睐,很多开发者利用PaaS技术为用户提供其所需要的服务,这种技术的操作较为简单,因此也从侧面降低了开发者入行标准。不仅如此,文中根据现阶段PaaS的发展现状,基于Docker设计了资源高效利用、基础构建轻量的PaaS平台,在满足开发者需求的同时,从用户的角度出发,建立了多种不同的功能。