深度剖析CloudFoundry的架構設計(3) |
發布時間: 2012/7/22 16:06:47 |
下圖是DEA模塊的架構圖: Cloud Controller模塊(下面會介紹)會發送start/stop等基本的apps管理請求給DEA,dea.rb接收這些請求,然后從NFS里面找到合適的Droplet。前面說到Droplet其實是一個帶有運行腳本的,帶運行環境的tar包,DEA只需要把它拿過來解壓,并即行里面的start腳本,就可以讓這個app跑起來。到此,app算是可以訪問,并start起來了,換句話說就是有這臺服務器的某一個端口已經在待命,只要有request從這個端口進來,這個app就可以接收并返回正確的信息。 接著dea.rb要做些善后的工作:1、把這個信息告訴Router模塊。我們前面說到,所有進入CloudFoundry的requests都是由Router模塊處理并轉發的,包括用戶對app的訪問request,一個app起來后,需要告訴router,讓它根據loadbalance等原則,把合適的request轉進來,使這個app的instance能夠干起活;2、一些統計性的工作,例如要把這個用戶又新部署了一個app告訴CloudController,以作quota控制等;3、把運行信息告訴HealthManager模塊,實時報告該app的instance運行情況。另外DEA還要負責部份對Droplet的查詢工作,譬如,如果用戶通過CloudController想查詢一個app的log信息,那DEA需要從該Droplet里面取到log返回等等。 3、CloudController:CloudController是CloudFoundry的管理模塊。主要工作包括: a) 對apps的增刪改讀; b) 啟動、停止應用程序; c) Staging apps(把apps打包成一個droplet); d) 修改應用程序運行環境,包括instance、mem等等; e) 管理service,包括service與app的綁定等; f) Cloud環境的管理; g) 修改Cloud的用戶信息; h) 查看Cloud Foundry,以及每一個app的log信息。 這似乎有點復雜,但簡單的說,可以很簡單:就是與VMC和STS交互的服務器端。VMC和STS與CloudFoundry通信采用的是restful接口,另一方面CloudController是一個典型的Rubyon Rails項目,從VMC或者STS接到JSON格式的協議,然后寫入CloudController Database,并發消息到各模快去控制管理整個云。和其他ROR項目一樣,CloudController的所有API可以從conf/routes.rb里看到。開放的Restful接口好處在于第三方應用開發和集成,企業在用CloudFoundry部署私有云的時候,可以通過這些接口來自動化控制管理整個Cloud環境。這部份內容將在第二部份論述。億恩科技石頭 負責服務器租用和托管業務 本文出自:億恩科技【www.vbseamall.com】 |