摘 要: 隨著網(wǎng)絡(luò)和云計算的快速發(fā)展,,出現(xiàn)了越來越多的網(wǎng)絡(luò)資源,對網(wǎng)絡(luò)資源的共享,、管理以及按需分配是云計算的一個重要的研究方向,。PaaS平臺即服務(wù)是云計算的一個重要服務(wù)類型,,無論是對學(xué)校研究還是企業(yè)應(yīng)用都有著很大的吸引力。利用PaaS平臺,,可以降低項目開發(fā)的成本和周期,,還可以提高項目對外提供服務(wù)的質(zhì)量。針對現(xiàn)有的公共PaaS平臺不適合大連理工大學(xué)做研究以及使用的狀況,,設(shè)計并實現(xiàn)了一套基于Cloud Foundry的PaaS平臺,。實踐表明,本平臺不僅有效地利用了資源,,還使得部署其上的云應(yīng)用更有彈性,。
關(guān)鍵詞: PaaS;Cloud Foundry,;應(yīng)用程序部署,;私有云平臺
云計算[1]是一種新的服務(wù)模式,由一系列可以動態(tài)升級和可被虛擬化的資源組成,,這些資源可被所有云計算用戶共享并方便地通過網(wǎng)絡(luò)訪問,。云計算的服務(wù)模式分為3種:由底層硬件或虛擬機(jī)資源構(gòu)建的基礎(chǔ)設(shè)施服務(wù)(IaaS);構(gòu)建在云基礎(chǔ)設(shè)施上,,提供云計算應(yīng)用服務(wù)開發(fā)平臺和環(huán)境的平臺服務(wù)(PaaS),;基于云平臺開發(fā)的各類應(yīng)用服務(wù)的軟件服務(wù)(SaaS)。在這3層架構(gòu)中,,PaaS[2]扮演了一個非常重要的角色,,它的本質(zhì)是一個特殊的網(wǎng)絡(luò)資源中心,是一個開放的平臺,,通過Web API的形式向外提供服務(wù),,這樣應(yīng)用程序開發(fā)人員就無需再考慮硬件資源以及其他所需的服務(wù)框架。目前比較流行的PaaS云平臺有Google App Engine,、Microsoft Azure Service和Amazon Web Services,,但是這些平臺都有一些局限性,比如Google App Engine只允許部署用Java和Python開發(fā)的應(yīng)用程序,,Microsoft Azure Service只允許部署使用.NET框架開發(fā)的應(yīng)用程序,,這對一些以前遺留的系統(tǒng)來說是不可用的。而且使用公共云存在一些安全隱患,,所以,提供一個旨在為校內(nèi)師生服務(wù)的私有云[3]平臺是非常有必要的,。高等教育云計算是云計算應(yīng)用的重要領(lǐng)域,,將高等教育建設(shè)所必需的基礎(chǔ)設(shè)施以及軟件服務(wù)由Cloud Foundry[4]集成一個PaaS級的平臺,向?qū)W生,、實驗室提供以租用為形式的服務(wù),。這樣不僅充分利用了學(xué)校的資源,,還節(jié)省了開發(fā)一個項目的資金和時間。
1 Cloud Foundry云平臺
Cloud Foundry是VMware于2011年4月12日推出的業(yè)界第一個開源PaaS云平臺,,它支持多種框架,、語言、運(yùn)行環(huán)境,、云平臺及應(yīng)用服務(wù),,這些框架包括Spring for Java、.NET,、Ruby on Rails,、Node.js、Grails和Scala on Lift,,現(xiàn)在又新加了Python,、PHP等,大大提高了平臺的靈活性,。Cloud Foundry是基于IaaS之上的,、支持Cloud Foundry的IaaS平臺可以是Open Stack,也可以是vSphere,。與其他的PaaS平臺(Google的Google App Engine,、Amazon的Amazon Web Service等)相比,它有更好的靈活性,。使用Cloud Foundry可以架構(gòu)自己的公有云平臺或私有云平臺,,是高校架構(gòu)云平臺的首選。Cloud Foundry是由相對獨(dú)立的多個模塊構(gòu)成的分布式系統(tǒng),,每個模塊單獨(dú)存在和運(yùn)行,,各模塊之間通過消息機(jī)制進(jìn)行通信。下面介紹Cloud Foundry中的主要的模塊,。
(1)通信模塊
如圖1所示,,Cloud Foundry是由許多模塊組成的,這些模塊間的通信主要是由NATS實現(xiàn)的,。NATS是一款基于EventMachine,,使用“發(fā)布-訂閱”機(jī)制的輕量級消息中間件。EventMachine通過實現(xiàn)Reactor設(shè)計模式解決了Ruby語言與生俱來的并發(fā)能力不足的問題,,也為NATS帶來了良好的并發(fā)請求處理能力,。NATS不對消息做持久化,所以對消息的匹配和訂閱過程相對高效,。例如Router這個組件,,其作用是對外部發(fā)送進(jìn)來的請求進(jìn)行路由,以使整個平臺負(fù)載均衡,,發(fā)送給Router的消息使用的正是NATS,。由此可以看出NATS的重要性,,它是整個平臺良好運(yùn)作的基礎(chǔ)。
(2)應(yīng)用程序執(zhí)行模塊
應(yīng)用程序的執(zhí)行是在Dea這個組件上進(jìn)行的,,啟動一個APP時,,Dea會下載一個Droplet副本,然后使用這個副本來運(yùn)行,。Droplet是指把一個應(yīng)用程序的源代碼及Cloud Foundry配置好的運(yùn)行環(huán)境,,再加一些控制腳本如start/stop等,全部打包在一起的tar文件,。如果一個應(yīng)用程序要擴(kuò)展,,就會將這個Droplet多復(fù)制幾份,然后下載到更多的Dea服務(wù)器上運(yùn)行,。
(3)控制模塊
控制模塊是由Cloud Controller構(gòu)成,,負(fù)責(zé)與客戶端交互的服務(wù)器端,它收到客戶端發(fā)來的指令后發(fā)消息給各個模塊,,管理整個云的運(yùn)行,,相當(dāng)于Cloud Foundry的大腦。
2 基于Cloud Foundry的云平臺的設(shè)計
2.1 Cloud Foundry服務(wù)平臺(CFP)的架構(gòu)
Cloud Foundry服務(wù)平臺的架構(gòu)如圖2所示,。
2.2 功能分析
CFP是旨在為以教育和研究為目的的師生提供服務(wù)的開發(fā)平臺,,在這個平臺上集成了眾多的框架與第三方服務(wù),這些框架包括Java Spring,、.NET和Ruby on Rails,,服務(wù)有Mysql、MongoDB,、Redis,。本平臺有成本低、可擴(kuò)展性好,、服務(wù)質(zhì)量優(yōu)的特點,。CFP架構(gòu)從下到上主要分為以下幾層:
(1)硬件設(shè)施層
該層是為整個Cloud Foundry平臺提供硬件設(shè)施的保障,包括存儲設(shè)備,、網(wǎng)絡(luò)設(shè)備,、計算設(shè)備等,通過虛擬化整合異構(gòu)平臺,。
(2)IaaS級平臺
Cloud Foundry是PaaS級的平臺,,自然可以部署在IaaS級的平臺上,在該層上實現(xiàn)了資源的調(diào)度,、分配,,IaaS平臺可以有效地統(tǒng)一管理虛擬資源。CPI接口是封裝了IaaS級的API,,通過CPI,,PaaS可以調(diào)度由IaaS管理的虛擬資源。
(3)Cloud Foundry應(yīng)用開發(fā)平臺
PaaS平臺又可分為應(yīng)用開發(fā)平臺,、應(yīng)用運(yùn)行平臺,、數(shù)據(jù)庫即服務(wù)、服務(wù)集成平臺,、應(yīng)用中間件平臺,、流程服務(wù)平臺等,這里所搭建的Cloud Foundry平臺是應(yīng)用開發(fā)平臺[5],,是為校內(nèi)師生開發(fā),、部署系統(tǒng)所服務(wù)的。這一層平臺是整個架構(gòu)的核心,,師生在申請服務(wù)時即可在這一層得到所需的資源,。CFP根據(jù)用戶上傳的應(yīng)用程序動態(tài)地分配資源,自動匹配應(yīng)用程序的框架,。如果應(yīng)用程序有連接數(shù)據(jù)庫的要求,,本平臺會根據(jù)現(xiàn)有的數(shù)據(jù)庫服務(wù)讓用戶選擇其中的一個。在本平臺上的每一種服務(wù)都是可移植的,,因而部署在CFP平臺上的系統(tǒng)非常容易遷移,。
(4)用戶訪問層
本平臺的用戶分為維護(hù)CFP平臺的維護(hù)人員、開發(fā)應(yīng)用程序的人員和應(yīng)用程序的最終用戶3種,。本文所指的用戶主要是指應(yīng)用程序開發(fā)人員,。用戶在向管理員申請到資源后,可用VMC這個客戶端工具把應(yīng)用程序部署到平臺上,,如果用戶想要擴(kuò)展應(yīng)用程序的規(guī)模,,或者要對應(yīng)用程序進(jìn)行其他方面的改進(jìn),使用這個客戶端工具都是非常方便的,。終端用戶通過Browser訪問應(yīng)用程序,,URL地址在部署項目時生成。
3 CFP平臺的管理
CFP的使用流程如圖3所示,。首先,,用戶需要登錄Web管理系統(tǒng)實名注冊,提交給管理員審批,,通過之后才能申請資源,。通過審批之后,就可以用VMC/STS工具把應(yīng)用程序部署在CFP平臺上了,。本平臺會根據(jù)用戶上傳的應(yīng)用程序為其自動分配資源,。終端用戶指的是最終使用應(yīng)用程序的用戶,可以通過Web訪問應(yīng)用程序,,也可以通過移動設(shè)備訪問[6],。
表1顯示了實際部署在CFP上的兩個應(yīng)用程序,。
本文從現(xiàn)有的云計算技術(shù)出發(fā),根據(jù)目前PaaS所面臨的狀況以及高校項目中實際的需求,,利用開源的項目Cloud Foundry設(shè)計并開發(fā)了一套PaaS級服務(wù)云平臺,,利用本平臺,校內(nèi)師生可以直接把項目部署在其上,,基于本平臺的應(yīng)用程序易于構(gòu)建和維護(hù),,還可以根據(jù)用戶的訪問量和數(shù)據(jù)存儲需要進(jìn)行擴(kuò)展。最后,,經(jīng)過驗證,,本平臺確實可以承載多種語言開發(fā)的應(yīng)用程序,并能很好地利用資源,,從而達(dá)到彈性計算和靈活部署應(yīng)用程序的目的,。
參考文獻(xiàn)
[1] 吳吉義,平玲娣,,潘雪.云計算:從概念到平臺[J].電信科學(xué),,2009(12):23-30.
[2] Lv Chengtong,Li Qing,,Peng Junjie,,et al.PaaS:a revolution for information technology platforms[A].2010 International Conference on Educational and Network Technology,2010.
[3] 周詳.私有云構(gòu)建中資源和數(shù)據(jù)管理的研究[D].北京:北京工業(yè)大學(xué),,2012.
[4] Cloud Foundry[EB/OL].[2013-09-17].http://www.cloudfoundry.com/.
[5] LAWTON G.Developing software online with Platform-as-a service technology[J].Computer,,2008,41(6):13-15.
[6] KIBEL S,,WATANABE S,,KUNISHIMA K,et al.PaaS on IaaS[C].2013 IEEE 27th International Conference on Advanced Information Networking and Applications,,2013.