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