您好,欢迎来到化拓教育网。
搜索
您的当前位置:首页正文

云计算中异构虚拟资源集成管理方法的研究与实现

来源:化拓教育网
云计算中异构虚拟资源集成管理方法的研究与实现

计竞舟; 贺岳星; 杨文静

【期刊名称】《《农业图书情报》》 【年(卷),期】2019(031)008 【总页数】8页(P13-20)

【关键词】云计算; 异构虚拟资源; 通信机制; 数据结构; 代理模式 【作 者】计竞舟; 贺岳星; 杨文静

【作者单位】[1]国防科技大学信息通信学院 陕西西安710106 【正文语种】中 文 【中图分类】TP301.6

云计算可以被认为是一种为用户提供大量信息、数据存储和大规模计算资源的技术,相应的用户需要为所使用资源的支付对应的报酬[1]。虚拟化是云计算技术的基础层[2],虚拟化指的是通过计算机存储、计算、网络等资源进行抽象,使用某种监控软件,实现物理资源、虚拟资源间一对多、多对一、多对多表现[3]。虚拟化以实现包括基础设施、软件系统和应用工具等资源的展示、管理与访问的极大简化为目标,同时提供标准化接口进行统一的接收输入与提供输出,极大的降低资源使用方同提供者方间的耦合度[4]。虚拟化的类型通常可以分成基础设施、软件以及系统虚拟化[5]。目前,虚拟化技术中Redhat Xen、KVM 和VMware、Citrix 等4 种主流产品使用比较广泛,云计算技术的运用许多也都是以对应虚拟化技术产品作

为其基础[6],因此笔者将重点研究能够管理并支持多种虚拟化技术的产品,以解决云计算技术中,不同虚拟资源之间存在隔阂无法跨体系调度利用的问题。 1 异构虚拟资源的通信机制 1.1 外部数据表示(XDR)相关技术

XDR(External Data Representation)外部数据表示技术,是用于解决各种计算机虚拟资源体系结构间存在差异、数据存储格式不尽相同,致使不同虚拟资源数据传递时需要对数据格式进行相互转换的问题[7]。

为了支持异构数据在计算机系统中进行通信,XDR 将数据独立的包装在介质结构中,以32 位机为例,其数据的存放方式也不尽相同,例如有些32 位机内存的最高地址存放的是数据的最高位字节,与之相反有些32 位机在内存最高地址存放的是数据最低位字节,当存在业务操作使数据在网络当中传输时,若不对数据加以重排,将会出现数据传输混乱的问题,因此XDR 通过定义与计算机本身无关的数据表示方法来解决该问题,当数据传送道远端计算机时,首先通过本地计算机调用XDR 将数据转换成与计算机本身无关的局部表示发送到远端计算机,当远端的计算机接受到数据时,再调用XDR 对新接收到的局部数据进行解码,即可解决统一数据传输的问题。同时XDR 对于传输层是相对独立的,后文中异构虚拟资源进行通信调度时,通过引用java 语言中的org.acplt.oncrpc 包来实现该功能的调用[8]。 1.2 虚拟资源池架构及通信流程设计

虚拟资源池在功能上要对整个系统进行管理,并对外提供通用接口来管理其他模块,在功能上,其要具备以下4 种功能:(1)需要具备多类型虚拟资源支持性,如需支持主流虚拟话产品VMWare、Citrix Xen、Redhat Xen 和KVM 等;(2)要能提供实时对虚拟机的监控,Hypervisor(虚拟机监控器又称VMM)主机[9]和虚拟机会对各种状态进行响应,资源池需要实时掌握监控器状态变化,以进行应对;(3)能够读取虚拟资源监控器的信息,包括IP、状态、内存、硬盘、CPU、操作

系统类型、所属资源组,以便对虚拟资源提供服务;(4)可以对所有虚拟资源监控器进行操作,具体操作包括启动、关闭、强关、重启、强制重启、终止、新建等,该部分也是虚拟资源集成管理的核心,能够提供对整体资源的按需调度。其具体架构及通信流程设计如下: 1.2.1 虚拟资源池架构设计

将虚拟资源池设计成VMO Manager(虚拟机管理服务端)和VMO Agent(虚拟机管理客户端)两个模块,对VMO Manager 的设计,其应当具备8 方面的管理功能,具体架构如图1 所示。 图1 资源池管理服务功能架构图

其中,HAMgr(高可用性管理模块)负责监控资源池整体集群,当某一节点发生故障时其将会协调其他正常节点处理异常资源;SecurityMgr(安全性管理模块)用于用户个人信息隐私控制;VMMgr(虚拟机管理模块)通过对虚拟机操作功能进行统一封装实现外部对其操作调用接口的管理;ClusterPolicyMgr(集群策略管理模块)对整个系统集群实现管理;EgoMgr(Ego 管理模块)Ego 功能是负责管理虚拟资源的生命周期,而该模块提供对Ego 节点的统一管理;AlarmMgr(预警管理模块)当主机发生异常时,该模块负责制定最佳策略转移虚拟资源;VMOAgentMgr(代理管理模块)对VMO 代理进行管理,该模块也是虚拟资源支持的核心模块,VMOAgent 提供了对4 种虚拟资源服务的接口,调用SDK 实现对客户端类的控制;Agent-Client(代理客户端模块)使用户操作的直接界面,与代理直接通信,完成相关操作。 1.2.2 资源请求流程

用户有操作需求时管理系统首先会向VMOAgent-Mgr 提出请求,

VMOAgentMgr 对接收到的请求信息进行解析,按照标准将其转化成为对应的操作指令、服务器主机端口及地址后将对应的请求发送给VMOAgentClient;系统

会对所有执行的操作进行编码,将操作与编码的对应关系保持于映射表中,当收到操作指令时VMOAgentClient 将对映射表进行检索找出需要客户端执行的基础代码(base_code)和操作代码(op_code)将请求信息以编码的形式发出;VMOAgent-Mgr 对相应的Agent 创建一个连接并发送相应的操作请求,最终创建一个接受执行结果的对象;Agent 接受请求后会创建对应的Agent 对象,执行请求操作,并最终返回结果;对于非阻塞型操作,VMOAgentMgr 将会等待VMOAgentClient 返回操作结果,而对于阻塞型操作,将由监听器负责完成后续操作。VMOAgentMgr 是实现虚拟资源管理及资源支持的核心模块,其管理流程图如图2 所示。

图2 VMOAgentMgr 管理流程图

RedHatKVM、RedHatXen、Vmware 以及CitrixXen等4 种虚拟机监控器均提供VMOAgent 接口,调用与之相应的SDK 即可实现对Agent 类的操作,如XE4AgentClient 是Xen 的Agent 类,与Xen 上的XenCenter进行交互。VMOAgentClient 功能是与不同的虚拟化资源进行交互,每一种虚拟机监控器都会具体的实现VMOAgentClinet 类,从而对各种虚拟机监控器实现资源调度与管理,具体操作包括hypervisor 主机、虚拟机的信息读取,物理资源调度,对虚拟机的相关操作等。

2 通信消息类型及数据结构设计 2.1 消息编码方式设计

由于不同虚拟资源之间是系统结构不尽相同,虚拟资源管理系统在与虚拟资源通信或发送操作信息时便需要传递通过统一的数据编码来对复杂数据结构进行传递,如对指针、网络字节序和浮点数传递的处理等[10],为统一信息传递,VMOMgr 采用外部数据表示法(XDR)来进行管理信息传递,同时为了减少信息传递频繁时格式转换的资源开销,将消息设计成不同的数据类型,传递时编码成相同的数据格

式,具体数据类型如表1 所示。 2.2 消息类型设计

根据系统功能需求将虚拟资源代理与代理客户端间传递消息设计为3 种类型,Request Message(请求消息)、Notification Message(指令消息)和Response Message(回应消息)。请求消息指的是代理客户端向代理发送请求所产生的消息,如需要查询某主机处于何种状态时所发送的查询请求信息[11];回应消息指的是Non-blocking Operation(非阻塞型操作)请求接收被确认后或Blocking Operation(阻塞型操作)被系统完成后,虚拟资源代理客户端向代理所发送的消息,如虚拟资源代理客户端查询虚拟资源代理主机状态请求消息确认后,向代理客户端发送的信息即为回应消息,阻塞型操作执行过程很短,代理客户端发出阻塞型操作指令后会一直等待结果回应,非阻塞型操作与之相反,其执行时间较长,其操作命令一旦发送后将不会等待,通过其他的Socket 连接发送回结果[12];指令消息指的是虚拟资源代理与客户端之间传送的Asynchronous Message(异步消息),当接受到指令信息时客户端必须注册该操作[13]。通常指令信息包含以下5 类:

表1 外部数据表示法数据类型

(1)Non-Blocking Op Done(非阻塞性操作执行完成)。该类操作指的是Non-Blocking Op 完成时,代理客户端收到的代理信息。

(2)VM State Change(虚拟机状态变化)。该类信息指的是当由于某种原因虚拟机状态发生改变时,代理客户端所接收到的信息。

(3)Non-Blocking Op Progress(非阻塞性操作进展)。当创建新虚拟机时,代理会向代理客户端发送该类信息。

(4)Host Shutdown(主机关闭)。虚拟机监控器主机被关闭时,代理客户端所接收到的信息。

(5)主机挂载状态更新。虚拟机监控主机是Redhat Xen 和KVM 时,虚拟资源管理模块采用挂载方法加入专门的文件系统。 2.3 消息数据结构设计

虚拟资源管理模块中所传输的消息通常由Header(消息头)和Body(消息体)两部分组成。为了便于解析接收到的消息,消息头通常由一个基本操作码域和表示消息体长度的域组成。消息体中包含的是用XDR 数据格式进行编码的相关数据参数。

消息头中最多包含5 个关键域,这5 个域具体是Base Op Code(基本操作码)、Op Code(操作码)、Notification Code(指令码)、Result Code(结果码)、Message Body Length(消息体长度),不是每种消息类型都包含这5 个域。其主要作用为标识不同虚拟代理客户端操作对象类型、对主机或虚拟机实施具体操作等。以请求信息为例,通过消息头与消息体两部分展示其数据结构组成,详细情况如表2、表3 所示。 表2 请求消息头 表3 请求消息体 3 虚拟化容器支持方法

目前,被广泛应用的虚拟化工具有以下4 种:Vmware ESX、Citrix、RedHat KVM、RedHat Xen 等,对于不同的虚拟化容器,由于开发技术不同其内部结构差异也较大。为实现异构虚拟资源的统一运用,针对不同虚拟资源代理客户端设计对应的支持方法。

3.1 容器对VMware ESX Server 的支持方法

Vmware 使通过Vcenter 对虚拟资源实现调度及管理的,通过统一的SDK 实现与外界操作间的通信,为虚拟资源管理模块和Vmware 之间交互提供支持。两种交互情况如图3 所示,管理模块与Vcenter 首先先建立通信连接,Vcenter 的管理

结点与虚拟机监控器主机通过连接,进行相互间的信息交互,最终通过API 的调用实现Server 的调用与交互。 图3 VMO 与VCenter 的交互 3.2 容器对KVM 与Xen 的支持方法

Redhat 没有为其虚拟化工具提供集群管理服务,因此想要实现对Redhat 上虚拟资源的集成与管理,就需要在Redhat 的虚拟机监控主机上安装客户端程序进而对KVM 和Xen 实现支持。在实现虚拟资源管理时其底层通过对EGO 的调用对Redhat 主机形成集群实现管理,集群主机通过VMO Manager 实现管理。其对Redhat 支持如图4 所示,虚拟资源的Manager 节点运行着VMO Manager 和EGOMaster,EGOAgent 进程和VMOAgent 进程在客户端节点上启动。EGOAgent 进程负责实现Redhat 平台中集群资源的发现与调度,并能够启动EGO 服务,VMOAgent 可采用调用Redhat 接口的方式来对虚拟机实现操作。 图4 VMO 对Redhat 的支持 3.3 容器对Citrix Xen 的支持方法

Citrix Xen 是一种轻量级软件层,其运行于操作系统与硬件间,是一款硬件级虚拟化软件,它能够提供Guest OS(客户操作系统)运行所需要的虚拟化环境,并能够代替虚拟机执行特权指令。Xen Center 平台,具有实时迁移、多节点集中管理、嵌入式存储等强大的功能。同时,Xen Center 提供SDK(软件开发包),开放虚拟机管理接口,能够通过调用API 实现虚拟机的创建、迁移等一系列管理功能。它的管理过程与Vmware 类似,CitrixXen 会提供开放的接口实现对虚拟资源管理模块相关功能的支持,VMO Manager 会与XenCenter 建立连接,并与之进行交互,实现对所有虚拟机的管理。 4 虚拟资源管理功能的设计与实现 4.1 虚拟资源管理模块功能分析

虚拟资源管理模块是整套系统的底层,对虚拟资源监控器及虚拟机提供操作与管理支持,同时通过 统一接口实现外部对其操作,其功能需求应当包括如下4个方面: (1)多种虚拟资源支持

为虚拟资源池提供内容支持,需能够支持主流虚拟化产品,包括Citrix Xen、VMWare、Redhat Xen 和Redhat KVM4 种。 (2)虚拟机实时状态监控

虚拟资源由于各种原因会发生状态变化,虚拟资源管理模块需要实时掌控虚拟机的状态,包括运行、中止、启动、关闭。 (3)读取虚拟机状态信息

虚拟资源管理模块要能够接受并理解虚拟机状态信息,包括网络、内存、硬件状态等,对虚拟资源的操作需要以该类信息作为基础。 (4)操控虚拟机

管理模块通过启动、关闭、强制关闭、重启、中止、创建等操作,对虚拟资源进行控制,该部分是虚拟资源管理的核心,虚拟资源的调度需要通过管理模块来具体实现。

图5 功能设计图

4.2 虚拟资源管理模块架构设计

VMO Manager 为虚拟资源池管理提供服务,EGO(Enterprise Grid

Orchestrator)是虚拟资源池的底层为所有虚拟资源生命周期提供管理手段,其服务于VMO Manager。VMO Agent 被虚拟资源管理模块所管理,它是EGO 的服务节点,其主要负责对VMO Manger 端口进行监听,接收并执行来自管理模块的指令,同时可以调用虚拟资源监控器的API 管理虚拟资源主机。VMO Agent 的实现方式被分为两种,如虚拟资源具备虚拟化资源池管理产品像Citrix Xen Server 和VMWare ESX Server 等,采用运行在管理主机之上的实现方法。如果

虚拟资源不具备虚拟化资源池管理产品,如Redhat Xen 和Redhat KVM,则采用运行于虚拟资源监控器上的实现方法,对于虚拟资源管理模块来说,Redhat Xen 及Redhat KVM 不具备虚拟化管理功能,需要安装Agent 包,Agent 与Manager 通过XDR 进行通信。Citrix 和Vmware,其自身具有虚拟资源管理功能,可通过直接调用Xen Center 与Vcenter 的接口实现对其管理与支持,VMO Manager 启动相应的Adapter 并与Xen Center 与Vcenter 建立连接,获取相应的资源信息并实现资源的调度,其总体框架如图6 所示。 图6 资源池管理架构图 4.3 虚拟资源池集成实现与测试 4.3.1 虚拟资源池集成实现

虚拟资源管理模块采用java 语言实现,将其安装于管理机之上,用于监听代理端的信息,Agent 包含监听、执行和监督3 个模块,用于虚拟机与管理模块之间的交互,两者间通信消息会首先被编码成XDR 格式,接收端接收后再解码成对应的参数与操作代码,对于虚拟资源池的继承,由于VMWare 和Citrix Xen本身具有管理工具,在虚拟资源管理时,只需调用其本身具备的API 即可,而Redhat Xen 和Redhat KVM则需调用EGO 来进行控制。 (1)VMWare 集成的实现

对VMWare 的管理通过调用vCenter 提供的SDK来实现[14],管理模块会首先与Vcenter Server 连接,调用API 实现对虚拟机的控制,VMWarevCenter 的操作封装在libvim 类中,包含对虚拟资源监控主机的操作及对虚拟机的操作,使用java 语言进行编译,首先需要连接vCenter 主机,通过输入vCenter 的用户名和密码进行登陆,之后使用libvim 类中操作码即可进行虚拟资源操作。 (2)Citrix Xen 集成的实现

对其操作与VMWare 类似,通过与Xen Server 连接来管理虚拟资源监控器及虚

拟机,Xen Server 的API被封装在一个动态库当中,代理程序启动,这个库即被加载,库中xen4_0_opdefs.c 文件存储着所有指定操作代码,共计52 种[15],值得注意的是Xen Server 的接口基于XML_RPC,对其进行调用需要通过Xen Server的用户名和密码先初始化Session 对象,操作RPC 时同步调用需要一直等待返回结果,而异步调用可直接执行相关操作。 (3)Redhat KVM 和Xen 集成的实现

Redhat KVM 与Xen 基本类似,都是通过EGO 将所有虚拟资源监控器主机进行管理,实现虚拟资源的集成与调度,EGOAgent 通过调用Redhat 的API 来实现对虚拟机的操作,对Redhat KVM 进行操作其操作码均存储在

kvm_rhel5_opdefs.c 文件中,共29 种,对Redhat Xen 操作其操作码存储于xe_rhel5_opdefs.c 文件中,操作码共68 种,两种操作原理基本相同,通过java 对操作码进行编译调度虚拟资源进行操作。 4.3.2 虚拟资源池功能测试 (1)测试环境

操作系统:管理主机、Redhat Xen、Redhat KVM、Citrix XenServer 为Linux 操作系统;VMWare vCenter为windows Microsoft Server XP 操作系统,计算机系统:64 位机,CPU:4 核,内存:8G。 (2)虚拟资源集成测试

尝试在虚拟资源管理中心添加Citrix Xen、Redhat Xen、Redhat KVM 的Hypervisor 主机及VMWare ESX Server 主机查看其是否添加成功,测试用例如表4 所示。

添加虚拟机成功后即可到虚拟机信息管理中心查看虚拟机信息,如图7 所示。 5 结语

笔者针对虚拟资源基础展开研究,设计主流虚拟资源通用的消息类型和数据结构,

以及异构虚拟容器间的通信机制和代理模式,进而解决了异构虚拟资源集成问题,根据异构虚拟资源管理的功能需求,通过java 语言开发对VMware、KVM、Redhat Xen 和Citrix等异构虚拟资源统一管理的工具,并进行功能测试,为云计算底层虚拟化资源的集成、调用提供方法。 表4 虚拟资源集成测试用例 图7 虚拟资源添加成功系统图 参考文献:

【相关文献】

[1]Nancy Jain,Sakshi Choudhary.Overview of Virtualization in Cloud Computing[C].2016 Symposium on Colossal Data Analysis and Networking(CDAN).Indore,Madhya Pradesh,India,2016(03):1-4.

[2]仇琳.云计算虚拟机集群部署策略模型构建[D].哈尔滨理工大学,2018.

[3]武志学.云计算虚拟化技术的发展与趋势[J].计算机应用,2017,37(4):915-917,923. [4]穆玛.什么是云计算基础设施[J].计算机与网络,2019,第45 卷(4):38-39.

[5]高岩,林军,云龙等.云计算主机内核虚拟化技术框架及其性能分析[J].计算机系统应用,2017,第26 卷(8):278-283.

[6]路盼.云服务资源管理平台的设计与实现[D].北京航空航天大学,2014.

[7]刘韬,吴涛,王斌.XDR 与MR 数据关联与应用[J].电信科学,2019,(4):120-130. [8]宋敬彬,等.Linux 网络编程(第2 版)[M].北京:清华大学出版社,2014:72-94. [9]A.Khan et al,\"Network virtualization:a hypervisor for the Internet?\"[J].IEEE Communications Magazine,2012,vol.50(1):136-143.

[10]段卫军.云桌面虚拟化架构的研究与应用[D].内蒙古农业大学,2014.

[11]刘飞宇.OpenStack 云平台下的虚拟机监控与控制的研究与实现[D].电子科技大学,2013. [12]Fowers J,Ovtcharov K,Papamichael M,et al.A Configurable Cloud-Scale DNN Processor for Real-Time AI[C].2018 ACM/IEEE 45th Annual International Symposium on Computer Architecture(ISCA).IEEE;2018:1-14.

[13]李知杰.基于AMQP 的异步通信实现及其在OpenStack 项目中的应用[J].软件导刊,2013,12(07):35-37.

[14]张荧允.基于虚拟技术的数据中心建设研究[D].天津大学,2010.

[15]胡嘉玺编著.企业级虚拟机应用实战:玩转VMware VI、Hyper-V R2、Xen server[M].电子工业出版社,2009.

[16]张冉.一个基于虚拟化的云计算管理平台的设计与实现[D].北京航空航天大学,2014.

因篇幅问题不能全部显示,请点此查看更多更全内容