异构虚拟化系统中抽象层的设计方案*
2015-07-03刘化东王纯
刘化东,王纯
(1 北京邮电大学网络与交换技术国家重点实验室,北京 100876; 2 东信北邮信息技术有限公司,北京 100191)
随着计算机和网络技术的发展,云计算已经逐渐成为IT行业的趋势了。一般讲与计算分为3种服务:IaaS(基础架构即服务)、PaaS(平台即服务)和SaaS(软件即服务)。其中IaaS是利用虚拟化技术,将IT资源(IT硬件资源)转化为一个大的资源池,供上层的应用申请调用。然而,随着虚拟化技术的迅速发展,市场上的虚拟化产品越来越多,这就使得IaaS层的管理变得更加复杂;因此,要解决这些问题,就必须研究探讨对多平台虚拟化环境的集成管理技术。
本文提出一种资源抽象层设计方案将异构的虚拟化计算平台统一管理在同一个平台之上,以降低对不同虚拟化平台的管理难度;以VMware、Xenserver、KVM等虚拟化技术作为例子,通过资源抽象层对Hypervisor(虚拟机管理器)统一管理,使得上层服务可以使用统一的API编程接口对多个虚拟机管理器进行管理,而不用担心它们的具体虚拟化技术的差异;将多个虚拟化计算平台统一在同一个管理平台之上,统一了虚拟化资源视图,使得管理更加便捷方便;通过虚拟化平台管理抽象层对虚拟化计算平台进行管理,可以更加有效的帮助用户梳理业务流程,帮助业务的发展。
1 需求分析
异构的虚拟化系统在数据中心内部形成了相互隔离的子区域,增加了管理以及资源申请的复杂度,设计资源抽象层就为了解决这个问题。在IaaS资源管理平台中,资源抽象层是资源管理的基础,它负责管理虚拟计算资源,监控计算资源节点状态;通过对异构虚拟化系统的抽象,向上层服务提供了一个可扩展、可共享的资源池;IaaS其它功能组件都是以这个抽象资源池作为基础,使得所有资源管理和数据收集相关的功能都集中在这一层中,实现了资源管理和资源调度的松耦合。
为了屏蔽计算资源异构性所带来的资源管理困难,计算资源抽象层需要满足的主要需求如下。
(1) 数据收集:周期性收集虚拟机和物理主机的负载信息和健康状况,并将这些信息存入数据库中,作为资源调度的信息判断来源。
(2) 资源整合:屏蔽虚拟化系统的差异,对虚拟化计算资源进行统一的生命周期管理,包括虚拟资源和物理资源;资源抽象层需要统一物理资源和虚拟资源的管理,向用户提供标准的编程接口,允许用户根据自己不同的业务需求,执行灵活的配置方案;满足不同用户对多种虚拟化技术的需求,支持对虚拟机实例的创建、操作、维护、克隆、迁移、移除等生命周期管理,最大程度利用该虚拟化技术,减少IaaS管理平台构建的投入。
2 系统设计
2.1 总体架构
计算资源抽象层的核心作用是屏蔽计算资源的异构性,即完成对数据中心中物理资源及不同类型的虚拟资源的管理。图1中我们可以看到资源抽象层有分为两个层,Driver层和模型层;其中Driver层完成了与Hypervisor的交互,该层不包含数据库操作;模型层采用了适配器模式来完成对Driver层不同接口的匹配,并且在该层我们会和数据库进行交互;其中Adapter层采用设计模式中的适配器模式,该模式是实现计算资源模型层对多种计算资源类型支持的最优方法。
基于Adapter模式构建的资源模型层的整体架构可以分为两个部分,即控制器和适配器。
(1) 控制器:负责资源的集中管理与监控,是资源抽象层的中心组件。提供虚拟机管理、计算服务管理以及监控信息管理等基本功能,同时向资源调度层提供Java API作为资源申请的接口。
(2) 适配器:适配器通过与IaaS中的异构计算资源驱动层交互,从而完成对IaaS不同的虚拟化平台进行控制,底层具体的虚拟化操作则由Hypervisor来完成。
2.2 模型层
2.2.1 模型层的功能
模型层的主要功能是计算资源的集中管理与监控,包括对虚拟资源,计算服务的管理以及监控信息收集。控制器可以分为4个模块,分别是计算服务管理模块、监控信息采集模块、虚拟机管理和虚拟架构管理模块。
从图2中可以看到,各个模块相互独立又相互配合,模型层的模块之间通过Java接口相互协作,完成资源管理和资源监控的功能,模型层之间的模块的关系如下。
(1) 资源服务层通过Java接口向计算服务管理模块申请计算资源。
图1 计算资源抽象层总体设计
图2 模型层的总体设计
(2) 计算服务管理模块根据资源请求类型,调用监控信息管理模块或者对应Hypervisor的Adapter来完成请求操作,具体的Adapter调用虚拟机管理模块和虚拟架构管理模块,与其它管理模块(可以根据具体需求扩展的其它管理模块)共同完成资源申请。
(3) 虚拟机管理模块调用Driver层中不同Hypervisor的驱动处理资源的操作请求。
(4) 监控信息管理模块周期性地被调用,通过与Driver层交互收集资源池中所有Hypervisor主机以及虚拟机实例的状态和负载信息,并将这些信息存储到数据库或者分布式储存系统中。同时,通过查询数据库或者分布式储存系统的相应表,实时地响应资源调度层的负载信息查询请求。
(5) 虚拟架构管理模块根据请求连接具体的Hypervisor,对Hypervisor进行资源管理。
(6) Driver层通过Java调用对应Hypervisor驱动完成操作或查询,然后将操作结果返回给Adapter层中的虚拟机管理模块或者虚拟架构管理模块。
2.2.2 Adapter层功能
适配器模式也称包装者模式,将一个类的接口转接成用户所期待的;一个适配使得因接口不兼容而不能在一起工作的类工作在一起,做法是将类别自己的接口包裹在一个已存在的类中。
基于Adapter模式,模型层开发相应的适配器程序来与Driver层特定类别的资源交互,调用Driver层对应操作接口将异构计算资源的差异化接口转换成统一的接口提供给其它组件使用。
采取这样的设计有两个优点。
(1)将底层Hypervisor的差异性完全屏蔽;如果底层Hypervisor的API或通信协议发生改变,对代码逻辑的改动可以局限在相应的适配器代码中,降低了后期的修改成本,提高了系统的灵活性。
(2)当需要增加新的资源类型,如增加一种新的虚拟化平台时,只需要增加一个针对该平台API接口编写适配器即可,增强了资源抽象层的可扩展性。
适配器接口的设计是适配层的关键,作为控制器与适配器实例交互的中间接口,连接计算服务管理模块和具体适配器,处理其它模块对计算资源的操作或查询请求。适配器接口需要包括两个功能部分。
(1) 虚拟架构管理,负责虚拟架构的整个生命周期的管理,包括虚拟架构注册、虚拟架构导入、虚拟架构修改,虚拟架构同步。
(2) 虚拟机管理,负责虚拟机的整个虚拟机周期以及业务的管理,包括虚拟机创建、删除、修改、查看、操作等常用操作。
虚拟机管理模块的功能:虚拟计算资源服务是IaaS层管理的核心内容,主要包括虚拟机生命周期管理;虚拟机生命周期管理包括虚拟机创建、删除、修改、查看、操作、模板管理。其中,虚拟机创建、删除、修改、查看将涉及到虚拟网络及虚拟数据存储;虚拟机操作是指对虚拟机的启动、关闭、停止、暂停、关机等操作;模板管理则是指对常用虚拟机进行克隆模板并基于该模板进行虚拟机的创建等操作,包括创建模板,导入模板、删除模板等。
虚拟架构管理模块的功能:虚拟架构管理模块负责Hypervisor在IaaS管理平台中的生命周期,该模块负责虚拟架构的导入、删除、更新以及修改。
2.2.3 计算服务管理的功能
计算服务管理是控制器的分发请求的核心,它根据不同的请求,调用不同的Adapter来完成资源请求操作;它负责资源抽象层中所有适配器实例的管理,是资源抽象层实现异构计算资源管理的核心模块。计算服务管理模块与资源抽象层中所有的适配器实例通过Java交互,根据所需要的资源类型,将资源调度层的操作请求发给相应的适配器实例,并与适配器实例相互协作来完成操作。
2.3 资源监控模块
计算资源监控模块主要负责周期性对各种计算资源的运行状态监控及资源信息的统计,将监控信息储存到数据库或者分布式系统中,以便于用户及时掌握着资源运行情况。同时,监控信息也是资源调度的主要依据之一,监控信息包括群集、主机和虚拟机信息,具体类别包括实时的主机/集群/虚拟机CPU负载、网络负载、内存负载等数据。
2.4 Driver层
Driver层主要负责与各个Hypervisor交互;设计Driver层主要目的是将屏蔽各个Hypervisor SDK的具体调用细节,让适配层能够更加专注业务的管理;添加Driver层有如下优点。
(1) 利用Driver层实现了模型层和Hypervisor SDK或者Libvirt的松耦合,实现了对Hypervisor SDK或者Libvirt等虚拟架构编程接口对模型层的透明化。
(2) 通过Driver层的隔离性,由Driver层提供的更加简洁实用的编程接口,让模型层能够更加的专注于业务流程;避免了Hypervisor SDK或者Libvirt等编程接口的入侵,使得模型层可以避免Hypervisor SDK、Libvirt等版本更新或者更换开发SDK时带来的多余工作量。
2.5 虚拟机的申请流程
如图3所示,在IaaS平台中创建虚拟机的流程如下。
图3 虚拟机创建流程
(1) 服务层开始创建虚拟机。
(2) 选择虚拟机模板,模板在开始创建虚拟机前需要导入到管理平台中。
(3)在抽象层接到创建虚拟机和模板信息后,根据模板所属的虚拟化平台,调用具体虚拟化平台适配器接口。
(3)适配器调用Driver层接口开始克隆虚拟机模板。
(5)部署虚拟机模板为可运行的虚拟机,返回结果。
3 结束语
异构虚拟化系统的抽象层,将不同虚拟化平台纳管到统一平台上,提供统一管理接口,屏蔽了不同虚拟化平台代理的管理难度;通过资源监控模块,实时掌握不同虚拟化系统负载情况,方便不同用户对业务监控,同时给资源调度层提供了具体依据。
[1]张良,王纯,李炜.基于内存数据库的存储集群的关键技术研究[J].电信工程技术与标准化, 2012(10).
[2]胡慧,王辉.云计算技术现状与发展趋势分析[J].软件导刊, 2009(09) .
[3]马博峰.VMware、Citrix和Microsoft虚拟化技术详解与应用实践[M].北京: 机械工业出版社,2012.
[4]商庆同.虚拟化管理平台适配层的研究与评价[D].北京:北京邮电大学,2011
[5]杨华伟.多平台虚拟化环境集成管理技术研究与实现[D].济南:济南大学, 2013.