Cloud Foundry是業(yè)界第一個開源PaaS云平臺,它提供給開發(fā)者自由的去選擇云平臺、開發(fā)框架和應(yīng)用服務(wù)。它支持多種框架、語言、運行時環(huán)境、云平臺及應(yīng)用服務(wù),使開發(fā)人員能夠在幾秒鐘內(nèi)進行應(yīng)用程序的部署和擴展,無需擔(dān)心任何基礎(chǔ)架構(gòu)的問題。
Cloud Foundry讓開發(fā)人員專注于編寫應(yīng)用程序,而無需為中間件和基礎(chǔ)設(shè)施分心。在使用自助式高生產(chǎn)力的框架和應(yīng)用服務(wù)的同時,開發(fā)人員可以快速在自己的環(huán)境上開發(fā)和測試自己的下一代應(yīng)用,并能部署到云上而無需做任何更改。
參考
Cloud Foundry的特點主要有以下幾點:
1.支持公共,私有和混合云上部署。Cloud Foundry支持眾多在私有或者公有基礎(chǔ)設(shè)施上運行的合作伙伴的云平臺,包括vSphere /vCloud,AWS,OpenStak,Rackspace,Ubuntu等;還包括CloudFoundry.com;Micro Cloud Foundry是業(yè)界第一個可以部署到開發(fā)者筆記本上運行的PaaS平臺。
2.支持業(yè)界標準框架。這些框架包括Spring for Java,Ruby on Rails和Sinatra,Node.js,Grails,Scala on Lift以及更多合作伙伴提供的框架(例如Python, PHP)。
3.支持應(yīng)用服務(wù)。這些應(yīng)用服務(wù)包括RabbitMQ,來自VMware的vFabric PostgreSQL,MySQL,MongoDB和Redis,以及更多來自第三方和開源社區(qū)的應(yīng)用服務(wù)。
4.架構(gòu)可擴展??梢允归_發(fā)人員和架構(gòu)師前瞻性的驗證他們的組織架構(gòu)是否適應(yīng)快速的云創(chuàng)新。
5.開源項目社區(qū)。社區(qū)內(nèi)允許任何開發(fā)者訪問,評估,和貢獻,這包括集成其他框架,增加應(yīng)用服務(wù)和部署應(yīng)用到其它基礎(chǔ)設(shè)施云。
概念:
buildpack:即構(gòu)建包,為應(yīng)用提供framework和runtime,如binary、go、java、php、ruby、pythond等。
manifest:cf push部署應(yīng)用時會用默認的實例數(shù)、硬盤空間限制和內(nèi)存限制。若你想用指定的配置來覆蓋默認配置,可將鍵值對存放于manifest文件。
org:賦予開發(fā)賬號不同的權(quán)限
space:應(yīng)用和服務(wù)運行的特定空間,org可包含多個space
user account:一個org中的用戶賬號對不同的space擁有不同的訪問權(quán)限
quta plan:即memory、service和instance使用配額
domain:每個cloud foundry實例都有一個默認域,從域創(chuàng)建的任何請求將被路由到cf的負載均衡IP地址
route:CF gorouter通過將應(yīng)用和地址相關(guān)聯(lián)來路由請求,即映射??捎胏f routes查看
services:cloud foundry提供一個服務(wù)市場,cf marketplace查看,這里可將service看做提供服務(wù)實例的工廠
Application Security Groups(ASGs):應(yīng)用安全組,相當于防火墻,對特定協(xié)議、端口、IP范圍做的出口規(guī)則

圖中組件:
Router: 對request進行路由并負載均衡,定期查詢diego bbs以確定應(yīng)用當前運行的vm,根據(jù)其IP和端口做路由
UAA:登錄服務(wù)器身份認證
Cloud Controller控制應(yīng)用和進程運行于VMs,根據(jù)需求管理應(yīng)用的生命周期
cloud controller and diego brain: cc通過cc-bridge指導(dǎo)diego brain應(yīng)用部署,維護orgs/space/user roles/services等的記錄
nsync,bbs,cell repo:三者一塊工作組成工作鏈,保證應(yīng)用可用:nsync從cloud controller接受擴展app的消息,將需求實例數(shù)存儲到diego bbs db;bbs用聚合進程監(jiān)控需求實例數(shù)和實際數(shù),通過kill或launch應(yīng)用實例讓二者匹配;cell rep監(jiān)控容器和實際實例數(shù)。
blobstore:二進制文件的倉庫,包括application code packages,buildpacks,droplets,現(xiàn)實中對應(yīng)阿里云的oss或aws的S3
diego cell:應(yīng)用實例、任務(wù)作為garden容器運行于diego dell vms。diego cell管理這些容器的生命周期,并上報運行之上的應(yīng)用狀態(tài)給Diego bbs,傳遞日志給loggregator。
service brokers: 服務(wù)代理,為服務(wù)實例提供代理,如database,第三方SaaS。
diego是一個自愈的容器管理系統(tǒng),保證運行任務(wù)和long-runging processes(LRP)于VM的數(shù)量來保障高可用。這里CF有兩個種類型的VM:一種是CF組件VM,一種是運行app的VM。
在CF上部署應(yīng)用時,diego處理流程
1,CC發(fā)送請求給BBS API
2,BBS聯(lián)系拍賣師基于LRP需求的資源創(chuàng)建拍賣,rep接受拍賣請求
3,rep根據(jù)請求,通過garden API創(chuàng)建container并運行task和LRP
4,converger定期析系統(tǒng)狀態(tài)的快照并糾正差異,確保實例數(shù)量和diego保持一致
5,容器上的metron agent實時發(fā)送task和LRP的日志給loggregator system,route-emmitter注冊LRP實例給Gorouter,以接收路由過來的外部訪問
Diego cell的組件
rep:保持Locket中cell的存在記錄
參與拍賣以接收task和LRP實例,創(chuàng)建容器并運行
對容器事件及時處理,確保bbs中的任務(wù)和Actual LRP與cell上實際存在的容器同步
針對cell上的資源約束管理容器分配
通過metron-agent定期收集日志并發(fā)送給Loggregator系統(tǒng)
garden:提供獨立于平臺的服務(wù)端和客戶端來管理容器,定義創(chuàng)建和管理容器的API
metron-agent:轉(zhuǎn)發(fā)應(yīng)用日志、錯誤和其他度量值給Loggregator
route-emitter:監(jiān)控需求LRP和實際LRP狀態(tài),定期發(fā)送路由注冊和注銷信息給Gorouter
diego brain:有所謂的拍賣師組成,根據(jù)拍賣算法分發(fā)task和LRP給diego cells,鎖定Locket以確保一次只有一個拍賣師處理拍賣,拍賣信息通過HTTPS在Auctioneer和cell reps之間發(fā)送,適時糾正實際和期望實例數(shù)量的差異,以確保容錯和一致性。
bbs:維護diego cluster的實時狀態(tài),確保Locket只有一個活動狀態(tài)的bbs,定期比對期望LRP和實際LRP并強制執(zhí)行保證一致;重發(fā)等待太長的拍賣請求和完成過長執(zhí)行的回調(diào)
cc-bridge:將CC的請求翻譯給bbs
Locket:提供抽象鎖和服務(wù)注冊,依賴后端SQL實現(xiàn)永久性,存在于database vm
tasks:有限時間內(nèi)運行一次
LRP:long Running Processes,持續(xù)運行無限時間,直到被stop or kill, or crash.
常用的cf命令
cf api 查看api url
cf login admin 登錄
cf login -a api_url --skip-ssl-validation
輸入用戶名,密碼 登錄
cf create-org testorg 創(chuàng)建org
cf org-users testspace 查看org對應(yīng)的用戶權(quán)限
cf create-space testspace 創(chuàng)建space
cf switch-space testspace 登錄到自己的space
cf target -s testspace 進入空間
cf create-user cdc 123456 創(chuàng)建空間用戶
cf set-space-role cdc testorg testspace SpaceDeveloper
cf push myapp 在testspace發(fā)布應(yīng)用
cf apps查看應(yīng)用
cf app myapp查看應(yīng)用詳細信息
cf env myapp查看應(yīng)用事件
cf logs myapp --recent 查看應(yīng)用日志
cf delete myapp -f 強制刪除應(yīng)用
cf restart msapp 關(guān)閉應(yīng)用,刷新環(huán)境設(shè)置后啟應(yīng)用
cf restage myapp 關(guān)閉應(yīng)用,重新編譯構(gòu)建droplet后啟動
cf services 查看服務(wù)
cf routes 查看路由
cf domains 查看域名
cf spaces 查看空間
cf orgs 查看org
cf部署應(yīng)用流程:
1,上傳和存儲應(yīng)用文件
2,檢查并存儲應(yīng)用元數(shù)據(jù)
3,為應(yīng)用程序創(chuàng)建"droplet"(CF的執(zhí)行單元)
4,選擇合適的Diego cell來運行droplet
5,啟動應(yīng)用程序
droplet就是一個包,包含stack、buildpack、app source code。diego cell解壓droplet包后編譯,隨即運行droplet于容器
轉(zhuǎn)載于:https://my.oschina.net/u/2404183/blog/3047287
文章知識點與官方知識檔案匹配,可進一步學(xué)習(xí)相關(guān)知識