王一盟



文章編號: 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.