深度剖析CloudFoundry的架構(gòu)設(shè)計(jì)(3) |
發(fā)布時(shí)間: 2012/7/22 16:06:47 |
下圖是DEA模塊的架構(gòu)圖: Cloud Controller模塊(下面會(huì)介紹)會(huì)發(fā)送start/stop等基本的apps管理請(qǐng)求給DEA,dea.rb接收這些請(qǐng)求,然后從NFS里面找到合適的Droplet。前面說(shuō)到Droplet其實(shí)是一個(gè)帶有運(yùn)行腳本的,帶運(yùn)行環(huán)境的tar包,DEA只需要把它拿過(guò)來(lái)解壓,并即行里面的start腳本,就可以讓這個(gè)app跑起來(lái)。到此,app算是可以訪問(wèn),并start起來(lái)了,換句話(huà)說(shuō)就是有這臺(tái)服務(wù)器的某一個(gè)端口已經(jīng)在待命,只要有request從這個(gè)端口進(jìn)來(lái),這個(gè)app就可以接收并返回正確的信息。 接著dea.rb要做些善后的工作:1、把這個(gè)信息告訴Router模塊。我們前面說(shuō)到,所有進(jìn)入CloudFoundry的requests都是由Router模塊處理并轉(zhuǎn)發(fā)的,包括用戶(hù)對(duì)app的訪問(wèn)request,一個(gè)app起來(lái)后,需要告訴router,讓它根據(jù)loadbalance等原則,把合適的request轉(zhuǎn)進(jìn)來(lái),使這個(gè)app的instance能夠干起活;2、一些統(tǒng)計(jì)性的工作,例如要把這個(gè)用戶(hù)又新部署了一個(gè)app告訴CloudController,以作quota控制等;3、把運(yùn)行信息告訴HealthManager模塊,實(shí)時(shí)報(bào)告該app的instance運(yùn)行情況。另外DEA還要負(fù)責(zé)部份對(duì)Droplet的查詢(xún)工作,譬如,如果用戶(hù)通過(guò)CloudController想查詢(xún)一個(gè)app的log信息,那DEA需要從該Droplet里面取到log返回等等。 3、CloudController:CloudController是CloudFoundry的管理模塊。主要工作包括: a) 對(duì)apps的增刪改讀; b) 啟動(dòng)、停止應(yīng)用程序; c) Staging apps(把a(bǔ)pps打包成一個(gè)droplet); d) 修改應(yīng)用程序運(yùn)行環(huán)境,包括instance、mem等等; e) 管理service,包括service與app的綁定等; f) Cloud環(huán)境的管理; g) 修改Cloud的用戶(hù)信息; h) 查看Cloud Foundry,以及每一個(gè)app的log信息。 這似乎有點(diǎn)復(fù)雜,但簡(jiǎn)單的說(shuō),可以很簡(jiǎn)單:就是與VMC和STS交互的服務(wù)器端。VMC和STS與CloudFoundry通信采用的是restful接口,另一方面CloudController是一個(gè)典型的Rubyon Rails項(xiàng)目,從VMC或者STS接到JSON格式的協(xié)議,然后寫(xiě)入CloudController Database,并發(fā)消息到各?烊タ刂乒芾碚麄(gè)云。和其他ROR項(xiàng)目一樣,CloudController的所有API可以從conf/routes.rb里看到。開(kāi)放的Restful接口好處在于第三方應(yīng)用開(kāi)發(fā)和集成,企業(yè)在用CloudFoundry部署私有云的時(shí)候,可以通過(guò)這些接口來(lái)自動(dòng)化控制管理整個(gè)Cloud環(huán)境。這部份內(nèi)容將在第二部份論述。億恩科技石頭 負(fù)責(zé)服務(wù)器租用和托管業(yè)務(wù) 本文出自:億恩科技【www.allwellnessguide.com】 服務(wù)器租用/服務(wù)器托管中國(guó)五強(qiáng)!虛擬主機(jī)域名注冊(cè)頂級(jí)提供商!15年品質(zhì)保障!--億恩科技[ENKJ.COM] |