CloudFoundry 初識

官網:https://cloudfoundry.cn/

1. 定義

Cloud Foundry是業界第一個開源PaaS雲平臺,它支持多種框架、語言、運行時環境、雲平臺及應用服務,使開發人員能夠在幾秒鐘內進行應用程序的部署和擴展,無需擔心任何基礎架構的問題。

2.PaaS

PaaS,平臺即服務。是雲計算的一種服務形式。其實並不是一個非常新的概念,像GAE、SAE很早就提供了類似這樣的服務。不過在很長一段時間內,PaaS接受程度不高,在跟客戶談及雲計算時,普遍都認爲雲計算就是IaaS,即基礎設施服務。但是隨着雲計算的不斷髮展,用戶發現光有IaaS,雖然簡化了對基礎設施資源的管理,但是對雲計算的終端用戶來說通過IaaS只是拿到了一個裸操作系統,要想開發一個軟件並部署到雲平臺上,還需要做很多工作。包括代碼的管理、持續集成、自動化測試、交付物管理、應用託管、中間件服務、自動化運維、監控報警、日誌處理等等。用戶希望通過一個平臺能夠真正簡化開發、測試、部署、運維等工作,使得企業能夠真正實現DevOps。

3. CloudFoundary基本介紹

Cloud Foundry是一個工業級開源PaaS,它可以部署爲一個雲,並對外提供多語言多框架、應用運行環境及服務。CF的社區相對還是比較活躍的,並且版本迭代比較快,一般1,2周就會發佈一個小版本。而且CF在不斷的改進和優化自身的架構,到目前爲止已經經歷了CF V1,CF V2以及CF V3。每一次大版本的發佈都對CF進行了性能和架構上的優化。

4.Cloudfoundry架構及相關組件

1、 軟件路由和軟負載均衡

 

Haproxy、Gorouter:

Router將平臺流量分發給特定的組件,通常爲Cloud Controller,或者運行在DEA節點上的應用。

 

2、 認證和授權

 

UAA、Login Server:

UAA與Login Server主要提供用戶身份認證管理服務

 

3、 應用生命週期管理

 

Cloud Controller、Health Manager:

當開發者將一個應用push到cloud foundry後,Cloud Controller會存儲應用文件,在數據庫中創建應用的元數據記錄,並指派DEA節點來stage及運行應用。Cloud Controller同時還維護了組織、空間、服務、服務實例、用戶角色等記錄信息。

 

監控應用以確認其運行狀態(例如running\stopped\crashed等)、版本以及實例個數。HM9000根據運行應用的DEA返回的心跳(heartbeats)及droplet.exited消息來更新應用的實際運行狀態。

 

確認應用的期望運行狀態、版本及實例個數。HM9000從CCDB中獲取應用的期望運行狀態。

 

使應用的期望運行狀態和實際運行狀態一致。例如,如果實際運行的實例個數少於期望運行的實例個數,HM9000就會指示Cloud Controller啓動準確的應用實例個數。

 

指示Cloud Controller修復任何應用狀態的差異。

 

4、 應用存儲和運行

 

Blob Store、Dea:

DEA負責管理應用實例,跟蹤已啓動的應用實例,並廣播其運行狀態的消息。

 

Blob store保存了應用代碼、Buildpacks(應用依賴的runtime、web server、framework等的集合)以及Droplets(已完成stage的可直接在DEA上運行的應用包)。

 

5、 服務

 

Service Broker:

應用往往依賴於數據庫或第三方服務。

 

當開發者需要創建一個服務實例並將其與某個應用綁定,該服務的Service Broker負責提供這個服務實例。

 

例如應用需要使用MySQL數據庫服務,MySQL服務的Service Broker負責創建一個MySQL服務實例,並將該服務實例與應用綁定。

 

6、 消息

 

Nats:

Cloud Foundry使用NATS進行組件間的內部通信。

 

NATS是一種輕量級的、基於發佈-訂閱機制的分佈式隊列消息系統。

 

7、 日誌和監控數據

 

Metrics Collector、App Log Aggregator:

計量數據收集器從各組件收集計量數據。運維人員可以使用這些信息對整個Cloud Foundry平臺進行監控。

應用日誌彙集器(loggregator)可以將應用日誌輸出給開發者。

在Cloudfoundry平臺上,應用如何被部署運行的?

  1. 開發者切換到應用根目錄,使用命令行工具cf CLI提交“push”命令。

  2. Cf CLI告知Cloud Controller創建一條該應用的記錄。

  3. Cloud Controller將該應用的元數據存儲至CCDB(例如應用名、實例個數,以及指定的buildpack等信息)。

  4. Cf CLI將應用文件上傳至Cloud Controller。

  5. Cloud Controller將應用原始文件保存到blobstore中。

  6. Cf CLI提交應用“start”命令。

  7. 由於應用尚未stage,因此Cloud Controller會從DEA池中選擇一個DEA對應用進行stage,負責stage的DEA會根據buildpack中的指令對應用進行stage(stage過程主要是爲應用配置相關的語言runtime、web服務器、框架等,最終得到一個可以獨立運行的應用包droplet)。

  8. 負責stage 的DEA會將stage過程的日誌同步輸出至cf CLI,開發者可以據此定位stage錯誤。

  9. 負責stage 的DEA將已完成stage的應用打包成一個稱爲droplet的壓縮包,並將該droplet存儲至blobstore。

  10. 負責stage的DEA向Cloud Controller報告stage工作已完成。

  11. Cloud Controller根據應用配置從DEA池中選擇一個或多個DEA來運行已完成stage的應用(在DEA的warden容器中運行droplet)。

  12. 負責運行應用的DEA向Cloud Controller報告應用的運行狀態。

 

Buildpack:

 

Buildpacks爲應用提供框架及運行時支持。

 

Buildpacks通常會檢查用戶提供的應用代碼以確定需要下載哪些依賴,以及該如何配置應用使其能跟綁定的服務進行通信。

 

當你Push一個應用,Cloud Foundry會自動檢測(也可以在push時顯式指定)要使用哪個buildpack,並將其安裝至運行應用的DEA上。

 

 

表中所列爲Cloud Foundry system buildpack。

 

開發者可以通過以下方式使用上述所列之外的buildpack:

 

1. 改造已有的buildpack;

2. 自己編寫buildpack;

3. 使用Cloud Foundry社區提供的Buildpack;

4. 使用Heroku提供的第三方buildpack。

 

服務:

 

通過實現一組API被集成進Cloud Foundry 的服務稱爲受管理的服務。

 

用戶可以按需創建相應的服務實例,並獲取使用該服務實例的憑證。

ss

 

Service Broker標準APIs。

 

1. 獲取服務目錄

2. 創建服務實例

3. 綁定服務實例

4. 解綁服務實例

5. 刪除服務實例

 

References:

https://dbaplus.cn/news-72-232-1.html

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章