文/郭名芳 林予松 王宗敏
云計算作為一種新興的網絡服務模式,將傳統的以桌面為核心的任務處理轉變為以網絡為核心的任務處理,利用非本地或遠程服務器的分布式計算機為互聯網用戶提供按需分配的計算能力、存儲能力以及應用服務能力。云計算包括三個層次的服務:由底層硬件或虛擬機資源構建的基礎設施服務(IaaS);構建在云基礎設施上,提供云計算應用服務開發平臺和環境的平臺服務(PaaS);基于云平臺開發的各類應用服務的軟件服務(SaaS)。
在云計算體系的三層架構中,PaaS平臺位于中間層起著關鍵作用。PaaS能將現有各種業務能力進行整合,向下根據業務能力需要測算基礎服務能力,通過IaaS提供的API調用硬件資源,向上提供業務調度中心服務,實時監控平臺的各種資源,并將這些資源通過API開放給SaaS用戶。現今的多數PaaS平臺限制在非標準框架下,并且缺乏多種應用服務的支持能力,尤其是不能將應用跨越私有云和公有云進行部署。在這種情況下,第一個開源開放式PaaS平臺——Cloud Foundry應運而生,其架構專門針對云計算環境而設計,通過集成軟件堆棧、應用執行引擎、自助應用部署、自助應用架構配置功能實現簡化IT運算。
本文首先對PaaS平臺做一個簡單介紹,在此基礎上,深度剖析了Cloud Foundry的架構設計,并對如何發布應用程序到Cloud Foundry做了說明,然后通過與其他PaaS平臺的比較,給出了Cloud Foundry的幾個優勢,并說明如何將該平臺應用到高校云計算項目開發的實踐中去。
PaaS是Platform as a Service的縮寫,意思是平臺即服務。從傳統角度來看,如圖1所示,PaaS實際上就是云環境下的應用基礎設施,也可理解成中間件即服務。PaaS為部署和運行應用系統提供所需的基礎設施資源應用基礎設施,所以開發人員無需關心應用的底層硬件和應用基礎設施,并且可以根據應用需求動態擴展應用系統所需的資源。完整的PaaS平臺應提供的功能,如表1所示。
PaaS的實質是將互聯網的資源服務化為可編程接口,為第三方開發者提供有商業價值的資源和服務平臺。PaaS主要具備以下三個特點:1. 平臺即服務,PaaS提供的是一個基礎平臺,而不是某種應用;2. 平臺及服務,PaaS運營商所提供的服務不僅僅是單純的基礎平臺,而且包括針對該平臺的技術支持服務,甚至針對該平臺而進行的應用系統開發、優化等服務;3. 平臺級服務,強大而穩定的基礎運營平臺可以保證支撐SaaS或其他軟件服務提供商各種應用系統長時間穩定的運行。

圖1 云計算的三層服務

表1 PaaS的全局功能
Cloud Foundry的架構設計
Cloud Foundry是一個基于開源開放式PaaS平臺的服務,開發人員可以使用Java或者其他基于JVM的架構在該平臺上迅速部署及運行Web應用程序。目前,Cloud Foundry支持的應用程序框架包含Spring、Grails、Ruby on Rails、Node.js及Scala等,現在又增加了對.NET的支持;提供MySQL、MongoDB和Redis三種應用架構服務,以后還將逐步支持其他應用服務及第三方技術。Cloud Foundry的總體架構如圖2所示。
由圖2可知,Cloud Foundry由以下幾個模塊組成:
1. Router模塊
Router模塊在Cloud Foundry中是對所有進來的Request進行路由。進入Router的request主要有兩類:首先是來自VMCClient或者SpringSource Tool Suite(STS),由Cloud Foundry使用者發出的管理型指令。例如列出所有Apps的Vmcapps,提交一個Apps等。這類Request會被路由到AppLife Management組件中去。第二類是外界對所部署的Apps訪問的Request,這部分Requests會被路由到Appexecution或者Deas組件中去。所有進入Cloud Foundry系統的Requests都會經過Router模塊。
Router模塊是對nginx的一個簡單封裝,nginx以一個套接字文件(.sock文件)作為輸入輸出。外界httprequest進入Cloud Foundry服務器,nginx接到Request通過sock與router.rb進行交互,router.rb根據傳入的url、用戶名、密碼等進行邏輯判斷,然后到Cloud Controller組件或者DEA組件中取數據,并通過與nginx連接的.sock文件返回。簡而言之,router.rb是對nginx進行了邏輯封裝。
2. DEA(Droplet Execution Agency)模塊
Droplet是一個把提交的源代碼,以及Cloud Foundry配套好的運行環境,再加上一些管理腳本,例如start/stop這些小腳本全部壓縮好在一起的tar包。制作這個包并把其存儲好的過程叫stagingapp。Cloud Controller模塊發送start/ stop等基本的Apps管理請求給DEA,dea.rb接收這些請求,然后從NFS里找到合適的Droplet。DEA把找到的的Droplet解壓,并即行里面的start腳本,這個App便運行起來。至此,這臺服務器的某個端口已經在等待,只要Request從這個端口進來,此App就可以接收并返回正確的信息了。
3. Cloud Controller模塊
Cloud Controller是Cloud Foundry的管理模塊。Cloud Controller采用restful接口與VMC和STS進行通信,從VMC或者STS接到JSON格式的協議,然后寫入Cloud Controller Database,并發消息到各個模塊控制管理整個云。
4. HealthManager模塊
HealthManager模塊從各個DEA里取到運行信息,然后進行統計分析報告等。統計數據與Cloud Controller的設定指標進行比對,并提供Alert等。
5. Services模塊
Cloud Foundry的Service模塊是一個獨立的,可Plugin的模塊,以方便開發人員把自己的服務整合入Cloud Foundry生態系統。目前,Cloud Foundry提供的服務有數據服務、信息服務等。
6. NATS
從Cloud Foundry的架構圖可以看出,nats位于各模塊的中心位置,是一個輕量級的,支持發布、訂閱機制的消息系統。Cloud Foundry是基于多模塊的分布式系統,支持模塊自發現,錯誤自檢,且模塊間低耦合,其核心原理是基于消息發布訂閱機制。每臺服務器上的各個模塊根據自己的消息類別,向MessageBus發布多個消息主題,同時按照需要的信息內容的消息主題訂閱消息。

圖2 Cloud Foundry架構圖
Cloud Foundry的使用
開發者可以使用Cloud Foundry實例進行應用的開發和部署。首先需要進入Cloud Foundry的官方網站進行注冊,隨后會在注冊的郵箱收到注冊確認以及初次登錄的密碼。注冊成功后,發布應用程序到Cloud Foundry可以使用命令行工具vmc,或圖形界面工具,如Spring Source Tool Suite(STS)。下面將對這兩種方式進行簡單介紹。
VMC是Cloud Foundry的一個命令行工具,包括應用、服務的生命周期管理、Cloud Foundry賬戶管理和運行狀態等使用的操作。VMC是一個Ruby應用,在安裝VMC之前,Windows等系統需要先安裝Ruby和相關的組件。然后使用“sudo gem install vmc”命令安裝VMC,安裝好VMC后,需要連接到Cloud Foundry,使用“vmc target hello.cloudfoundry.com”命令。輸入已注冊的用戶名和密碼,使用編輯器編輯所要顯示的內容。最后在Cloud Foundry上部署應用程序。部署好應用程序后,打開瀏覽器,輸入剛才應用程序所部署的URL,就可以看到編輯器編輯的內容。
STS是一個基于Eclipse、用于構建Spring應用程序的開發環境。開發者可以使用STS在Cloud Foundry中部署并管理Spring、Grails以及Java應用。首先需要下載并安裝STS,然后在STS中安裝Cloud Foundry Integration插件,該插件為Cloud Foundry云平臺提供了很好的支持,允許開發者直接在工作區中將應用程序部署為Cloud Foundry實例以及查看、管理已部署的應用程序和服務。安裝成功后,在Server下會出現VMware→CloudFoundry。然后便可以使用Cloud Foundy插件創建工程并發布運行程序。


表2 Cloud Foundry與其他PaaS平臺的比較
隨著云計算技術的不斷發展,PaaS逐漸在云計算市場占重要地位。PaaS平臺相繼不斷涌現,國外具有代表性的有Google的Google App Engine,微軟的SQL Azure等。國內也推出了多款云計算PaaS平臺,如新浪云、百度云、阿里云、騰訊云。表2是Cloud Foundry與這些平臺的比較結果。
由表2可知,相比其他PaaS平臺,Cloud Foundry的優勢有以下幾個方面:
1. Cloud Foundry是一個開源PaaS平臺,一方面開發者可以通過這個平臺來建設自己的SaaS服務,不用自行建設和維護硬件服務器及中介軟件;另一方面,因為Cloud Foundry采用開源的網站平臺技術,開發者的應用程序可以轉移到其他平臺而不受限于Cloud Foundry的平臺。
2. Cloud Foundry能夠部署在私有云或公有云的環境中,既可以運行在vSphere和vCloud架構之上,也可以運行在其他云架構之上。例如Cloud Foundry可以部署在Amazon Web服務之上,還可以部署在Eucalyptus和OpenStack等開源平臺技術之上。而其他的PaaS平臺把用戶限制在某個特定的云里,不能將應用跨越私有云和公有云進行部署。
3. Cloud Foundry可以支持多種開發框架,Spring for Java、Ruby on Rails、Node.js以及多種JVM開發框架等。不像在Azure上必須使用微軟的.Net框架來開發應用程序,在VMForce上必須使用Spring框架來開發應用程序。
4. Cloud Foundry提供消息服務,如RabbitMQ;數據服務,如MySQL,MongoDB,Redis。還有一些其他服務,如GemFire等。
總之,作為第一個開源開放式PaaS平臺,Cloud Foundry能夠廣泛支持各種開發框架和編程語言以及多樣的應用服務和云部署環境,方便用戶快速部署云平臺應用。
隨著高校研究生招生規模不斷擴大,研究生的各類信息也不斷增長,其中學位和教務教學管理作為高校碩士培養中及其重要的一個環節,準確快速的實施對于提高研究生管理水平也就顯得尤為重要。因此,為了適應當前研究生培養的需要,改善研究生信息的管理手段效率低、繁瑣、資源浪費大等缺點,高校建設了學位與研究生教育云平臺項目,實現研究生管理工作的網絡化集中化管理。該項目選擇了Cloud Foundry這一開源平臺,通過下載Github上開源的Cloud Foundry源代碼,在自己的數據中心搭建一個PaaS平臺,開發部署應用程序, Cloud Foundry的優勢為項目實施帶來了很大的便利。另外,高校有關云計算的科研項目多數都在嘗試Cloud Foundry這個開發平臺。
Cloud Foundry作為開源的PaaS平臺,是未來教育信息化基礎架構平臺的最佳選擇之一,它能夠實現云計算輔助教學,構建個性化教學的信息環境,另外還能為高校的各部門管理、教學資源共享等提供云服務,節省未來IT重復投資,明顯提升工作效率和用戶服務質量。
本文從現有云計算技術出發,針對目前PaaS平臺存在的一些缺陷,引出了第一個開源PaaS平臺——Cloud Foundry,深入剖析了Cloud Foundry的架構設計,并對部署應用程序到Cloud Foundry的兩種方式:VMC命令行工具和STS,做了簡單說明。通過與其他PaaS平臺比較發現,在可靠性、開發工具的提供和服務、存儲成本上,Cloud Foundry均占優勢,其應用前景非常廣闊。隨著云計算在教育領域的遷移,關于云計算的科研項目不斷被提出, Cloud Foundry因其開源性成為了高校項目開發平臺中一個不錯的選擇。