张 涛 刘彩云 汪 翔
(1.铜陵职业技术学院信息工程系,安徽 铜陵 244061;2.铜陵学院数学与计算机学院,安徽 铜陵 244061)
随着云计算、大数据等新一代IT技术的兴起,传统的教育教学方式也在不断地向智慧教学方式转变。基于新兴IT技术的智慧教学平台建设,可进一步提升教育教学质量和实践教学能力,构建高效、灵活的智慧课堂,弥补传统教育教学尤其是实验实训教学方面存在的不足。在现代计算机教育教学中,教师在教学过程中可能要在不同的软件版本、不同的软件整合方案中进行演示教学,稍不注意可能就会导致错误;在实验软件安装时,不同软件、不同的软件版本可能也会存在冲突;新的软件可能在老旧电脑上无法流畅运行;完成实训项目可能需要多个组件相互协作,学生在实验环境安装和配置中花费较多时间,效率不高;学生在实验实训室之外不能继续完成实验,不能随时随地学习。本文就相关问题进行研究探讨,基于Docker技术进行智慧教学平台构建,进而通过基于该平台的高可用Web系统自动化部署实践,探索解决问题的可行性。
面对上述当前计算机教育教学中存在的问题,可以通过轻量级的Docker技术进行智慧教学PaaS(Platform as a Service)平台构建,提供优于传统虚拟机的Docker容器沙箱环境。[1]契合OpeanStack云计算环境,教师、学生可在独立的Docker容器环境中运行和部署相关软件,不同的容器环境相互隔离、易于构建,能较好地解决软件安装配置繁琐、软件冲突、软件版本不一致、机器性能差导致的软件运行不流畅等问题,[2]使得运行环境多样化,提升计算机资源的利用效率,减少物理软件平台消耗,提高教育教学尤其是实验实训教学的效率。学生在课余时间也可以通过提供的云平台接口方便地通过Docker镜像在自己的计算机上构建实训环境,实现随时随地可学。
Docker是云计算PaaS平台提供商dotCloud开源的一个基于 LXC 的高级容器引擎,当前主流的开源应用容器引擎,基于容器技术实现高效的应用运行平台。[3]在智慧教学平台构建中,主要是基于Docker创建软件部署和运行环境的。基于Docker可以把应用及其依赖封装到一个轻量级、可移植的容器中,打包封装后可以在任何Docker平台上都独立、稳定运行。Docker打包封装后的镜像保存着容器运行所需的运行环境及其配置信息,镜像来自于存储镜像的仓库,并且采用分层存储架构,提高其复用性。
相对于传统的VM(Virtual Machine),Docker具有以下优点:更快的启动速度,容器可以秒级启动,而VM通常要更久;更小的性能开销,Docker不需要传统VM所需的额外的CPU和内存完成操作系统功能;更高的资源利用率,一台普通电脑可运行上千个容器,而VM则做不到。[4]基于这些特性,可依托Docker容器PaaS平台构建轻量、快速、高效、易用的智慧教学平台。Docker容器直接复用主机操作系统资源,在Docker Engine层面实现高效的调度和隔离。Docker 容器基于LXC,通过Namespaces进行权限的控制和隔离,通过Cgroups进行资源的配置。
Docker服务的组成主要包括:
(1)Docker daemon服务器:后台运行,用于管理Docker对象。
(2)Docker Client客 户 端:命 令 行(CLI)交互客户端,可使用REST API接口访问Docker daemon。智慧教学平台可使用Docker提供的客户端命令行实现Docker容器、镜像等对象的管理。
(3)Docker Image镜像:一个只读模板,用于创建Docker容器,由Dockerfile文本描述镜像的内容。智慧教学平台就是基于Dockerfile来构建不同的应用镜像达到运行环境多样化的,可基于不同的镜像快速构建出自己需要的应用环境。
(4)Docker容器:一个镜像的运行实例。可通过docker pull命令从镜像仓库中拉去镜像到本地,通过docker run命令可运行执行的镜像。在智慧教学平台中即为运行不同应用环境的容器。
(5)Docker Registry仓库:即Docker镜像库,其本身也是一个容器。Docker Hub是Docker公司提供的互联网公共镜像仓库。可以构建自己本地的镜像仓库。在智慧教学平台中,搭建自己的镜像仓库,存放不同的应用镜像。可以通过 <仓库名>:<标签>的格式来指定具体是哪个版本的镜像。
(6)Docker Container容器:独立运行的一个或一组应用(即创建的独立的工作环境)。在智慧教学平台中可构建不同类型的应用容器,为实训教学提供平台支持。
云计算提供一种基于互联网的交付服务模式,通常是提供动态可扩展虚拟化的资源对象,以IaaS、PaaS、SaaS等服务形式提供大规模的计算服务和应用。OpenStack是一个开源的云计算管理平台项目,为私有云和公有云提供可扩展的弹性的云计算服务。OpenStack提供了基础设施即服务(IaaS)的解决方案,每个服务提供API以进行集成,是目前广泛收到支持的开源云平台。为构建易于弹性扩展、具有一定运算能力的智慧教学平台,可通过OpenStack云平台构建Docker运行环境,提升计算机资源的利用效率。OpenStack和Docker分别偏向云计算架构中的IaaS(资源层)和PaaS(应用层),[5]两者有深度结合的基础。
OpenStack主要提供计算、网络、存储三大资源服务能力。Swift对象存储是OpenStack提供的高可用分布式对象存储服务,通过在软件层面引入一致性散列技术和数据冗余,来达到高可用和可伸缩性。Docker Registry仓库默认是使用本地文件系统存储镜像文件,默认存储在/var/lib/registry目录下。此种存储方式当前不支持自动复制和同步镜像功能,镜像存储的可靠性尚无法保证。由于Docker Registry支持多种分布式存储后端,可把OpenStack的Swift对象存储作为底层的存储系统,进而保证镜像数据的可靠性存储。
基于Docker的智慧教学平台研究以OpenStack云平台作为底层的计算支撑,方便智慧教学平台的存储和扩充,提供一个可持续集成的云计算环境。通过在云平台提供的计算环境中部署Docker环境,构建和运行自建的实训环境的Docker镜像封装,学生可以方便地访问Docker实训环境,可进行快捷、高效、可重复的实训教学。作为示例,基于Docker技术的高可用Web系统自动化部署智慧教学平台系统的架构设计如图1所示,在云平台中构建Docker运行环境,基于Docker技术构建满足不同实训需求的Docker镜像(如:SQL Server、Linux、Web、MySQL等),实训时直接拉取镜像、启动容器即可进行实训,可满足不同版本、不同实训环境以及错误及时恢复、多次重复实训的要求。
图1 智慧教学平台系统架构设计
基于上述的平台架构设想,契合动态网页设计的课程教学(需要安装SQL Server、Tomcat、JDK等实训环境)需求进行平台的设计、研究和实践。
当前,随着社会信息化进程的进一步深化,企业、单位和个人都将所属资源通过web进行展现,提升自身的社会影响力。对应中小型企业,企业形象的展示可基于快速开发模型实现,节约成本、灵活高效。在计算机类专业的实践教学中,动态网页设计通常是计算机专业的基础课,能紧密契合信息化社会的职业岗位需求。智慧教学平台的设计实践结合高校、学生、企业经常关注的项目需求,开发了一个展示企业、单位和个人信息的开发平台模板,能快速地实现web应用开发。易淘电子商城项目能够实现产品信息的展示和商品的分类浏览。智慧图书信息系统项目实现了图书信息的展示和交流功能。通过智慧教学平台进行实训教学环境和运行环境部署。
智慧图书管理系统提供图书的展示、阅读、分类等功能,具体功能模块如图2所示。
图2 智慧图书管理系统
易淘电子商城实现商品信息的管理、展览、分类等功能,具体功能模块如图3所示。
图3 易淘电子商城系统
契合搭建好的OpenStack云平台,结合图1的系统架构以及Docker平台和应用部署的需要,设计和实现基于Docker的智慧教学平台,通过镜像部署相关的SQL Server、Tomcat、Nginx、JDK等容器环境,方便实训和开发,实现高可用Web系统自动化部署平台,简化配置、代码流水线管理、提高开发和实训效率,同时,为基于Docker环境的应用系统自动伸缩和应用集群构建提供一种灵活部署模式。实训平台主要技术需求如下:
(1) 基于Docker平台实现应用程序的镜像的自动化制作。
(2)基于Docker平台实现镜像的运行和数据交互功能。
(3) 基于Docker平台实现运行的web容器的高可用和集群负载均衡功能。
(4)基于企业级框架开发web应用,实现易淘电子商城、智慧图书信息系统项目的开发。
(5)基于Docker平台实现web应用的镜像制作、运行、高可用和集群负载均衡等功能。
Docker平台基于常规的构建方法进行设计和构建,提供平台支撑运行环境,具体设计架构如下图4所示。
图4 技术设计架构
实训完成,部署成功后,Web应用使用数据库容器提供数据支撑,用户访问web应用时,用户的访问可均衡地分布到web集群容器中,实现负载均衡,同时,如果某个web运行容器出现故障了,其他web容器也能保证访问正常进行,实现访问的高可用。Web容器的构建基于自动化构建的web镜像实现。应用系统开发完成后,制作Docker镜像,基于容器运行具体应用,可构筑云平台web站点集群。相比于传统的实训教学方式,基于Docker的智慧教学平台更节约资源、方便、快捷、高效,功能整合更容易、规范,实训课实现便捷的可重复性。
智慧教学平台基于Docker开源的容器引擎,搭建双节点的Docker平台,基于Dockerfile实现应用系统镜像的自动部署和制作,基于Nginx引擎镜像实现应用系统负载均衡和高可用运行,实现更快地打包、测试以及部署应用程序。应用系统的开发基于Java平台的Struts、Spring、Hibernate开源框架实现了电子商城应用、智慧图书站等应用的开发,在Docker平台上进行了良好的部署和运行,为企业基于Docker的应用提供了有意义的实践。智慧教学平台具体设计部署见图1所示。
智慧教学平台网络架构设计如表1所示。
表1 智慧教学平台网络架构设计
Docker镜像自动化部署Dockerfile基本命令如下:
基于Nginx引擎镜像实现应用系统负载均衡和高可用运行的关键技术配置如下:
平台的部署步骤如下:
(1)搭建OpenStack云平台并按规划启动虚拟主机(测试基于CentOS 7操作系统)。
(2)基于yum源安装Docker平台:
(3)基于docker load、tag、push命令上传仓库部署使用的镜像。
(4)拉取SQL Server镜 像: docker pull mcr.microsoft.com/mssql/server:2017-latest。运行SQL Server镜像(为了便于数据的持久化,这里使用了共享卷):
(5)上传web应用所使用的数据库到Docker宿主主机,进入数据库容器,附加数据库:
(6)上传web应用构建所使用的源文件,参考3.1设计说明,编写Dockerfile文件,构建web应用:
(7)启动web应用镜像(这里可以根据多起几个web应用镜像):
(8)拉取nginx镜像,创建nginx容器(注意端口是否被占用):
根据3.1设计里的说明,进入nginx容器配置nginx.conf文件,启动nginx引擎,实现高可用Web系统自动化部署实训。
容器镜像启用后,可以通过浏览器访问web站点,用户操作web页面即可进行相关的操作。这种灵活、轻量、资源隔离的应用部署方式,在更快地打包、测试以及部署应用程序方面具有较好的应用价值,摒弃了传统物理机实训环境带来的弊端。
智慧教学平台基于实际的教学实训项目进行研究和测试,基于Docker平台进行高可用Web系统自动化部署平台实践,实践测试项包括:
(1)Web项目的自动化构建:Dockerfile编写是否正确,在绑定端口是要注意是否已经被占用。
(2)SQL Server镜像的运行:启动时密码的设置是否符合规则,进入容器运行SQL Server客户端命令,能否正确附加数据库(要注意数据库的版本问题)。
(3)Web项目镜像的运行:web应用能否正常启动,要特别注意数据库的配置信息,如不能正常启动,可以进行tomcat服务器的log目录,查看具体的出错信息,进行修改。测试时出现问题最多的就是数据库信息不正确,导致应用程序启动时初始化失败。
(4)Docker负载均衡测试:Nginx的配置文件是否正确,特别是服务端口号的问题,至少启动两个web应用实例,通过curl命令多次访问服务器,查看其输出结果。
(5)Docker平台高可用测试:停止1个web应用容器,查看网站是否还能访问成功,经测试,可以正常访问。
测试中,与虚拟机运行web应用进行性能比较,Docker平台在应用启动上有很好的表现,具有很好的灵活性,为智慧教学实训项目提供了技术支撑。
在传统的基于物理机的学生实训教学中,经常会出现版本冲突、软件不兼容、环境配置复杂、实训失败后无法及时恢复实训、实训受时空限制等问题。新一代信息技术的发展为智慧教学平台的构建提供了有力的技术支撑,可弥补传统实训教学环境的不足。本文对基于云计算、Docker技术的智慧教学平台进行了研究和教学实践,在动态网页设计课程教学中结合企业项目需求对中小型企业灵活部署web应用提供了一种有意义的实践,在教学中,可以为学生快速提供实验环境并进行资源隔离,学生可以得到独立的运行环境。随着Docker技术的不断发展,基于Docker平台的应用部署将会得到极大地使用。
平台的后续研究也在积极实施中,后面将基于物理机实现云平台的分布式部署,同时设计容器运行状态感知技术,实施容器的弹性管理,同时对容器和服务器的热迁移技术也可进一步升级演化。