Cloud Foundry由VMware公司開發(fā),初衷是為廣大應(yīng)用程序開發(fā)人員、應(yīng)用程序操作人員和云運(yùn)營(yíng)商簡(jiǎn)化部署工作。隨后在2011年4月份,Cloud Foundry宣布成為開源項(xiàng)目,采用Apache 2.0許可證,聲稱開發(fā)人員可以用自己選擇的語(yǔ)言和Web框架來(lái)編寫代碼,沒(méi)必要為具體的IT環(huán)境而操心。
2014年2月份,從VMware拆分出來(lái)的Pivotal宣布成立Cloud Foundry基金會(huì),Pivotal、EMC、IBM、Rackspace和VMware都是白金級(jí)贊助商。該基金會(huì)的隊(duì)伍此后擴(kuò)大到33個(gè)成員和42家捐獻(xiàn)代碼的公司。Cloud Foundry的一大差異化優(yōu)勢(shì)就是支持Pivotal HD Hadoop MapReduce、HAWQ SQL for Hadoop和GemFire XD分析平臺(tái)。Pivotal的大數(shù)據(jù)服務(wù)和移動(dòng)服務(wù)現(xiàn)在都與Pivotal CF整合起來(lái),而Pivotal CF是該公司的企業(yè)版Cloud Foundry。
Cloud Foundry基金會(huì)的幾個(gè)成員已陸續(xù)發(fā)布了各自的Cloud Foundry發(fā)行版,包括ActiveState公司的Stackato產(chǎn)品。免費(fèi)的Stackato Micro Cloud可用于VirtualBox、VMware Fusion/Player、VMware vSphere和KVM。
雖然開源Micro Cloud Foundry VM還沒(méi)有更新到Cloud Foundry v2,但是你可以使用bosh-lite或者 cf_nise_installer,本地安裝Cloud Foundry開源產(chǎn)品。bosh-lite支持VMware Fusion/Player、VirtualBox和亞馬遜網(wǎng)絡(luò)服務(wù)(AWS),而cf_nise_installer只支持VirtualBox。
我詢問(wèn)Pivotal為何缺少M(fèi)icro Cloud Foundry v2 VM,Pivotal CE社區(qū)工程師Jamie O'Meara回復(fù)如下:
我們的重心放在為Cloud Foundry提供一種企業(yè)級(jí)PaaS體驗(yàn)上,這包括安裝到數(shù)量眾多的云服務(wù)提供商平臺(tái)上,比如vSphere/vCHS、OpenStack、AWS和谷歌計(jì)算引擎(Google Compute Engine)。作為這種體驗(yàn)的一部分,我們發(fā)現(xiàn)開發(fā)人員愿意構(gòu)建和使用其本地工具,或者愿意推送到Cloud Foundry的私有和公有實(shí)例。
bosh-lite這個(gè)工具為CF v2的一部分提供了支持,用來(lái)執(zhí)行特定的任務(wù),比如構(gòu)建數(shù)據(jù)庫(kù)之類的BOSH可部署服務(wù)。它并不是取代Micro Cloud Foundry,Micro Cloud Foundry仍在我們的路線圖上。Stackato的Micro基于CF v2,只是添加了一些專有組件。
Pivotal本身有兩款Cloud Foundry PaaS解決方案:在線版Pivotal Web服務(wù)和面向企業(yè)的Pivotal CF。與這些解決方案相輔相成的還有Pivotal HD及相關(guān)的云服務(wù)解決方案,以及其他專用的數(shù)據(jù)解決
方案,比如Pivotal Greenplum RDBMS、Pivotal GemFire和Pivotal SQLFire。此外,Pivotal前年收購(gòu)的Xtreme Labs給它帶來(lái)了與其PaaS和大數(shù)據(jù)服務(wù)整合起來(lái)的移動(dòng)服務(wù)套件。
正如Jamie O’Meara在聲明中提及,Pivotal CF可以在VMware、OpenStack、亞馬遜網(wǎng)絡(luò)服務(wù)和谷歌云平臺(tái)上運(yùn)行。
Cloud Foundry的架構(gòu)和特性
Cloud Foundry彈性運(yùn)行時(shí)系統(tǒng)在DEA(Droplet執(zhí)行代理)中運(yùn)行名為droplet的封包應(yīng)用程序,而droplet是一種打包文件,包括你應(yīng)用程序的所有代碼以及依賴項(xiàng)。DEA由Cloud Controller(云控制器)管理,由Health Manager(健康管理器)監(jiān)控,而Routers(路由器)負(fù)責(zé)管理應(yīng)用程序流量、進(jìn)行負(fù)載均衡以及合并日志。反過(guò)來(lái),DEA調(diào)用服務(wù)代理節(jié)點(diǎn),這些節(jié)點(diǎn)通過(guò)消息總線進(jìn)行聯(lián)系。云控制器可訪問(wèn)二進(jìn)制大對(duì)象(blob)存儲(chǔ)區(qū)以及內(nèi)有應(yīng)用程序元數(shù)據(jù)和服務(wù)憑據(jù)的數(shù)據(jù)庫(kù)。
想部署應(yīng)用程序,開發(fā)人員基本上要上傳應(yīng)用程序代碼和元數(shù)據(jù),使用Cloud Foundry命令行,或者使用來(lái)自Eclipse、Maven或Gradle的插件。此外,開發(fā)人員需要?jiǎng)?chuàng)建和綁定服務(wù)。這一切歸結(jié)為構(gòu)建WAR歸檔文件,并上傳該WAR。
云控制器會(huì)自動(dòng)檢測(cè)并裝入任何必要的系統(tǒng)構(gòu)建包(buildpack),創(chuàng)建一個(gè)droplet,將應(yīng)用程序droplet部署到DEA,注冊(cè)路由,以及轉(zhuǎn)發(fā)端口。一旦DEA處于活動(dòng)狀態(tài),健康管理器就會(huì)將來(lái)自云控制器的DEA的預(yù)期狀態(tài)與來(lái)自DEA的實(shí)際狀態(tài)進(jìn)行比對(duì)。要是健康管理器檢測(cè)到偏差,它會(huì)要求云控制器重啟未處于預(yù)期狀態(tài)的任何DEA。
管理員使用BOSH,而不是其他IT自動(dòng)化工具(比如Puppet或Chef),以管理Cloud Foundry的底層基礎(chǔ)設(shè)施。作為一種用于大規(guī)模分布式服務(wù)的版本設(shè)計(jì)、部署和生命周期管理的開源工具鏈,BOSH有自己的命令行,有別于cf命令行,但是你不需要它來(lái)部署應(yīng)用程序。BOSH用于部署虛擬機(jī),而不是部署droplet。
大體上來(lái)說(shuō),BOSH通過(guò)虛擬機(jī)模板“stemcell”克隆新的虛擬機(jī),以創(chuàng)建部署的應(yīng)用程序所需的虛擬機(jī)。stemcell包括操作系統(tǒng)和嵌入式BOSH代理,該代理讓BOSH可以控制通過(guò)stemcell克隆的虛擬機(jī)。BOSH版本是源代碼、配置文件和啟動(dòng)腳本共同組成的集合體,版本號(hào)可以識(shí)別這些組件。BOSH部署清單文件是一個(gè)YAML文件,定義了部署的布局和屬性。
Cloud Foundry包括UAA(用戶帳戶及授權(quán))和登錄服務(wù)器。UAA就是Cloud Foundry的身份管理服務(wù)。其主要角色是充當(dāng)OAuth2提供者,頒發(fā)客戶端應(yīng)用程序在代表Cloud Foundry用戶操作時(shí)所使用的令牌。不過(guò),它還能通過(guò)用戶的Cloud Foundry憑據(jù)驗(yàn)證用戶的身份,并且充當(dāng)SSO(單一登錄)服務(wù)。登錄服務(wù)器為UAA執(zhí)行驗(yàn)證任務(wù),并充當(dāng)后端服務(wù)。Cloud Foundry管理員可以在登錄服務(wù)器上設(shè)置身份驗(yàn)證源,比如LDAP/AD、SAML、OpenID(谷歌和雅虎等)或者社交網(wǎng)站。
具體到應(yīng)用程序執(zhí)行層面,DEA使用Warden Linux容器。Warden提供了一套簡(jiǎn)單的API,用于管理隔離的、短暫的、資源受控制的環(huán)境或容器。在將來(lái),Cloud Foundry會(huì)支持Docker容器。
Cloud Foundry架構(gòu)的方塊圖。
[page]用構(gòu)建包部署應(yīng)用程序
構(gòu)建包為你的應(yīng)用程序提供了框架和運(yùn)行時(shí)環(huán)境支持。Cloud Foundry和Pivotal CF中有四種標(biāo)準(zhǔn)的構(gòu)建包:Java、Node.js、Ruby和Go。(Stackato擁有Python而不是Go。)好消息是,構(gòu)建包隨時(shí)可用、易于安裝,甚至易于構(gòu)建,假設(shè)你會(huì)用Ruby或另一種編程語(yǔ)言編寫幾行代碼。在大多數(shù)情況下,你需要的開源語(yǔ)言和框架將以構(gòu)建包的形式可供使用;如果你需要裝入它,只要在推送應(yīng)用程序時(shí),在cf命令行上提及Git軟件庫(kù):
$ cf push my-new-app -b git://github.com/johndoe/my-buildpack.git另外,在你的清單文件中提及構(gòu)建包。比如說(shuō),一個(gè)正常運(yùn)行的WordPress for Cloud Foundry在Daniel Mikusa創(chuàng)建的這個(gè)軟件庫(kù)(https://github.com/dmikusa-pivotal/cf-ex-worpress)中可供使用。想安裝它,你只要克隆軟件庫(kù),它不是非常龐大;在你的Cloud Foundry實(shí)例中創(chuàng)建一項(xiàng)MySQL服務(wù),在本地機(jī)器上編輯清單文件和配置文件;以及用cf push命令推送應(yīng)用程序。在編輯之前,manifest.yml文件看起來(lái)像這樣:
--- applications: - name: mywordpress memory: 128M instances: 1 host: mywordpress domain: cfapps.io path: . buildpack: https://github.com/dmikusa-pivotal/cf-php-build-pack.git services: - mysql-db正如你所猜,清單文件中的buildpack(構(gòu)建包)這行引用了PHP的Git軟件庫(kù)和Apache構(gòu)建包。
Cloud Foundry使用NATS完成其環(huán)境各部分之間的消息傳遞,NATS是一種輕型的、分布式的發(fā)布/訂閱消息傳遞系統(tǒng),用Ruby編寫而成。
Cloud Foundry服務(wù)API定義了云控制器與服務(wù)代理之間的契約。代理需要在URI前綴下面實(shí)施幾個(gè)HTTP(或HTTPS)端點(diǎn),它可能實(shí)現(xiàn)了負(fù)載均衡機(jī)制。用戶提供的服務(wù)實(shí)例是一種機(jī)制,它為在Cloud Foundry外面預(yù)先配置的服務(wù)實(shí)例(比如甲骨文集群)向應(yīng)用程序提供了憑據(jù)。
Pivotal有一款大數(shù)據(jù)產(chǎn)品Pivotal HD,它與Pivotal CF整合起來(lái)。該產(chǎn)品包括Hadoop、Pivotal面向Hadoop的HAWK SQL查詢引擎、GemFire XD分析平臺(tái)以及Spring for Apache Hadoop Java框架。Pivotal大數(shù)據(jù)套件是一款企業(yè)數(shù)據(jù)倉(cāng)庫(kù)產(chǎn)品,包括不受限制的Pivotal HD。
Pivotal Web服務(wù)市場(chǎng)中的服務(wù)通常采用多種多樣的方案,從免費(fèi)到每月不低于100美元,不一而足。
據(jù)Pivotal聲稱,實(shí)際上,管理員定義HDFS和MapReduce實(shí)例組成的服務(wù)池,這些實(shí)例在Pivotal CF上從頭開始配置大概需要5分鐘。之后,開發(fā)人員或應(yīng)用程序可以向服務(wù)池請(qǐng)求實(shí)例,大概2秒后就能獲得實(shí)例,然后可以在后臺(tái)為資源池創(chuàng)建新的實(shí)例。被請(qǐng)求的實(shí)例不再需要時(shí),就可以將它釋放。
Pivotal還提供了與Pivotal CF和Pivotal HD都整合起來(lái)的Mobile Services Suite(移動(dòng)服務(wù)套件)。該套件匯集了七年的開發(fā)心血和從前年收購(gòu)的Xtreme Labs獲得的技術(shù)專長(zhǎng)。它說(shuō)白了就是在Pivotal的PaaS上的一種MBaaS(移動(dòng)后端即服務(wù)),整合范圍擴(kuò)大到了移動(dòng)應(yīng)用程序?qū)用妗?/p>
Cloud Foundry的安裝和使用
注冊(cè)Pivotal Web服務(wù)是個(gè)很輕松的過(guò)程。我使用開發(fā)者控制臺(tái)的過(guò)程中毫無(wú)問(wèn)題,下載和安裝cf命令行也只需要一兩分鐘。說(shuō)明文檔相當(dāng)清楚地闡明了用cf部署應(yīng)用程序所需要的幾個(gè)步驟。
如前所述,Micro Cloud Foundry VM還沒(méi)有更新到Cloud Foundry v2。雖然我發(fā)現(xiàn)有兩種方法可以將當(dāng)前的Cloud Foundry開源產(chǎn)品安裝到本地虛擬機(jī)上,但是每種方法都需要數(shù)個(gè)小時(shí)才能完成。對(duì)我來(lái)說(shuō),下載Stackato Micro Cloud VM(下載需要10分鐘),然后將它安裝到我MacBook Pro上的VMware Fusion(安裝需要2分鐘)要容易得多。我還安裝了Stackato命令行,這是cf的超集。事實(shí)表明,在瀏覽器中使用Stackato開發(fā)者控制臺(tái)非常類似使用Pivotal Web服務(wù)開發(fā)者控制臺(tái)。
除了目前缺少M(fèi)icro Cloud Foundry VM外(這有點(diǎn)煩人),Cloud Foundry的安裝和設(shè)置都非常簡(jiǎn)便。你需要的一切都可以下載;安裝過(guò)程一目了然。你只要花幾分鐘,就可以在網(wǎng)上或者在內(nèi)部從小處著手,逐步擴(kuò)大你的云環(huán)境;也可以花幾個(gè)小時(shí),在合適的虛擬機(jī)主機(jī)上安裝企業(yè)云。
對(duì)開發(fā)人員來(lái)說(shuō),從命令行、Eclipse、Spring Tools Suite、Maven或Gradle來(lái)部署droplet異常簡(jiǎn)單,只要你構(gòu)建了一個(gè)有效的清單文件,該文件里面含有任何必要的構(gòu)建包。Droplets和DEA管理起來(lái)簡(jiǎn)單直觀,不過(guò)我希望應(yīng)用程序的自動(dòng)擴(kuò)展能完全得到支持,而不是作為Pivotal CF中一項(xiàng)只針對(duì)大企業(yè)的測(cè)試特性。
Stackato Micro Cloud VM可用于VirtualBox、VMware Fusion、VMware vSphere和KVM,目前是將Cloud Foundry安裝到開發(fā)人員的桌面系統(tǒng)上的最快捷方式。在圖中,Stackato管理控制臺(tái)在Stackato Micro Cloud窗口后面運(yùn)行。
管理Cloud Foundry云并不難,但BOSH是個(gè)功能強(qiáng)大的復(fù)雜工具,學(xué)起來(lái)并非易事。如果管理員熟悉Puppet及其他流行的配置管理和編排工具,那么學(xué)用BOSH不會(huì)有任何問(wèn)題,但他們需要一點(diǎn)時(shí)間才能上手。
總的來(lái)說(shuō),Cloud Foundry是一款功能強(qiáng)大的PaaS,除了開源版本外,還有Pivotal的兩種專有版本:在線版的Pivotal Web服務(wù),以及內(nèi)部部署版的Pivotal CF。雖然我沒(méi)有測(cè)評(píng)過(guò)基金會(huì)成員提供的所有基于Cloud Foundry的專有PaaS解決方案,但測(cè)評(píng)過(guò)ActiveState的Stackato后發(fā)現(xiàn),它簡(jiǎn)化了還沒(méi)有固化到開源版本中的幾個(gè)方面,因云管理和語(yǔ)言支持而增添了價(jià)值。
[page]Cloud Foundry簡(jiǎn)介
優(yōu)點(diǎn)
擁有和支持一大批的語(yǔ)言、Web框架和數(shù)據(jù)庫(kù)為開發(fā)人員和云運(yùn)營(yíng)商提供了簡(jiǎn)易、快速的自助式部署 應(yīng)用程序容器、服務(wù)、節(jié)點(diǎn)的健康狀況都受到監(jiān)控,要是未處于預(yù)期狀態(tài),就會(huì)自動(dòng)重啟大數(shù)據(jù)和移動(dòng)服務(wù)在PaaS中得到支持可以從命令行、Eclipse、Spring Tools Suite、Maven和Gradle來(lái)部署缺點(diǎn)
自動(dòng)橫向擴(kuò)展仍處于測(cè)試階段另一種基于Cloud Foundry的PaaS:ActiveState的Stackato卻早已擁有該功能。還沒(méi)有可以下載的“micro”VM for Cloud Foundry v2,但你可以下載Stackato Micro,或者使用兩個(gè)CloudFoundry安裝工具中的一個(gè),將Cloud Foundry安裝到本地虛擬機(jī)中。僅限于在Ubuntu Linux上運(yùn)行的應(yīng)用程序,除非你使用Uhuru Windows版本的Cloud Foundry,我們還未對(duì)它測(cè)評(píng)。平臺(tái)
VMware vSphere、OpenStack、亞馬遜網(wǎng)絡(luò)服務(wù)和谷歌云平臺(tái)