[黃志蘭 劉京松 關(guān)天強(qiáng) 陳楠]
基于LibCloud的云代理系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)
[黃志蘭 劉京松 關(guān)天強(qiáng) 陳楠]
公有云服務(wù)市場(chǎng)競(jìng)爭(zhēng)日趨激勵(lì),在行業(yè)、地域、功能、性能等方面呈現(xiàn)出多樣性和復(fù)雜性,催生了云服務(wù)代理市場(chǎng)的繁榮。主流云服務(wù)代理以實(shí)現(xiàn)多個(gè)云平臺(tái)的聚合和簡(jiǎn)單集成為主,能夠?yàn)樵葡M(fèi)者提供單點(diǎn)集中管理多云的服務(wù)。設(shè)計(jì)并實(shí)現(xiàn)了一個(gè)基于開(kāi)源多云管理項(xiàng)目LibCloud的云代理系統(tǒng),該系統(tǒng)聚合了OpenStack私有云、AWS公有云和天翼云,使得用戶(hù)能夠在同一界面操作這些云平臺(tái)的云主機(jī),簡(jiǎn)化了用戶(hù)對(duì)不同云平臺(tái)的使用。
云服務(wù)代理 云代理 multicloud libcloud
黃志蘭
碩士,2007年畢業(yè)于中山大學(xué),現(xiàn)就職于中國(guó)電信股份有限公司廣州研究院,主要研究方向?yàn)镾DN、云計(jì)算、IPv6。
劉京松
碩士,2011年畢業(yè)于寧波大學(xué),現(xiàn)就職于中國(guó)電信股份有限公司廣州研究院,主要研究方向?yàn)樵朴?jì)算。
關(guān)天強(qiáng)
本科學(xué)士,2014年畢業(yè)于中山大學(xué),現(xiàn)就職于中國(guó)電信股份有限公司廣州研究院,主要研究方向?yàn)樵朴?jì)算、SDN、OpenStack。
陳楠
2008年畢業(yè)于華南理工大學(xué),獲工學(xué)博士學(xué)位,現(xiàn)就職于中國(guó)電信股份有限公司廣州研究院,ITU-T Q14/SG11聯(lián)合報(bào)告人,Q18/SG13編輯人,主要研究方向包括SDN,NFV,服務(wù)器虛擬化、數(shù)據(jù)中心網(wǎng)絡(luò)、管理平臺(tái)技術(shù)等。
云服務(wù)代理(CSB,Cloud Service Brokerage,簡(jiǎn)稱(chēng)云代理,Cloud Broker)[1]既是一種IT角色也是一種商業(yè)模式,在這種商業(yè)模式下,由中立的第三方廠(chǎng)商或者實(shí)體公司來(lái)為云消費(fèi)者提供更加專(zhuān)業(yè)的、單點(diǎn)集中的多云管理服務(wù),幫助云消費(fèi)者以最有利的方式來(lái)采購(gòu)、實(shí)施和管理云。云服務(wù)代理有3種模式,包括云服務(wù)的聚合(aggregation)、集成(integration)、或定制化(customization)代理。其中,聚合型云服務(wù)代理的實(shí)現(xiàn)最為簡(jiǎn)單,主要將多個(gè)云服務(wù)匯聚起來(lái),單點(diǎn)提供給云消費(fèi)者,實(shí)現(xiàn)對(duì)多個(gè)云服務(wù)的單點(diǎn)登陸、統(tǒng)一管理、統(tǒng)一計(jì)費(fèi)、統(tǒng)一部署、SLA管理、客戶(hù)支持等;集成則在聚合的基礎(chǔ)上為云消費(fèi)者提供云服務(wù)治理、網(wǎng)絡(luò)集成、云間數(shù)據(jù)遷移等新的業(yè)務(wù)功能;定制化云代理最難實(shí)現(xiàn),要求根據(jù)客戶(hù)需求對(duì)現(xiàn)有云服務(wù)進(jìn)行定制化開(kāi)發(fā),改變或者增加云服務(wù)功能[2]。目前主流的云服務(wù)代理主要實(shí)現(xiàn)匯聚和簡(jiǎn)單的集成功能。
云服務(wù)代理是一種復(fù)雜的云計(jì)算服務(wù)模型,涉及多云管理、云接口適配、云間網(wǎng)絡(luò)互聯(lián)、云間遷移、云間資源編排等眾多類(lèi)型的云技術(shù)。不同模式的云服務(wù)代理對(duì)底層技術(shù)的要求不相同,實(shí)現(xiàn)難度也各不相同。聚合型云服務(wù)代理的業(yè)務(wù)模型相對(duì)簡(jiǎn)單,對(duì)底層技術(shù)的要求也相對(duì)簡(jiǎn)單,要求具備多云單點(diǎn)集中管理的能力即可。
開(kāi)源多云管理項(xiàng)目LibCloud[3],是Apache開(kāi)源基金會(huì)旗下的頂級(jí)項(xiàng)目,被Scalr[4]等業(yè)界知名的云代理服務(wù)提供商所使用。它將不同云服務(wù)對(duì)外提供的操作整理和集合起來(lái),形成針對(duì)云主機(jī)、塊存儲(chǔ)、負(fù)載均衡和DNS等資源和服務(wù)的通用操作,并將這些操作通過(guò)統(tǒng)一的API接口定義出來(lái),封裝成開(kāi)源的Python庫(kù),具有簡(jiǎn)單、易用、跨平臺(tái)支持良好等優(yōu)點(diǎn)。目前支持AWS、OpenStack、Rackspace、Azure等超過(guò)30個(gè)不同的云服務(wù)提供商。
我們基于LibCloud設(shè)計(jì)和實(shí)現(xiàn)了一個(gè)聚合型云服務(wù)代理系統(tǒng),該系統(tǒng)整合了OpenStack私有云、亞馬遜公有云(AWS,Amazon Web Service)和天翼云,實(shí)現(xiàn)了對(duì)這些云服務(wù)的統(tǒng)一認(rèn)證、統(tǒng)一管理和統(tǒng)一監(jiān)控,使得云用戶(hù)能夠在單一界面操作不同云平臺(tái)的云主機(jī)。
本文的余下部分將對(duì)云代理系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)進(jìn)行介紹,第2節(jié)介紹云代理系統(tǒng)的具體實(shí)現(xiàn)方案,第3節(jié)分析系統(tǒng)特色,第4節(jié)對(duì)現(xiàn)有工作進(jìn)行總結(jié)。
2.1功能設(shè)計(jì)
我們?cè)O(shè)計(jì)和實(shí)現(xiàn)了聚合型云服務(wù)代理系統(tǒng),該系統(tǒng)圍繞云主機(jī)服務(wù)為用戶(hù)提供單點(diǎn)集中管理多云的功能,包括:云主機(jī)生命周期管理、云硬盤(pán)管理、鏡像管理,以及單點(diǎn)登錄、統(tǒng)一計(jì)費(fèi)、統(tǒng)一監(jiān)控等功能。云代理系統(tǒng)后端管理3朵云,分別是OpenStack私有云、亞馬遜AWS和天翼云。
系統(tǒng)主體功能設(shè)計(jì)如圖1所示。
圖1 云代理系統(tǒng)功能結(jié)構(gòu)
其中,認(rèn)證模塊由兩部分組成,分別是云代理系統(tǒng)自身的用戶(hù)管理模塊,提供系統(tǒng)的注冊(cè)、登錄、退出等基本功能,以及云提供商賬號(hào)管理模塊,用于關(guān)聯(lián)及管理AWS、天翼云、OpenStack云平臺(tái)的登陸賬號(hào)信息,實(shí)現(xiàn)不同云平臺(tái)的單點(diǎn)登錄。
云主機(jī)管理模塊完成云主機(jī)的生命周期管理,包括:創(chuàng)建、刪除、啟動(dòng)、停止、暫停等。云代理系統(tǒng)維護(hù)云主機(jī)的類(lèi)型,包括云主機(jī)所屬的IAAS平臺(tái)。
鏡像管理模塊負(fù)責(zé)管理常用鏡像,以避免每次使用鏡像時(shí)對(duì)遠(yuǎn)端鏡像庫(kù)的檢索。
云硬盤(pán)管理模塊負(fù)責(zé)創(chuàng)建/刪除云硬盤(pán)(塊存儲(chǔ)設(shè)備),并將其掛載到某一臺(tái)云主機(jī),或者將其從云主機(jī)中卸載。
計(jì)費(fèi)模塊負(fù)責(zé)跟蹤用戶(hù)通過(guò)云代理系統(tǒng)操作云資源時(shí)產(chǎn)生訂單信息,并提供后端云平臺(tái)的費(fèi)用統(tǒng)計(jì)。
系統(tǒng)監(jiān)控模塊提供不同云平臺(tái)云資源的統(tǒng)一監(jiān)控界面,包括監(jiān)控云主機(jī)的運(yùn)行狀態(tài)、資源使用情況等,在云主機(jī)出現(xiàn)異常時(shí),能夠觸發(fā)告警通知客戶(hù)進(jìn)行處理。此外,監(jiān)控模塊也提供各個(gè)后端云平臺(tái)的資源統(tǒng)計(jì)信息。
2.2系統(tǒng)架構(gòu)
通過(guò)互聯(lián)網(wǎng)提供IT資源和服務(wù)是云計(jì)算區(qū)別于傳統(tǒng)數(shù)據(jù)中心IT資源提供方式的最主要特征之一,作為消費(fèi)者和云提供商中間媒介的云代理系統(tǒng)也理所應(yīng)當(dāng)通過(guò)互聯(lián)網(wǎng)提供服務(wù)。因此,我們采用主流的B/S模式設(shè)計(jì)和實(shí)現(xiàn)云代理系統(tǒng)。資源管理、單點(diǎn)登錄、監(jiān)控、計(jì)費(fèi)等多云管理功能作為WEB應(yīng)用的業(yè)務(wù)邏輯模塊進(jìn)行開(kāi)發(fā)。云代理系統(tǒng)引入LibCloud作為云接口適配器對(duì)后端云平臺(tái)的接口進(jìn)行統(tǒng)一,以降低系統(tǒng)開(kāi)發(fā)的復(fù)雜度。相對(duì)其他開(kāi)源云接口適配項(xiàng)目如JCloud[5]、DeltaCloud[6]而言,LibCloud的社區(qū)活躍度較高,并且支持的云平臺(tái)種類(lèi)、使用者和支持者都要優(yōu)于其他開(kāi)源項(xiàng)目。
云代理系統(tǒng)架構(gòu)圖如圖2所示。
圖2 云代理系統(tǒng)架構(gòu)
系統(tǒng)采用經(jīng)典的MVC模式設(shè)計(jì),采用Django作為WEB應(yīng)用框架。Django是一個(gè)基于Python語(yǔ)言的開(kāi)放源代碼Web應(yīng)用框架,提供對(duì)象關(guān)系映射、用戶(hù)界面設(shè)計(jì)、URL設(shè)計(jì)等功能,用于實(shí)現(xiàn)應(yīng)用開(kāi)發(fā)和數(shù)據(jù)庫(kù)管理,具有簡(jiǎn)單、易用、高性能等特點(diǎn)。WEB前端則使用jquery easyui和html實(shí)現(xiàn)。Web前端通過(guò)Ajax向后端服務(wù)器發(fā)送請(qǐng)求,數(shù)據(jù)以json的格式封裝。django后端收到請(qǐng)求后轉(zhuǎn)入業(yè)務(wù)邏輯處理,然后以json的格式返回response數(shù)據(jù)。
2.3云適配模塊
云代理系統(tǒng)采用開(kāi)源LibCloud項(xiàng)目作為云接口適配器。LibCloud項(xiàng)目將不同云服務(wù)對(duì)外提供的操作整理和集合起來(lái),形成針對(duì)云主機(jī)、塊存儲(chǔ)、對(duì)象存儲(chǔ)、CDN、負(fù)載均衡和DNS等資源和服務(wù)的通用操作,如增加、刪除、查詢(xún)、修改等,并將這些操作通過(guò)統(tǒng)一的API接口定義出來(lái),封裝成開(kāi)源的Python庫(kù)。各個(gè)云服務(wù)以驅(qū)動(dòng)(Driver)的方式實(shí)現(xiàn)LibCloud定義的標(biāo)準(zhǔn)接口,也可以對(duì)接口進(jìn)行擴(kuò)展以實(shí)現(xiàn)更多高階的服務(wù)?;贚ibCloud的云適配器架構(gòu)如圖3所示。
圖3 LibCloud系統(tǒng)架構(gòu)
具體說(shuō)來(lái),LibCloud將不同云平臺(tái)共有的概念特性抽象出來(lái),形成一系列基類(lèi)(放在libcloud.compute.base包中),基類(lèi)定義資源的基本屬性和通用操作,如ID、名稱(chēng)、一些共有屬性、所屬云驅(qū)動(dòng)等,各個(gè)云平臺(tái)的驅(qū)動(dòng)可以根據(jù)各自的業(yè)務(wù)需求對(duì)基類(lèi)進(jìn)行繼承和擴(kuò)展。LibCloud提供以下幾種類(lèi)型的基類(lèi):(1)Node:云平臺(tái)創(chuàng)建的虛擬機(jī)或者虛擬服務(wù)器;(2)NodeDriver:云平臺(tái)的接口驅(qū)動(dòng),LibCloud通過(guò)Driver來(lái)調(diào)用云平臺(tái)的API實(shí)現(xiàn);(3)NodeSize:虛擬機(jī)規(guī)格,包括vCPU、RAM、帶寬、磁盤(pán)大小等配置;(4)NodeImage:操作系統(tǒng)鏡像;(5)NodeLocation:區(qū)域劃分;(6)NodeState:虛擬機(jī)的狀態(tài),如運(yùn)行、關(guān)機(jī)、掛起、錯(cuò)誤等;(7)Keypair:虛擬機(jī)的密鑰對(duì),用于SSH遠(yuǎn)程登錄;(8)StorageVolume:云平臺(tái)的塊存儲(chǔ)對(duì)象;(9)VolumeSnapshot:塊存儲(chǔ)對(duì)象的快照。
其中,云平臺(tái)的驅(qū)動(dòng)實(shí)現(xiàn)是LibCloud最為核心的部分,各云平臺(tái)提供的Driver均繼承于NodeDriver基類(lèi),實(shí)現(xiàn)類(lèi)中的共有方法以及擴(kuò)展新的方法。
LibCloud官方提供的云驅(qū)動(dòng)和定義的方法并不能滿(mǎn)足云代理系統(tǒng)所有的云接口訪(fǎng)問(wèn)需求,因此,我們對(duì)LibCloud進(jìn)行了擴(kuò)展,包括增加對(duì)天翼云的支持、修改鏡像查詢(xún)方式等。LibCloud官方并不支持天翼云,因此,我們基于LibCloud接口規(guī)范對(duì)天翼云的API進(jìn)行封裝,形成天翼云的LibCloud 驅(qū)動(dòng)。天翼云的資源操作是與工單強(qiáng)相關(guān)的,因此,在封裝天翼云的API時(shí),我們對(duì)天翼云業(yè)務(wù)流程進(jìn)行梳理,通過(guò)自動(dòng)提交工單、輪詢(xún)工單狀態(tài)等手段,實(shí)現(xiàn)天翼云資源操作的自動(dòng)化,并盡量使得天翼云的LibCloud驅(qū)動(dòng)符合社區(qū)定義的標(biāo)準(zhǔn)。封裝后,云代理系統(tǒng)可以通過(guò)LibCloud接口管理天翼云的訂單、云主機(jī)和云硬盤(pán)。
圖4展示了通過(guò)LibCloud在云平臺(tái)創(chuàng)建虛擬機(jī)的操作流程。
圖4 LibCloud創(chuàng)建云主機(jī)的時(shí)序圖
其中CloudDriver為云平臺(tái)的LibCloud驅(qū)動(dòng)。用戶(hù)通過(guò)界面或者API創(chuàng)建虛擬機(jī)時(shí),云代理系統(tǒng)將根據(jù)用戶(hù)請(qǐng)求,選擇目標(biāo)云平臺(tái)的LibCloud驅(qū)動(dòng),并調(diào)用該驅(qū)動(dòng)的create_node()方法。該方法封裝了用戶(hù)傳遞的參數(shù),并生成云平臺(tái)原生的RESTful API調(diào)用,云后端接收到請(qǐng)求后將分配資源、啟動(dòng)虛擬機(jī)實(shí)例,并返回處理結(jié)果給LibCloud。LibCloud將返回的數(shù)據(jù)封裝成Node類(lèi)實(shí)例,供后續(xù)操作使用。
2.4云主機(jī)管理模塊
云主機(jī)管理模塊完成不同云平臺(tái)云主機(jī)生命周期的統(tǒng)一管理,包括創(chuàng)建、啟動(dòng)、暫停、停止、刪除云主機(jī),以及獲取云主機(jī)清單、查看云主機(jī)詳情等。不同云平臺(tái)對(duì)云主機(jī)的操作流程不同,雖然LibCloud對(duì)云主機(jī)的數(shù)據(jù)模型和API操作進(jìn)行了通用封裝,但是針對(duì)不同云平臺(tái)虛擬機(jī)的個(gè)性化操作方式和調(diào)用方式,并未能全部覆蓋。云代理系統(tǒng)針對(duì)不同云平臺(tái)的云主機(jī)管理進(jìn)行了業(yè)務(wù)流程封裝。例如,在管理天翼云的云主機(jī)時(shí),根據(jù)天翼云工單審核的特點(diǎn),自動(dòng)為云主機(jī)創(chuàng)建操作封裝創(chuàng)建訂單、提交訂單、輪詢(xún)訂單狀態(tài)、讀取訂單、維護(hù)訂單信息、創(chuàng)建云主機(jī)等一系列操作。其詳細(xì)流程圖如圖5所示。
云主機(jī)管理模塊同時(shí)需要與賬號(hào)管理模塊、鏡像管理模塊交互。在創(chuàng)建云主機(jī)時(shí),需要根據(jù)用戶(hù)的選擇提供合適的鏡像文件,以及提供用戶(hù)在云平臺(tái)的賬號(hào)信息;在云主機(jī)創(chuàng)建完成時(shí),需保存云主機(jī)和用戶(hù)賬戶(hù)的關(guān)聯(lián)關(guān)系,以便于后續(xù)對(duì)云主機(jī)的管理,如查看詳情、刪除、啟動(dòng)、停止等。
2.5云硬盤(pán)管理模塊
云硬盤(pán)管理模塊負(fù)責(zé)創(chuàng)建/刪除云硬盤(pán)(塊存儲(chǔ)設(shè)備),并將其掛載到某一臺(tái)云主機(jī),或者將其從云主機(jī)中卸載。與云主機(jī)管理模塊一樣,云代理系統(tǒng)需要處理不同云平臺(tái)云硬盤(pán)管理的個(gè)性化操作方式和調(diào)用方式,并對(duì)不同云平臺(tái)云硬盤(pán)的操作進(jìn)行業(yè)務(wù)流程封裝。
以天翼云為例,在創(chuàng)建云硬盤(pán)時(shí),首先創(chuàng)建并提交云硬盤(pán)訂單,然后啟動(dòng)輪詢(xún)進(jìn)程,查詢(xún)?cè)朴脖P(pán)的訂單狀態(tài),在訂單完成后,查詢(xún)訂單詳情,獲取云硬盤(pán)的ID信息,并將云硬盤(pán)的信息寫(xiě)入數(shù)據(jù)庫(kù)以便后續(xù)操作(如掛載/卸載/刪除等)。刪除過(guò)程類(lèi)似,由于涉及訂單審核,云硬盤(pán)的刪除只有在訂單完成時(shí),才會(huì)真正結(jié)束。
圖5 天翼云云主機(jī)創(chuàng)建過(guò)程
2.6鏡像模塊
鏡像模塊主要針對(duì)AWS公有云服務(wù)展開(kāi)。由于AWS提供的AMI鏡像數(shù)量眾多(單個(gè)Region有數(shù)萬(wàn)個(gè)可用的AMI),而官方發(fā)布的鏡像查詢(xún)接口并沒(méi)有篩選的功能,不利于客戶(hù)選擇。因此,云代理系統(tǒng)提供鏡像收藏功能,允許用戶(hù)從AWS鏡像列表中收藏常用鏡像,并在創(chuàng)建VM時(shí)直接從已收藏的鏡像列表中選擇需要使用的鏡像文件。
鏡像管理模塊提供鏡像的查詢(xún)、收藏功能。該模塊事先通過(guò)LibCloud調(diào)用從AWS中下載完整的鏡像列表,并存儲(chǔ)在本地?cái)?shù)據(jù)庫(kù)的AMI數(shù)據(jù)表中。為保持鏡像數(shù)據(jù)的可用性,云代理系統(tǒng)在下載鏡像時(shí),同時(shí)進(jìn)行以下幾個(gè)操作:(1)解析鏡像查詢(xún)接口調(diào)用返回的鏡像數(shù)據(jù),提取鏡像的操作系統(tǒng)類(lèi)型、系統(tǒng)版本、虛擬化類(lèi)型等關(guān)鍵屬性,幫助用戶(hù)快速確定鏡像的可用性;(2)啟動(dòng)獨(dú)立的鏡像管理進(jìn)程,周期性地從AWS同步鏡像數(shù)據(jù)。
云代理系統(tǒng)還提供針對(duì)本地?cái)?shù)據(jù)庫(kù)的鏡像檢索功能,支持用戶(hù)通過(guò)鏡像ID、名字、操作系統(tǒng)、系統(tǒng)架構(gòu)(如X86_64)、虛擬化類(lèi)型(如XEN)等屬性檢索鏡像,并收藏感興趣的鏡像。用戶(hù)也可以將鏡像從收藏列表中刪除。
2.7認(rèn)證模塊
認(rèn)證模塊實(shí)現(xiàn)兩個(gè)不同的功能,分別是云代理系統(tǒng)自身的認(rèn)證功能(用戶(hù)管理模塊),以及對(duì)不同云服務(wù)的統(tǒng)一認(rèn)證功能(賬戶(hù)管理模塊)。
用戶(hù)管理模塊是云代理系統(tǒng)本身具有的獨(dú)立的認(rèn)證模塊,用戶(hù)需要注冊(cè)賬號(hào)后才可以登錄云代理系統(tǒng)。用戶(hù)管理模塊采用基于角色的訪(fǎng)問(wèn)控制(RBAC)設(shè)計(jì),分為管理者和普通用戶(hù)兩種角色,不同的角色具有不同的權(quán)限,管理者具有系統(tǒng)完全的操作權(quán),即能夠管理系統(tǒng)的所有資源。普通用戶(hù)只能操作屬于自己的資源,如賬戶(hù)資源、云主機(jī)資源、云硬盤(pán)資源等。
賬戶(hù)管理模塊提供不同云服務(wù)的統(tǒng)一認(rèn)證功能,該功能是云代理系統(tǒng)的基礎(chǔ)功能。云代理系統(tǒng)支持一個(gè)用戶(hù)具有多個(gè)不同云平臺(tái)的多個(gè)賬戶(hù),并且用戶(hù)可以選擇激活或者不激活某個(gè)賬戶(hù),只有處于激活狀態(tài)的賬戶(hù)才能用于操作云資源。
賬戶(hù)管理模塊為云代理用戶(hù)提供綁定不同云平臺(tái)賬戶(hù)功能,用戶(hù)輸入AWS、天翼云和OpenStack的賬戶(hù)信息,包括:用戶(hù)名、訪(fǎng)問(wèn)秘鑰(access_key)、安全秘鑰(securet_ key),秉著選擇是否激活該賬戶(hù)。云代理系統(tǒng)將通過(guò)數(shù)據(jù)表的方式存儲(chǔ)這些賬戶(hù)信息,并將云平臺(tái)的賬戶(hù)信息與系統(tǒng)本身的用戶(hù)信息進(jìn)行關(guān)聯(lián),如圖6所示。
圖6 云平臺(tái)賬戶(hù)與云代理系統(tǒng)賬戶(hù)關(guān)聯(lián)
用戶(hù)每次操作云資源時(shí),云代理都需要根據(jù)用戶(hù)信息和資源類(lèi)型,從相應(yīng)的云平臺(tái)賬戶(hù)表中取得賬戶(hù)信息,用于云平臺(tái)API調(diào)用的賬戶(hù)認(rèn)證。
2.8監(jiān)控及計(jì)費(fèi)模塊
由于LibCloud并沒(méi)有云資源監(jiān)控和計(jì)費(fèi)相關(guān)的API,因此系統(tǒng)監(jiān)控模塊和計(jì)費(fèi)模塊的功能需要直接基于各個(gè)云服務(wù)對(duì)外開(kāi)放的監(jiān)控接口開(kāi)發(fā),例如針對(duì)AWS監(jiān)控,可以調(diào)用CloudWatch的API獲取數(shù)據(jù);針對(duì)OpenStack的監(jiān)控,則調(diào)用Ceilometer的API調(diào)用數(shù)據(jù)等。為簡(jiǎn)化代碼邏輯,方便后續(xù)系統(tǒng)擴(kuò)展,也可考慮對(duì)LibCloud接口庫(kù)進(jìn)行擴(kuò)展,增加關(guān)于監(jiān)控和計(jì)費(fèi)的自定義接口,同時(shí)擴(kuò)展各個(gè)云驅(qū)動(dòng),增加相應(yīng)的接口實(shí)現(xiàn)。同時(shí),云代理系統(tǒng)也提供云主機(jī)、云硬盤(pán)等資源的統(tǒng)計(jì)信息,使用戶(hù)能夠直觀(guān)獲得云資源在不同云服務(wù)的分布情況。針對(duì)天翼云的訂單特性,云代理系統(tǒng)還提供訂單跟蹤頁(yè)面。通過(guò)該界面,用戶(hù)可以方便查詢(xún)通過(guò)云代理開(kāi)通天翼云資源產(chǎn)生的訂單及其狀態(tài)。
受時(shí)間限制,本系統(tǒng)并未完全實(shí)現(xiàn)監(jiān)控和計(jì)費(fèi)的功能,只初步實(shí)現(xiàn)天翼云訂單跟蹤和云資源分布統(tǒng)計(jì)等基礎(chǔ)功能。
云代理系統(tǒng)實(shí)現(xiàn)具有以下幾個(gè)特點(diǎn):
(1)B/S(Browser /Server)模式,部署更為靈活、簡(jiǎn)單;
(2)采用Djgango框架,簡(jiǎn)化Python WEB應(yīng)用程序的開(kāi)發(fā);
(3)引入LibCloud,屏蔽了不同云平臺(tái)接口的差異性;
(4)按照開(kāi)源社區(qū)規(guī)范開(kāi)發(fā)了天翼云的LibCloud驅(qū)動(dòng),并作為第三方驅(qū)動(dòng)發(fā)布在LibCloud社區(qū),可幫助降低天翼云的集成難度。
云服務(wù)代理是云消費(fèi)者和云服務(wù)提供商之間的服務(wù)中介,能幫助云消費(fèi)者快速?gòu)谋姸嗖煌脑品?wù)提供商中獲取和使用云服務(wù),同時(shí)降低多云管理的難度。隨著云計(jì)算產(chǎn)業(yè)的不斷發(fā)展壯大,公有云服務(wù)在行業(yè)、地域、功能、性能等方面呈現(xiàn)出多樣性和復(fù)雜性,催生了云服務(wù)代理市場(chǎng)的繁榮。我們?cè)O(shè)計(jì)和實(shí)現(xiàn)了云服務(wù)代理系統(tǒng),圍繞云主機(jī)業(yè)務(wù)聚合了OpenStack私有云、AWS公有云和天翼云,實(shí)現(xiàn)這些云平臺(tái)云主機(jī)的統(tǒng)一管理、統(tǒng)一監(jiān)控、統(tǒng)一呈現(xiàn)和統(tǒng)一認(rèn)證。為簡(jiǎn)化多云管理的難度,我們引入了開(kāi)源LibCloud庫(kù)對(duì)不同云服務(wù)的API進(jìn)行統(tǒng)一,并基于LibCloud規(guī)范對(duì)天翼云API進(jìn)行了二次封裝。
1 [1]Gartner IT glossary about CSB.http://www.gartner.com/itglossary/cloud-services-brokerage-csb/
2 陳天,樊勇兵,賴(lài)培源.云服務(wù)代理架構(gòu)及應(yīng)用研究[J].電信科學(xué),2013(10):10-15
3 LibCloud.http://libcloud.apache.org/
4 Scalr.http://www.scalr.com/
5 JCloud.https://jclouds.apache.org/
6 DeltaCloud.http://deltacloud.apache.org/
10.3969/j.issn.1006-6403.2016.08.002
2016-07-27)