CloudFoundry簡介

CloudFoundry是一個提供誇平臺、多語言應用框架的開源PaaS,可運行於私有云和公有云。php

組件:java

buildpack:即構建包,爲應用提供framework和runtime,如binary、go、java、php、ruby、pythond等。python

manifest:cf push部署應用時會用默認的實例數、硬盤空間限制和內存限制。若你想用指定的配置來覆蓋默認配置,可將鍵值對存放於manifest文件。算法

org:賦予開發帳號不一樣的權限後端

space:應用和服務運行的特定空間,org可包含多個spaceapi

user account:一個org中的用戶帳號對不一樣的space擁有不一樣的訪問權限安全

quta plan:即memory、service和instance使用配額ruby

domain:每一個cloud foundry實例都有一個默認域,從域建立的任何請求將被路由到cf的負載均衡IP地址服務器

route:CF gorouter經過將應用和地址相關聯來路由請求,即映射。可用cf routes查看併發

services:cloud foundry提供一個服務市場,cf marketplace查看,這裏可將service看作提供服務實例的工廠

Application Security Groups(ASGs):應用安全組,至關於防火牆,對特定協議、端口、IP範圍作的出口規則

Cloud Foundry結構圖

圖中組件:

Router: 對request進行路由並負載均衡,按期查詢diego bbs以肯定應用當前運行的vm,根據其IP和端口作路由

UAA:登陸服務器身份認證

Cloud Controller控制應用和進程運行於VMs,根據需求管理應用的生命週期

cloud controller and diego brain: cc經過cc-bridge指導diego brain應用部署,維護orgs/space/user roles/services等的記錄

nsync,bbs,cell repo:三者一塊工做組成工做鏈,保證應用可用:nsync從cloud controller接受擴展app的消息,將需求實例數存儲到diego bbs db;bbs用聚合進程監控需求實例數和實際數,經過kill或launch應用實例讓兩者匹配;cell rep監控容器和實際實例數。

blobstore:二進制文件的倉庫,包括application code packages,buildpacks,droplets,現實中對應阿里雲的oss或aws的S3

diego cell:應用實例、任務做爲garden容器運行於diego dell vms。diego cell管理這些容器的生命週期,並上報運行之上的應用狀態給Diego bbs,傳遞日誌給loggregator。

service brokers: 服務代理,爲服務實例提供代理,如database,第三方SaaS。

diego是一個自愈的容器管理系統,保證運行任務和long-runging processes(LRP)於VM的數量來保障高可用。這裏CF有兩個種類型的VM:一種是CF組件VM,一種是運行app的VM。

 

在CF上部署應用時,diego處理流程

1,CC發送請求給BBS API

2,BBS聯繫拍賣師基於LRP需求的資源建立拍賣,rep接受拍賣請求

3,rep根據請求,經過garden API建立container並運行task和LRP

4,converger按期分析系統狀態的快照並糾正差別,確保實例數量和diego保持一致

5,容器上的metron agent實時發送task和LRP的日誌給loggregator system,route-emmitter註冊LRP實例給Gorouter,以接收路由過來的外部訪問

 

Diego cell的組件

rep:保持Locket中cell的存在記錄

參與拍賣以接收task和LRP實例,建立容器並運行

對容器事件及時處理,確保bbs中的任務和Actual LRP與cell上實際存在的容器同步

針對cell上的資源約束管理容器分配

經過metron-agent按期收集日誌併發送給Loggregator系統

garden:提供獨立於平臺的服務端和客戶端來管理容器,定義建立和管理容器的API

metron-agent:轉發應用日誌、錯誤和其餘度量值給Loggregator

route-emitter:監控需求LRP和實際LRP狀態,按期發送路由註冊和註銷信息給Gorouter

 

diego brain:有所謂的拍賣師組成,根據拍賣算法分發task和LRP給diego cells,鎖定Locket以確保一次只有一個拍賣師處理拍賣,拍賣信息經過HTTPS在Auctioneer和cell reps之間發送,適時糾正實際和指望實例數量的差別,以確保容錯和一致性。

 

bbs:維護diego cluster的實時狀態,確保Locket只有一個活動狀態的bbs,按期比對指望LRP和實際LRP並強制執行保證一致;重發等待太長的拍賣請求和完成過長執行的回調

 

cc-bridge:將CC的請求翻譯給bbs

  • stager
    • 未來自雲CC的請求轉換爲通用任務和LRP
    • 任務完成後,向Cloud Controller發送響應
  • CC-Uploader
    • 協調從rep到CC的upload
    • 未來自Rep的簡單HTTP POST請求轉換爲cc的複雜多表單upload
  • Nsync Bulker
    • 按期輪詢每一個應用程序的CC,以確保Diego維持準確的指望LRP數量
  • Nsync Listener
    • 收聽應用請求
    • 更新和建立指望LRP數量並更新給BBS
  • TPS Listener
    • 爲CC提供有關當前正在運行的LRP響應cf apps和cf app APP_NAME請求的信息
  • TPS Watcher
    • 監控實際LRP的崩潰行爲並將其報告給CC

Locket:提供抽象鎖和服務註冊,依賴後端SQL實現永久性,存在於database vm

 

tasks:有限時間內運行一次

LRP:long Running Processes,持續運行無限時間,直到被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 建立org

cf org-users testspace 查看org對應的用戶權限

cf create-space testspace 建立space

 

cf switch-space testspace 登陸到本身的space

cf target -s testspace 進入空間

cf create-user cdc 123456 建立空間用戶

cf set-space-role cdc testorg testspace SpaceDeveloper

cf push myapp 在testspace發佈應用

cf apps查看應用

cf app myapp查看應用詳細信息

cf env myapp查看應用事件

cf logs myapp --recent 查看應用日誌

cf delete myapp -f 強制刪除應用

cf restart msapp 關閉應用,刷新環境設置後啓應用

cf restage myapp 關閉應用,從新編譯構建droplet後啓動

cf services 查看服務

cf routes 查看路由

cf domains 查看域名

cf spaces 查看空間

cf orgs 查看org

 

cf部署應用流程:

1,上傳和存儲應用文件

2,檢查並存儲應用元數據

3,爲應用程序建立"droplet"(CF的執行單元)

4,選擇合適的Diego cell來運行droplet

5,啓動應用程序

 

droplet就是一個包,包含stack、buildpack、app source code。diego cell解壓droplet包後編譯,隨即運行droplet於容器

相關文章
相關標籤/搜索