黄超
(柳州城市职业学院,广西柳州 545036)
随着高校信息化建设程度越来越高,计算机在各学科教学中的应用越来越普遍,机房使用越来越频繁,机房实验室作为教学实践场所在高校发挥着重要作用。在互联网IT技术飞速发展的背景下,高校的科研、教学等各项业务工作的信息化、智能化需求急剧扩张,对实验平台的数据存储、弹性伸缩、及时响应等能力提出了升级转型的需求[1]。云计算作为新的信息服务架构模式,通过虚拟化技术将计算、存储、网络等基础设施统一成云平台的动态资源池,为用户提供统一界面的动态、智能化服务,可满足高校信息化建设在自助化服务、降低运维成本、提高部署效率等方面的需求。研究应用虚拟化技术构建机房实验云平台,是当前高校信息化建设的迫切任务。
部分高校采用VMware Workstation进行实验教学,其基于个人电脑的桌面虚拟化技术受限于单机资源的配置,无法完成中大型的实验任务。也有部分高校采用OpenStack、VMware Vsphere技术,通过对集中管理的服务器资源进行虚拟化,进而实现了支持多种操作系统、性能灵活扩充、主机按需分配的实验教学平台。该平台可对用户按需分配硬件资源,灵活弹性的调配实验环境与配置,极大的方便了师生实验教学任务的开展[2]。采用OpenStack、VMware等传统虚拟化技术构建的实验平台虽然具备按需分配、弹性伸缩、响应及时等特点,但也存在比较突出的问题:
(1)资源分配不灵活:实验任务少时,为该实验室配置的部分硬件资源闲置,整体利用率低;实验任务繁重时,整体硬件资源的计算能力有限,开发效率受影响;服务器一旦出现重大硬件故障,虚拟机难以完成迁移并迅速启动,影响需要提供不间断服务的实验任务的完成。整体的资源分配不够灵活。
(2)资源利用率不高:基于服务器的虚拟机都是嵌套模拟pc环境,应用程序不能直接访问主机的硬件资源,服务器虚拟化系统及模拟pc系统环境都需要占用消耗部分硬件资源。进而造成资源利用率不高。
(3)数据存储成本较高:虚拟环境的数据只适用于特定的虚拟基础结构,数据的存储是不能跨平台的;而服务器虚拟化需要的存储容量比较大,存储资源又是比较昂贵的。
Docker是一种轻量级的虚拟化技术,可隔离进程和资源,能够将服务器或者虚拟机的硬件资源进行划分,快速地为应用创建一个轻量级的、可移植的容器,每个容器都能够独立的运行并且相互之间不会影响。Docker技术以应用程序为中心,将一个应用程序所需的相关代码、环境配置文件等都打包一个容器,可以脱离操作操作系统环境而运行,从而跨越了开发者的机器到生产环境机器的环境异构性,从开发到部署实现流畅发布,便于后续的开发测试运维工作的开展。与传统的虚拟操作系统的虚拟化技术相比,Docker容器技术具有更快速的应用启动时间、更高效的资源利用、更好的环境兼容特性。
OpenStack是一个开源的云计算管理平台项目,由一系列开源组件组合起来完成具体工作。OpenStack支持所有类型的云环境,能提供实施简单、丰富、标准统一的云计算管理平台。高校通过建立、运行自己的OpenStack云计算和存储设施平台,可为师生提供基于数据中心级别的计算、存储和网络资源,满足按需分配硬件资源,灵活弹性的调配实验环境的需求。OpenStack通过各种互补的服务提供了基础设施即服务(IaaS)的解决方案,每个服务提供API以进行集成。Nova提供计算服务,用于管理虚拟机实例的整个生命周期,根据用户需求来提供虚拟机服务,包括虚拟机创建、开机、关机、迁移、重启、销毁等操作。Swift提供存储服务,通过内置冗余及高容错机制实现对象存储的系统,允许进行存储或者检索文件。Glance提供虚拟机镜像服务,支持多种虚拟机镜像格式的查找检索,有创建、上传、删除、编辑镜像基本信息的功能。
采用Docker容器技术对实验平台底层架构进行部署和管理,实现硬件资源的融合管理,为上层的云终端系统用户提供云服务。OpenStack是IaaS私有云服务的标准,包括安全认证服务(Keystone)、镜像服务(Glance)、计算控制服务(Nova)、网络控制服务(Neutron)等服务组件[3]。将各服务组件容器化,通过容器编排管理系统Kubernetes对容器集群的部署和管理,实现IaaS与PaaS的组合服务,构建高效统一的高校实验云平台。基于容器技术的实验平台主要分为基础设施层、资源管理层、应用层,整体架构如图1所示。
基础设施层是计算、网络、存储设备等硬件资源,为云平台提供虚拟资源池的物理设备。将大规模的物理资源虚拟化,对物理资源进行抽象,为云计算服务提供硬件资源统一的管理逻辑和接口,以全局统一的资源池的方式进行管理并呈现给用户。
资源管理层通过Docker技术实现容器对、计算、网络和存储资源的管理和调度,是整个容器化平台的核心和性能关键。通过Kubernetes编排部署Docker容器化的OpenStack各服务组件,向上层的应用层提供OpenStack云计算服务。Docker容器化的OpenStack各服务具有轻便灵活、资源利用率高、可跨平台的特性。借助Kubernetes对各容器的集群编排,高校实验云平台可快速灵活部署。
应用层根据实验平台的业务需求,包括用户、资源、实验管理模块的功能,为用户提供便捷友好的操作接口,方便上层用户对容器化的实验平台进行灵活的访问[4]。
图1 实验平台架构图
开发环境包括硬件和软件设施。硬件是学校机房的基础网络、各服务器、存储等基础设施资源,将服务器分为控制节点(1台)、计算节点(1台)、工作节点(多台),确保各硬件可正常运行并能相互访问。软件是安装在服务器上的应用程序或镜像包,包括CentOS、Kubernetes、OpenStack、Docker、Ceph等,均选择稳定开源的版本,安装方式为CentOS系统上yum install源码安装平台中各服务[5]。
基础设施层完成虚拟化资源池的部署。通过Kubern etes集群编排管理Docker容器化的OpenStack 各服务组件完成资源管理层部署。应用层实现基于用户的实验教学任务的管理。整个平台的实现主要在资源管理层的搭建,其部署工作主要包括部署服务集群及其容器化。
3.2.1 Kubernetes集群的部署
配置yum仓库,设置时间同步,在所有节点上安装docker、kubelet、kubeadm、kubectl。kubelet运行在集群所有节点上,负责启动Pod和容器。kubeadm用于初始化集群。kubectl是命令行工具。在控制节点上运行kubeadm init进程进行初始化集群,添加网络组件使各Pod容器通信正常。各工作节点修改kubelet的address和hostnameoverride参数为本机IP,加入集群中,最后通过kubectl get pods命令检查验证。
3.2.2 OpenStack集群的部署
将OpenStack所有服务组件容器化,在计算节点服务器上对kubernetes集群进行访问,安装部署kubernetes的包管理工具helm,OpenStack-helm可以支持松散耦合的OpenStack服务及其依赖项的部署、维护和升级,通过helm开发搭建chart仓库,快速部署协同工作,并应对容器复杂应用的管理。在控制节点上安装helm服务端tiller和客户端,对目标集群通过values.yaml赋值生成chart实例。在工作节点上下载容器运行tiller镜像包,更新yaml文件后通过kubectl get pods-n kube-system命令验证是否部署成功。
Docker高性能虚拟化技术的应用,使高校实验云平台的部署更加灵活、快速、高效[6]。利用OpenStack-helm将OpenStack各服务组件封装到容器镜像中,实现各服务组件的容器化,通过容器编排管理系统Kubernetes对容器集群的部署和管理,实现IaaS与PaaS的组合服务,为构建高效统一的实验平台建设提供可行的技术解决方案。