基于虚拟化技术的私有云计算平台设计研究

文章来源:数学论文网 发布时间:

  0 引言

?

  近年来,伴随着计算机技术的飞速发展,越来越多的计算服务都离不开云计算的支撑。云计算为各行各业带来了多样化的服务,使数据中心极大地提高设备利用率,避免闲置设备造成的经济损失,降低人员及管理成本,这对企事业单位来说具有极大的诱惑力。因此,构建一个灵活、高效、健壮的私有云计算平台成为了国内外各大信息技术( InformationTechnology,IT) 企业的研究热点之一。现如今,构建私有云平台技术已日趋成熟,主要采用使用商业解决方案和开源解决方案来构建私有云平台。不少商业公司提供了较为成熟的私有云整体解决方案,比较典型的是IBM 蓝云计算平台,此外还可使用开源解决方案构建私有云平台,这种方案是利用开源系统构造企业或组织的私有云平台,比较典型的是使用OpenStack和Eucalyptus等开源系统。

?

  目前石油勘探开发行业对于高性能计算有着强劲的应用需求,高精度勘探对地震资料的存储和处理能力的需求呈指数倍增长,我校早期购置的一些32 节点、64 节点的小规模集群虽性能良好,但已不能满足大规模计算任务日益增长的需求,从而导致可用资源处于闲置状态,迫切需要对现有的IT 设备基础资源进行最大限度的整合,形成统一、高效、弹性化的私有云计算平台,提供给用户方便、快捷的自愿申请及使用模式。使用商业方案的云构建模式存在价格高、可扩展性差、授权模式复杂等问题,很多情况下并不适合采用,使用开源方案构建模式虽可扩展性较好,但系统兼容性不佳,且对一般服务支持也较少,无法按照实际需求定制云服务模块。高校的私有云平台并不像企业云一样仅提供一种或几种固定的服务,具有服务多样性的需求,不仅需要Web 服务等常规服务,也有科研计算、数据存取等特殊服务,同时还要考虑到日后可能会出现的新的服务模式,这就要求云平台具备较强的灵活性和可扩展性。

?

  虚拟化技术是云计算平台的核心技术之一,基于虚拟化技术搭建私有云计算平台可以降低运维成本、简化管理、提高系统高可用性。虚拟技术优势的发挥取决于虚拟资源的部署,部署效果的好坏在很大程度上决定了云平台所提供的服务质量的好坏。目前针对虚拟机部署的研究较少,大多依据传统的部署方法进行,未充分考虑宿主机所能承受的负载量,导致宿主机性能与虚拟机上产生的负载量匹配状况不佳,不可避免地带来由于资源得不到合理利用而引起的负载不均衡问题,影响了云计算提供的服务质量。

?

  针对上述两个问题,本文基于Java 框架技术,设计实现了一种灵活性强、可扩展性能好的私有云计算服务平台,作为基础设施即服务( Infrastructure as a Service,IaaS) 资源的通用前端,该平台建立在服务器组合而成的计算机集群之上,通过服务器虚拟化技术,实现了对资源的按需分割、动态分配及动态迁移,还提出一种动态分配管理机制,实现了虚拟机资源的快速部署,一定程度上解决了云平台的负载不均衡问题,提高了资源的利用率。

?

  1 云平台框架构建

?

  1. 1 平台总体架构

?

  云计算环境中的集群组织架构一般分为两种: 集中式和对等式。本文所建立的私有云平台主要是以虚拟化服务为核心功能,其中最重要的物理资源的支撑就是计算机节点及存储设备,为防止因单节点而导致系统崩溃的问题出现,所以采用对等式的资源组织架构。采用这一架构就要求整个网络中的每一个节点都必须有完整的服务,当新的消息到达时,响应节点就必须要将消息传播到各个节点中去,维护整个网络数据的一致性。通过分析平台功能需求,设计了私有云平台的体系结构,该体系结构可以分为应用层、服务层和资源层。平台服务层用来建立一组通用的服务接口,来完成与本地资源的通信。资源层为私有云平台提供可共享的资源,包括处理器、内存、存储系统等资源。网络通信层为资源层提交的各种数据之间进行信息交换控制,包括各资源的注册、验证及资源监测。这些服务将作为虚拟机服务的辅助模块,为用户提供资源申请。应用层通过开发工具应用程序编程接口( Application Programming Interface,API) 调用相应的服务,继而调用相应的资源来完成具体的作业任务。

?

  1. 2 服务组件设计

?

  在上述平台体系结构的基础上,将私有云平台按照功能需求划分为7 个服务组件,在对等式组织结构中,每个节点都具有完备的功能,因此每个节点都具有以上7 部分功能服务组件,用户访问接口( User Port) 、信息服务( Information) 、注册服务( Register) 、任务提交( Submit) 、文件服务( File) 、虚拟机部署( Deployment) 、任务执行( Executor) 。各服务组件的功能描述如下:

?

  1) 用户访问接口。为用户提供访问私有云平台的方式,该接口提供监控平台运行状态、获取信息资源、访问文件系统、申请虚拟机执行任务的功能。

?

  2) 信息服务。维护并监控私有云平台的正常运转,获取各个节点主机的运行情况。

?

  3) 注册服务。云平台的搭建过程、申请虚拟机的动态加入私有云平台的网络组织结构中。

?

  4) 任务提交。接收来自用户的任务请求,分析创建任务描述对象,将任务提交给用户申请的虚拟机节点。

?

  5) 文件服务。提供存储和传输相关文件,如用户申请虚拟机时的镜像文件,执行任务时将相关文件传输到执行节点中。

?

  6) 虚拟机部署。分析用户申请的虚拟机具体要求,评估信息服务中的资源信息,选取合适的主机,部署并启动虚拟机。

?

  7) 任务执行。执行虚拟机中用户提交的任务请求,监控任务状态,将结果反馈给用户。

?

  上述7 个功能组件并不是独立的,而是紧密配合,在相互协作的基础上完成私有云平台的各项服务功能。私有云平台系统由信息监控、文件服务、虚拟机服务和作业服务这4 大模块组成。

?

  私有云平台中提供的计算服务主要依靠虚拟机来完成,平台集成了作业的提交服务,但不支持提交到物理节点。出于系统稳定性考虑,防止因作业占用过多的资源而导致系统崩溃。作业提交前需编写任务描述文件,主要包括作业的执行文件、输出文件、文件位置和提交节点等作业信息。提交任务时需要向虚拟机节点传输相应的处理文件和执行文件,通过调用文件管理模块来完成文件的传输。平台任务的提交不牵扯任务节点的分配,由用户指定特定的虚拟机节点。这样既保证任务完成的可靠性,又能够使平台空闲出更多的资源。

?

  待作业提交到虚拟节点后,由虚拟机节点调用任务执行进程自动执行该作业,直到作业结束,由文件管理模块返回相应的执行结果文件到用户存储中,供用户查询及下载。

?

  1. 3 服务组件设计

?

  Spring 企业级框架技术简化服务内部资源组织、维护和管理,能与多种通信框架无缝结合,屏蔽服务底层繁杂通信逻辑,可向外部应用者提供多种可选服务访问方式,提高了系统灵活性。Spring 框架技术在服务搭建过程中处于关键地位,描述了私有云平台中多种框架技术的组合方式。本文设计的私有云平台以三大框架( JRE、JETTY、SpringContainer) 构成基本服务环境,在此基础上完善开发个服务组件。JETTY 启动时,Spring 负责初始化各应用对象,并且完成各个对象之间的依赖注入关系,各服务都正常运行时,Spring 负责接收来自JETTY 的请求,并解析转换成Resource层的相应方法调用处理,并将处理结果返回。

?

  以Spring 面向接口编程为核心方法,结合多种框架技术,实现了一个以Spring 依赖注入方式的各个服务组件的开发过程。在实现某一服务的过程中,根据面向接口编程的思想,首先明确该服务的接口所提供的方法,再根据接口方法明确Model 层的实体类,该实体类可以由开发人员自行设计,或者由前文提到的XSD( XML Schema Definition) 工具进行统一生成。这些生成的实体类是该服务能否成功运行的保证。在完成上述工作后,使用简单工厂方法确定一种该接口的实现,由Manager 层统一管理。这样做的好处是当需要对某一接口进行重新修改或者使用新方法实现时,不必在原有Impl 上进行改动,只需将新的实现利用工厂方法重新使用Manager 选择新的实现即可,增加了代码的灵活性和可扩展性,为以后代码的健壮打下基础。同时,使用Factory 选择适当的方法注入Resource 层到Logic 层的引用中,当外界有请求到来时,Resource 层就能直接通过Logic 层选择合适的Impl 来进行具体的任务处理。

?

  1. 4 关键模块实现

?

  虚拟机管理模块是私有云服务平台提供的最核心的服务,用户可以通过该模块直接申请平台的虚拟化资源。目前主流虚拟化技术解决方案有Xen、内核级虚拟机( KernelbasedVirtual Machine,KVM) 和VMware 等,现有的云计算平台也是基于不同的虚拟化技术,如IBM 的Blue Cloud 使用了Xen 虚拟化技术,VMware 的VMware vSphere 则使用了自己的虚拟化技术。考虑到KVM 是基于硬件的完全虚拟化技术,具有核心代码少、操作简单等优势,本文采用KVM 虚拟化技术作为云计算平台设计的支撑工具。虚拟机管理模块的主要功能包括:

?

  1) 提供不同类型的基础镜像库。平台提供不同的操作系统的基础镜像,供用户选择。本地资源应包括Linux、Windows 7等操作系统镜像库。由统一的资源信息管理服务对资源进行管理。

?

  2) 虚拟机申请。用户可以申请一台临时虚拟机,使用完毕后系统自动回收该虚拟机,达到即用即申请的目的。用户也可以申请一台固有的虚拟机,该虚拟机不会被平台销毁,用户通过远程登录该虚拟机,完成对该虚拟机的独立配置。对于该种类型的虚拟机,平台仅对空闲的虚拟机进行关机操作,而不会进行摧毁。新建的虚拟机应以镜像库中已有虚拟机镜像模板为标准来创建,用户可以自行调整虚拟机的CPU 核数、内存大小等相关配置。

?

  3) 虚拟机克隆。用户配置好一台需要的虚拟机后,若要进行并行或者多台虚拟机配合的实验,可利用本平台进行虚拟机的克隆,私有云平台所能克隆虚拟机数量的多少由平台的计算能力决定。

?

  4) 虚拟机在线迁移。虚拟机模块中最重要的功能之一,主要负责维持整个私有云平台的负载平衡,当宿主节点过载时就需要动态地将该虚拟机迁移到别的空闲节点中,使平台稳定运行。

?

  5) 虚拟机管理。用户能够管理自己创建的虚拟机,包括对虚拟机的日常操作,如开机、关机、暂停、回复、强制关机、销毁、创建快照等操作。

?

  6) 负载平衡。通过实时监控平台及虚拟机的运行情况及时对满负载的节点进行及时的调整,以达到私有云平台的负载平衡。当节点负载过高时,平台会对该节点进行自动处理,如对虚拟机迁移、销毁等处理,结合VM 的调度策略,选择合适的调度算法,保证平台正常运行。当系统监控到某一节点超载,就调用平台管理调度策略,采取一定措施,减少节点开销。

?

  2 虚拟机部署机制

?

  云计算具有弹性服务和数据中心自治性的特点,这一特点的保障主要来自于虚拟机快速部署技术的实现。为保持私有云平台的负载平衡,在虚拟机部署时需考虑虚拟机本身的资源特性,将虚拟机部署到合适的物理节点中。因此,本文提出一种虚拟机动态分配管理决策进行虚拟机的快速部署。

?

  2. 1 虚拟机部署流程

?

  云平台的虚拟机资源部署流程如图5 所示,主要包括以下步骤:

?

  1) API 接收用户请求,将所需虚拟机信息发送给私有云平台控制中心,由控制中心确定这些信息的正确性,其中虚拟机信息包括虚拟机系统类型、架构、核数、内存等基本信息。

?

  2) 控制中心将虚拟机信息发送给镜像管理中心,并寻找符合要求的镜像模板。找到镜像模板则复制镜像文件并将镜像位置信息返回给控制中心; 若未找到,不予响应,并返回未找到符合要求的虚拟机模板消息。

?

  3) 控制中心接收镜像模板位置信息后,则向网络控制器请求分配固定的IP、MAC 地址等相关信息,由网络控制器生成相应IP、MAC 地址信息并反馈给控中心。

?

  4) 采用本文提出的虚拟机动态分配管理决策进行宿主节点的分配。分配完成后,由控制中心进行宿主节点虚拟机基本信息的配置。至此,虚拟机部署完成,控制中心会反馈给用户一个部署完成的反馈信号,在虚拟机启动完毕后,用户即可访问该虚拟机。

?

  3 实验及结果分析

?

  私有云平台是由一组浪潮服务器组成的集群系统,总计拥有存储空间12 TB。每个节点使用主频为2. 60 GHz 的Xeon E5-2670 的16 线程CPU,内存为32 GB。系统运行的实验作业是处理一个数据文件,本文以地震资料处理中的傅里叶有限差分叠前深度偏移( Fourier Finite-Difference,FFD)]为实际测试用例。地震资料数据格式严格,其数据文件可进行切割拆分存储,并且处理每一炮数据的时间基本一致,以Marmousi 模型为处理数据来进行私有云平台作业提交与执行的测试。

?

  4 结语

?

  在深入研究云计算架构和虚拟化技术特性的基础上,结合多种框架技术设计实现了一个能够对外提供基础设施即服务功能的私有云平台。该平台整合了目前分布式系统的硬件资源,提高了资源的使用效率,针对云平台运行过程中不可避免的负载不均衡问题,提出了一种虚拟机动态分配策略,该策略根据虚拟机资源的特点,结合现有物理节点的负载情况,对虚拟机进行了动态部署,完成了虚拟机的动态分配,使私有云平台的整体负载达到了较好的平衡。以石油勘探中的傅里叶有限差分叠前深度偏移为应用背景,采用Marmousi 模型波场正演为例进行了应用测试,证明了私有云平台和虚拟机执行作业的可行性,并对虚拟机进行了部署测试,实验结果表明,运用本文提出的动态分配决策能够在分配大量虚拟机的同时,较好地保持私有云平台的负载平衡。