异构私有云管平台通用适配器的研究与实现
   来源:智能计算机与应用     2018年09月09日 20:12

王一盟

文章编号: 2095-2163(2018)03-0026-07中图分类号: 文献标志码: A

摘要: 关键词: for heterogeneous private Cloud Management Platform

(School of Computer Science and Technology, Donghua University, Shanghai 201620, China)

Abstract: Driven by the growing maturity of cloud computing technology and increasing volume of business, IDC of enterprises has deployed a variety of heterogeneous private cloud platforms to support different business scenarios. There are many kinds of CMP, which are difficult to centrally manage. Management objects of the existing cloud management tools are lacking of domestic cloud computing products, and the price is high. The universal adapter model based on heterogeneous private cloud platform is proposed in this paper. It has low cost, deep customization and excellent scalability and so on. This paper selects some representative private cloud platforms such as HuaWei, Redhat OpenStack, CloudStack and VMware vSphere, and uses adapter, factory methods and other design patterns to transform the original API of the cloud platform as an unified adapter interface. The integration of adapter model, hardware infrastructure and CMP, which can achieve centralized management, simplify the multiple management system, and improve the utilization of resources and work efficiency.

Key words:

1概述

1.1研究背景

自谷歌提出云計算概念至今,十年内互联网信息技术革命性发展推动着云计算相关研究日趋成熟。各企业充分利用云计算技术资源快速池化、超大规模虚拟化的应用价值和发展前景推动传统商业模式转型,用云计算技术管理庞大的数据中心。在云计算平台云集,业务范围迅速扩张,基础设施更新换代频繁,灾备、安全、隔离、性能等需求层出的大背景下,企业会与多家云平台厂商合作,将应用程序及运行产生的数据分散部署和存储于不同技术支持的云平台中,而同一云平台也会伴随升级出现阶段性部署多版本的情况。又因不同架构下的云计算平台配有各自专属的管理系统,由此便引发多云平台亟需集中管理的迫切需求。

1.2研究现状

较国内而言,国外的云计算技术发展较早、成熟度较高,因此也先期面临了多云管理这一资源整合性问题。在云管理领域具有突出地位的RightScale、CliQr等厂商,各自旗下产品的纳管对象是国外知名大型云服务厂商的云计算平台(例如Amazon、Google、Microsoft、IBM的云平台,以及本文提及的3类私有云平台)。无论是从技术精湛度,还是从功能广泛性方面评估,RightScale的云管理平台(Cloud Management Platform,CMP)解决方案都具有绝对的世界领先水平,但其成本也是十分昂贵的。对国内企业而言,国外的云管理产品并不能完全适用,原因在于国内企业IDC部署的本土云计算平台产品未被上述管理工具纳管(如阿里云、腾讯云、华为、qingcloud、Ucloud、EasyStack等)。

2017年7月,云星数据(深圳)有限公司成为国内首个获得了RightScale授权的云管理服务商,未来将提供公有、私有、以及混合云的多云编排管理方案。H3C、华为、浪潮是中国有着与云星相似业务的公司,且是国内领先的混合云管理平台软件供应商。又如FIT2CLOUD,除支持基础设施资源的全面管理外,还将云计算技术与容器技术相结合,向DevOps集开发、测试、运维为一体的PaaS层面发展。CCW Research2017年发布的最新研究结果显示,未来5年国内私有云发展势头迅猛,带动云管理软件高速进步,国产化趋势将更加明显[1]。

1.3研究内容

本文基于企业部署率较高的4种异构私有云平台,研究将异构云平台的大量接口如何转换为对外提供服务的统一接口,设计并实现出一套对任意云平台都通用的适配器模型。通过使用GOF设计模式中的2种创建型和1种结构型模式来规范代码设计,提高项目的业内规范性和质量可靠性。该模型适用于纳管多个异构的云平台,使彼此分散、互不相通的计算、存储等资源池能在同一软件系统内实现全局集中式管理。适配器的设计能够直观地展现各类资源用量,减轻维护大量云管系统的压力,提高运作效率和资源利用率。本文模型较前文所述的商用云管理平台而言更轻量级,可扩展性和移植性强,云平台似可插拔组件般加入或移出模型。适配器项目定制导出为JAR文件,方便第三方云管理系统导入使用。篇章重点介绍模型的中间层,即适配器接口层的设计思路和实现要点,为多云管理系统提供基础支持。

2私有云平台

私有云是企业用户或个人用户独立构建的云计算平台,平台与外网隔断,仅能通过组织机构内部的局域网控制访问。因此,私有云计算平台的安全性级别较高,可有效地防止信息泄露和外部入侵。私有云平台中运行的是企业内部应用或个人的应用程序,资源对内部而言公开、透明、不涉及个人隐私,云平台可全面监控用户及应用行为。本文设计的通用适配器模型,其应用场景为企业数据中心,主要用于管理企业已存的各类私有云计算平台。

2.1OpenStack云计算平台

OpenStack发起于2010年,是由NASA和RackSpace共同研发的IaaS开源解决方案,为管理企业数据中心计算、存储、网络等资源池而构建的开源云计算平台。OpenStack包含一系列内部服务组件,服务组件通过API相互关联,各司其职,用户可根据实际需要选择性地安装,最终组成功能丰富的云操作系统。OpenStack的概念架构如图1所示,该架构描绘出各服务组件之间的关联关系[2]。

由图1可知,架构内Nova计算服务是OpenStack项目中位居基础的单元组件,最常使用的虚拟化技术是KVM和Xen[3],就是重点管理云计算平台中虚拟机实例的计算资源自创建至结束的全生命周期。Neutron是OpenStack的虚拟网络服务组件,其功能是为Nova提供IP地址和网络连接等常规服务,以及负载均衡、创建防火墙、VPN(Virtual Private Network)等高级服务。OpenStack中的存储服务包括Cinder(块存储服务组件)和Swift(对象存储服务组件)。该存储服务均为持久性存储,且采用冗余的存储方案,具有高可用、低风险的特点。

2.2VMware vSphere 虚拟化平台

在VMware众多虚拟化与云计算的产品中,VMware vSphere是侧重于基础架构服务器虚拟化的一款企业级虚拟化平台。VMware公司的产品因稳定性和兼容性好、性能和可靠性以及市场占有率高而著称,常被大型企业选用在数据中心的IaaS层配备虚拟化运行功能。

vSphere包含vCenter Server等管理服务和ESXi等大量功能性组件[4]。客户端vSphere Client能够全局统筹对ESXi的基本管理,并且包括处理虚拟机的相关操作。vCenter虚拟化管理平台具有丰富的API,本文的私有云管平台通用适配器就是基于这些接口获得实现[5]。

2.3CloudStack 云计算平台

CloudStack 是一个开源的云操作系统,能够管理大部分主流的hypervisors,如KVM、 XenServer、VMware、Oracle VM、Xen等[6]。CloudStack使存储、网络、计算资源协同工作,方便用户在现有架构上快速搭建IaaS服务层。

如圖2所示,终端用户通过 CloudStack API 和 CloudStack 编排引擎对接计算控制器、网络控制器和存储控制器,通过控制器操控底层的物理资源为用户提供所需服务。

3通用适配器模型

3.1模型架构设计

通用适配器模型是一个实现异构私有云平台集中管理的有效解决方案,模型的研究终态是一套可工作在不同IaaS方案之间的Java类库,提供对异构云计算环境的API接口执行方法,协助程序设计者进行云计算应用的开发。本模型的设计范围可解析整定为接口和类的设计工作,并秉承着3项规范:最大化满足云平台功能需要、保持原生态服务接口、符合GOF设计模式思路,代码尽量灵活简明。

宏观上该模型主要分为3层,如图3所示,自上而下分别为:应用服务层(例如CMP,及其它需调用适配器统一接口的应用服务)、适配器层(通用适配器统一接口)、IaaS层(多个异构的私有云平台),3.3节将专门探讨通用适配器统一接口的设计与实现。

3.2通用适配器的API调用

OpenStack云操作系统整合了大量的API供YOUR APPLICATIONS(客户应用程序)、Dashboard(仪表盘)、Monitoring & Tools(监控&管理工具)使用,开发者通过接口调用可控制整个数据中心的资源池。华为基于OpenStack架构研发的云计算产品FusionSphere OpenStack[7](以下简称为FSO),是商用加固型的OpenStack,现多应用于大型企业的数据中心,提供IaaS云服务。FSO Java SDK基于开源库OpenStack4j实现,用于配置和控制OpenStack的基础服务,且前者也协配有按组件划分的接口,允许使用者进行二次开发。RedHat OpenStack Platform[8]同样是一个能够满足在生产级环境下客户和业务需求的OpenStack云计算产品,因其结合红帽Linux系统构建的IaaS私有云而具有高稳定性和可扩展性等特点,同时整体依托的底层Linux还可为云主机的操作系统额外增添一种选择。除上述列举的产品外,国内外还有诸多企业,如EasyStack、Lenovo、Intel、IBM等,也已转入基于OpenStack开源项目设计部署云计算的解决方案研发中。本文将采用2种接口调用方式适配OpenStack型云平台,分别为OpenStack4j封装的OpenStack WEB API和OpenStack原生的RESTful API。

VMware开源的 VI (版本4后更名为vSphere) Java API 是一组旨在用于简化VI SDK Web服务接口的Java类库,现已呈现出性能卓越、响应速度快、可读性强等特点,是一套简洁、稳定、且包括有与VMware vSphere通信功能的实用工具。开发者调取其定义良好的管理对象模型,充分采用面向对象编程,便能通过该API连接至vCenter Server ,从而配置新的虚拟机并管理其生命周期。目前,开源的VI Java已停止更新,近期出现的VI JavaNG6.5是VI Java的商业版,在设计上配备了高性能的流引擎,无需生成DOM对象,节省了内存的消耗。本文选用VMware开源的VI Java API,VI JavaNG实则沿用了开源的VI Java API,两者具有一致的API,只不过VI JavaNG加设了更多的功能和支持选项。

Apache CloudStack API 采用RESTful风格,以HTTP的GET、POST方法提交所有请求,采用apiKey和私人签名登录验证的执行方式。API请求主要由以下部分组成:CloudStack管理服务器的URL、处理传入请求的API Servlet路径、执行的服务命令字符串、签名。其中,服务命令字符串包括命令、命令所需的参数、标识用户账户的唯一API密钥。每条HTTP请求都需要使用HMAC SHA-1散列函数对用户密钥进行计算,生成的字符串用作签名,以便CloudStack对调用者展开身份认证和授权。CloudStack默认API的调用响应格式为XML,但也可外延为本项目使用的JSON响应格式,仅需要在服务命令字符串中添加“&response;=json”字样即可。

以CloudStack云计算平台为例,图4选取了常用功能,列出模块与子模块的统一接口方案。

3.3通用适配器基本设计理念和处理流程

本文对适配器模式的传统模型加以改造,选用该模式分类下的对象适配器模式,补充创建型模式中的工厂方法和单例模式,创新性地将三者结合使用[9]。模型改造后重新定义的角色说明具体可见表1。

想要达到3.2节提出的4种Adaptee与原本不兼容的Target能够在同一项目中的配合协作,就需要进行接口转换,对3种既有云计算平台的开放接口逐一引入进一步的封装,隔离既有云计算平台和云管理平台,改造后的新接口解耦了客户应用程序对既有系统的依赖。适配器模式在未对现有类和接口启动改造的前提下,从外部增加新对象(即Adapter适配器类)完成从旧接口到新接口的转换处理。调用各既有系统的既有类型,依照客户程序的要求实现新接口。适配器层接收云平台接口的參数输入信息,输出云平台接口响应信息,并将输入输出封装成JavaBean。应用层通过HTTP协议或直接调用socket接口建立连接,且通过适配器层可切换任意云平台接口,适配器支持可扩展性,可添加不同云平台不同版本接口。

适配器项目的终态将被导出为JAR文件,供客户程序导入使用。图5展示了通用适配器统一接口的UML类图,直观地反映出新老接口的描述。适配器统一接口工作流程分述如下:

(1)客户端程序执行setRequestParam(Request request)方法配置出带有资源池管理软件类型、实际虚拟机操作等参数项的request。

(2)getAdapter()方法发送请求,调用适配器jar包中的统一外部接口创建相应的适配器(例如OpenStackAdapter等)。

(3)适配器调用具体实现,在内部创建适配器执行对象Adaptee(例如OpenStackAdaptee等),获取适配者单例。

(4)适配者根据传入request的信息类型,构造相应云计算平台所规定的API请求URL,API请求参数包括主机地址、用户名、密码、租户名等(CloudStack需生成签名),并对参数及URL进行序列化。

(5)执行check(Request request)方法检测服务器连接成功与否。

(6)执行execute(Request request)方法,实现获取tokens、查询云主机列表、虚拟机生命周期操作、挂载或卸载磁盘、创建或注销镜像等功能的API命令。

(7)适配器将返回的JSON格式的响应信息封装成Response响应类,发送至客户端的调用处,客户端接收Response,并将结果显示于CMP的图形化界面上。

本文针对不同类型的API采取不同的封装方式,如原生封装(不改变底层云平台API提供的任何接口)、数据转换(采用FastJson进行转换)、注解方式(通过注解方式对Request请求和Response结果加以赋值)。其中,RESTful HTTP风格的API中,核心关键性的抽象概念在于通过唯一标识远程访问资源,使用GET、PUT、POST等方法发出请求并获取响应。因此适配器项目对大量请求和响应进行了封装,首先实现了2个用于封装基本参数的基类Request和Response,两者的类图详见图6,其余所有组件分类下的API接口均继承自上述2个基类。

Request基类使用云平台类型、主机名称、API密钥、租户名称等信息通过身份认证后连接至服务器,自定义1个Command Annotation,并带有3个成员变量:name(请求名称)、description(请求描述)、responseObject(返回值类型,默认值为Response.class)。Request类中getRequestMethod()方法通过反射获取类中所有匹配的注解,强制转化为Command类型,并调用name方法返回请求名称;同理,getResponseTag()方法调用responseObject方法来运行馈送返回值类型。Response基类包含调用方法是否成功、异常错误、返回状态、异常信息头、响应体内容等成员变量。

通用适配器中的请求和响应类均继承自以上2个基类,扩展了请求响应类型以及封装的参数。请求响应类的一级分类为云平台类型,二级分类是API组件类型,三级分类则细化到某一操作。以CloudStack云平台中虚拟机API模块为例,研究得到3级分类下涉及功能的请求/响应类,重点表述可参见表2。

利用以上请求/响应类,加上特定的请求参数,测试类或客户程序即可统一化、模板化地调用各类云平台的具体操作,轻松完成异构私有云管平台池化资源的集中协调和管理。4结束语

建立异构私有云管平台通用适配器的目的和意义在于,能够有效地整合并调度不同云计算平台下的虚拟化资源,基于适配器而开发的CMP系统可对基础设施资源实现集中式、可视化的管理,简化了企业规模不断扩大的数据中心的云计算资源管理复杂度,提高了资源利用和复用率;宏观且实时掌控所有资源池中存量资源的使用情况,及时合理地调度资源,降低IT预算,节约运营成本,减少运维人员数量,提高IT运维的管理效率。

參考文献

[1] 计世资讯. 2016-2017年中国私有云市场现状与发展趋势研究报告[EB/OL].[2017-10]. http://www.ccwresearch.com.cn/report_detail.htm?id=458774.

[2] 陆平,赵培,左奇. OpenStack系统架构设计实战[M]. 北京:机械工业出版社, 2016.

[3]OpenStack. OpenStack Docs: Pike[EB/OL]. [2018-04-23]. https://docs.openstack.org/releasenotes/openstack-manuals/pike.html.

[4] 王春海. 深入学习VMware vSphere 6[M].北京:人民邮电出版社, 2016.

[5]VMware R&D.; VMware vSphere Java API[EB/OL].[2017-06-01]. http://vijava.sourceforge.net/testimonial.php.

[6] 刘振宇, 蔡立志, 陈文捷. CloudStack技术指南[M]. 哈尔滨:哈尔滨工程大学出版社, 2015.

[7] 华为技术有限公司. FusionSphere OpenStack[EB/OL].[2017-05-30]. http://developer.huawei.com/ict/cn/site-cloud/products/fusionSphere-openstack.

[8] RedHat. RedHat OpenStack Platform[EB/OL]. [2017-05-31]https://www.redhat.com/zh/technologies/linux-platforms/openstack-platform.

[9] 王翔, 孙逊. 模式—工程化实现及扩展(设计模式Java版)[M]. 北京:电子工业出版社, 2012.(上接第25页)

[7] ABDELAZIZ A Y, FATHY A. A novel approach based on crow search algorithm for optimal selection of conductor size in radial distribution networks[J]. Engineering Science and Technology, 2017, 20(2): 391-402.

[8] YANG Xinshe. Cuckoo search and firefly algorithm: Overview and analysis[M]. Cham:Springer International Publishing, 2014.

[9] RAY T, LIEW K M. Society and civilization: An optimization algorithm based on the simulation of social behavior[J]. IEEE Transactions Evolutionary Computations, 2003,7(4):386-396.

[10]LIU Hui, CAI Zixing, WANG Yong. Hybridizing particle swarm optimization with differential evolution for constrained numerical and engineering optimization[J]. Applied Soft Computing, 2010,10(2):629-640.

[11]ZHANG Min, LUO Wenjian, WANG Xufa. Differential evolution with dynamic stochastic selection for constrained optimization[J]. Information Sciences, 2008,178:3043-3074.

[12]SADOLLAH A, BAHREININEJAD A, ESKANDAR H, et al. Mine blast algorithm: A new population based algorithm for solving constrained engineering optimization problems[J]. Applied Soft Computing, 2013,13(5):2592-2612.

[13]COELLO C A C. Use of a self-adaptive penalty approach for engineering optimization problems[J]. Computers in Industry, 2000,41(2):113-127.

[14]COELHO L D S. Gaussian quantum-behaved particle swarm optimization approaches for constrained engineering design problems[J]. Expert Systems with Applications, 2010,37(2):1676-1683.

[15]HUANG Fuzhuo, WANG Ling, HE Qie. An effective co-evolutionary differential evolution for constrained optimization[J]. Applied Mathematics Computation, 2007,186(1):340-356.

[16]YANG Xinshe.Bat algorithm: Literature review and applications[J]. International Journal of Bio-Inspired Computation, 2013, 5(3): 141-149.

[17]BAYKASOGLU A. Design optimization with chaos embedded great deluge algorithm[J]. Applied Soft Computing, 2012,12(3): 1055-1067.

适配器 文章 平台