用一個(gè)故事來(lái)說(shuō)OpenStack的架構(gòu)
【編者按】
OpenStack是眼前最熱門(mén)的開(kāi)源云平臺(tái)。到底什么是OpenStack?你對(duì)它的架構(gòu)真的理解嗎?如果不,那就讓我們一起通過(guò)這個(gè)故事來(lái)學(xué)習(xí)。主角是一個(gè)想賺錢(qián)的管理員,我們的故事從這兒開(kāi)始……
故事設(shè)定
主角是一個(gè)想賺錢(qián)的管理員。
他的手里有著大量的物理計(jì)算資源,無(wú)限多的服務(wù)器啊,無(wú)限多的電力什么的,無(wú)限多的硬盤(pán)空間,無(wú)限大的帶寬啊什么的(勿吐槽,反正一切是腦洞大開(kāi),不如讓他無(wú)限大,文章的不嚴(yán)謹(jǐn)之處,還請(qǐng)諒解),而且這位管理員在計(jì)算機(jī)領(lǐng)域無(wú)所不能,寫(xiě)程序分分鐘出貨balabala,反正就是屬性很牛逼就對(duì)了。
另外,這個(gè)管理員比較懶,什么東西都想以最少的操作去完成,但這個(gè)管理員寫(xiě)起來(lái)程序,無(wú)視一切….
我們的故事開(kāi)始了
故事從這位管理員說(shuō)起,管理員先森想著,我放著這么多的刁B玩意,不賺點(diǎn)錢(qián)對(duì)不起自己啊,然管理員正好看到當(dāng)前火熱的虛擬機(jī)技術(shù),想著,我這么多的玩意,如果直接把整機(jī)租出去,賺的錢(qián)太少,不如把這些服務(wù)器拿來(lái)跑虛擬機(jī),然后給客戶(hù)出租虛擬機(jī),這樣管理員先僧就能賺大把大把的錢(qián)了,然后出任CEO,贏取白富美,走向事業(yè)巔峰,咩哈哈哈~~~~
話說(shuō)管理員君開(kāi)始忙活了,這么多的服務(wù)器,要重新編寫(xiě)操作系統(tǒng)太過(guò)麻煩了,不如拿著現(xiàn)成的操作系統(tǒng)用的實(shí)在,于是管理員在認(rèn)證查看了當(dāng)今世界上的操作系統(tǒng)之后,覺(jué)得Linux操作系統(tǒng)定當(dāng)能擔(dān)此大任,于是這位管理員君開(kāi)始化身為程序猿,去構(gòu)造心中的夢(mèng)想….
管理員童鞋首先想了一下,我這么刁逼的東西,那先得有個(gè)刁逼的名字啊,反正這東西我也不指望他能給我賺錢(qián),那肯定是要開(kāi)源的啊,那就這樣吧,叫個(gè)OpenStack挺不錯(cuò)的
好了,項(xiàng)目的名字有了,接下來(lái)我要跑虛擬機(jī)對(duì)外出租賺錢(qián)是吧,那創(chuàng)建虛擬機(jī)不是誰(shuí)都TM能創(chuàng)建的啊,這活只有我TM能創(chuàng)建啊,但是如果有一天有人接手了我的這些,那他也要能創(chuàng)建啊,那么以后如果越來(lái)越多的人去使用和管理,我TM總不能每次都把root賬號(hào)密碼給他們吧,所以這時(shí)候?qū)τ诠芾韱T來(lái)說(shuō),有一個(gè)新的需求,就是要讓電腦知道誰(shuí)有權(quán)利去使用這個(gè)機(jī)器的一切
于是管理員君開(kāi)始廢寢忘食的編寫(xiě)程序,立志做出來(lái)一套牛逼的身份認(rèn)證管理系統(tǒng),在數(shù)天之后(勿吐槽時(shí)間),管理員君終于把這個(gè)刁逼的身份認(rèn)證系統(tǒng)做完了,做完了吧,總得有個(gè)名字吧,腦洞大開(kāi),就TM叫Keystone吧,于是,我們的OpenStack的第一個(gè)組件,Keystone就有了
接下來(lái),管理員讓服務(wù)器自己去鑒別使用者的身份,這下方便壞了,只要小小的配置一下,服務(wù)器君就能立馬知道使用者上三代下三代的信息,連隔壁老王家的那條狗在外面勾搭了幾個(gè)小母狗都TM知道了,真是刁逼壞了啊..
然后管理員開(kāi)始先試用市面上的虛擬機(jī)程序,用了幾家之后都感覺(jué)不錯(cuò),唯一缺點(diǎn)就是每次創(chuàng)建了虛擬機(jī)之后都得安裝操作系統(tǒng),真特么麻煩啊,為毛不能創(chuàng)建之后就直接帶上操作系統(tǒng)呢,這時(shí)候問(wèn)題來(lái)了,市面上操作系統(tǒng)辣么多,而又不知道客戶(hù)到底喜歡用哪一個(gè)。
這時(shí)候,管理員君就在想了,我特么弄個(gè)程序,讓他專(zhuān)門(mén)去管理鏡像,我特遣吧各種操作系統(tǒng)的鏡像弄好,這樣我未來(lái)創(chuàng)建我自己的虛擬機(jī)的時(shí)候創(chuàng)建完就可以直接有操作系統(tǒng)了,再也不用TMD創(chuàng)建一次安裝一次了,真特么爽,現(xiàn)在這個(gè)鏡像管理程序有了,那總得有個(gè)屌炸天的名字,那不如這樣,就叫個(gè)Glance吧,聽(tīng)起來(lái)就刁刁的。
管理員君做完了Keystone和Glance之后,心想,現(xiàn)在世界上人家的虛擬機(jī)軟件特么又是要錢(qián)的, 還沒(méi)有源代碼,對(duì)我這種崇尚開(kāi)源精神的人來(lái)說(shuō)怎么能忍!!!絕壁不能忍啊,心一熱,我TM不日自己開(kāi)發(fā)一個(gè),剛好和我做的叼逼玩意對(duì)應(yīng)起來(lái),于是管理員君此時(shí)程序猿附身,吃了一箱方便面的時(shí)間里就寫(xiě)出來(lái)了一個(gè)刁逼的虛擬機(jī)軟件,可以創(chuàng)建虛擬機(jī)啊,復(fù)制虛擬機(jī)啊,創(chuàng)建快照啊什么刁逼功能都有,在考察了當(dāng)今世界上現(xiàn)有的功能之后,自己又獨(dú)創(chuàng)了XXOO個(gè)功能,真是掉的不要不要的。
此時(shí)天空一道炸雷,仿佛在慶生一般,管理員心想,傳說(shuō)當(dāng)大地上出現(xiàn)非等閑之物事,天空都有異象,想來(lái)我這刁逼玩意也非等閑之物啊,此物只因天上有,人間難得幾回聞啊,這么屌炸天的東西沒(méi)有個(gè)夠格的名字怎么能忍,管理員腦洞打開(kāi),思來(lái)想去,日不能食,夜不能寐,又是一箱方便面的日子過(guò)去了,管理員終于想出了一個(gè)自己覺(jué)得不能更屌的名字了,就叫他Nova吧
好了, 到現(xiàn)在,管理員滿(mǎn)意度看著自己的服務(wù)器上跑著自己一手打造的虛擬機(jī)軟件,虛擬機(jī)運(yùn)行著自己打造的+12的定制版XX系統(tǒng),心滿(mǎn)意足的睡了,臥槽TM睡了!!!!
#p#
話說(shuō)管理員這一覺(jué)不睡則以,一睡睡了兩箱方便面的功夫,某天管理員君心血來(lái)草,想用自己的虛擬機(jī)去打一會(huì)WOW刷個(gè)本什么的,這才發(fā)現(xiàn)我TM虛擬機(jī)不能上網(wǎng)我屮艸芔茻,這尼瑪虛擬機(jī)我TM看不見(jiàn)摸不著,想給菊花捅個(gè)網(wǎng)線都沒(méi)辦法,這尼瑪能忍么,不能忍!!
管理員心想,我TM物理機(jī)要上網(wǎng),一根網(wǎng)線捅到路由器/交換機(jī)就行了, 這TM虛擬機(jī)沒(méi)有路由器交換機(jī),捅個(gè)P啊,既然電腦都能虛擬了,我TM吧你路由器交換機(jī),順帶防火墻一起虛擬了,這樣我TM就能打WOW了。
于是管理員君不吃不喝,又是一箱方便面的時(shí)間,管理員君成功的做出來(lái)了針對(duì)自己虛擬機(jī)專(zhuān)用的虛擬網(wǎng)絡(luò)管理程序,為了配合Nova這么高大上的名字,這牛逼的虛擬網(wǎng)絡(luò)管理程序就叫Neutron吧(這TM哪里配合了)
故事到了現(xiàn)在,管理員終于能吧自己的叼逼玩意給客戶(hù)租出去賺錢(qián)了,這么刁逼的玩意,一推出,就轟動(dòng)了世界,好多人都找管理員租用他的虛擬機(jī)跑業(yè)務(wù),管理員在處理大量客戶(hù)的租用請(qǐng)求的時(shí)候十分操蛋。為啥嘞,因?yàn)楣芾韱T當(dāng)時(shí)設(shè)計(jì)程序的時(shí)候就是在linux下設(shè)計(jì)的,設(shè)計(jì)出來(lái)的程序當(dāng)然只提供了命令行的操作方式,每次創(chuàng)建虛擬機(jī),管理員都得敲好多命令,一開(kāi)始管理員是寫(xiě)了一個(gè)bash腳本來(lái)處理這個(gè)事情,但是畢竟扛不住用戶(hù)的各種各樣的變態(tài)的修去,終于有一天,管理員爆發(fā)了!!!!
我TM為了創(chuàng)個(gè)虛擬機(jī)都TM累壞了,臉都黃了,人也瘦了,方便面也吃不下去了,這樣下去還能有女票么,這不行,我得設(shè)計(jì)一個(gè)功能強(qiáng)大,管理方便,XXOO的管理面板,而且我還要能在不同的設(shè)備上去管理,給每個(gè)設(shè)備設(shè)計(jì)單一的程序太麻煩,不如就直接做成網(wǎng)站的形式,基于WEB做這玩意吧。
管理員同志又開(kāi)始設(shè)計(jì)程序了,一說(shuō)設(shè)計(jì),這牙也不疼了,胃口也好了,方便面也能一次吃?xún)赏傲?,一口氣上五樓也不費(fèi)勁了。
又是一箱方便面的時(shí)間,管理員總算是把這個(gè)功能強(qiáng)大的管理面板做出來(lái)的,把自己之前弄的什么Glance啊,Nova啊,Neutron啊的所有功能都扔上去,現(xiàn)在方便壞了,我TM點(diǎn)點(diǎn)鼠標(biāo)就能創(chuàng)建虛擬機(jī),一個(gè)虛擬機(jī)分分鐘就創(chuàng)建完了,再也不用面對(duì)黑乎乎的命令行了,整個(gè)人神清氣爽,好了, 東西出來(lái)了, 同樣得有個(gè)刁逼的名字,那就這樣吧,叫個(gè)Horizon也是蠻吊的啊,跟前面的也挺配的啊(配個(gè)P啊!!!)
現(xiàn)在管理員終于能躺著賺錢(qián)了,這樣的日子過(guò)去了一天又一天,管理員君天天數(shù)著鈔票玩,玩的不亦樂(lè)乎啊。
突然有一天,有一位客戶(hù)反映,我們租用你的服務(wù)器存放了一些公司的重要數(shù)據(jù),但是現(xiàn)在租的服務(wù)硬盤(pán)快滿(mǎn)了,管理員君能不能給我們加個(gè)硬盤(pán)啊
加個(gè)P啊,管理員君當(dāng)時(shí)做的時(shí)候沒(méi)想著硬盤(pán)不夠了怎么辦的問(wèn)題,這尼瑪現(xiàn)在手握一大堆硬盤(pán)我特么怎么往虛擬機(jī)上加,加NMB加,但是俗話說(shuō),顧客就是上帝,上帝既然有需求,這服務(wù)上帝的管理員君不得拼了命的去完成?
于是,新的一輪編寫(xiě)程序開(kāi)始了,主要目標(biāo)就是能在虛擬機(jī)上加新的硬盤(pán),而這個(gè)加的硬盤(pán)也是虛擬出來(lái)的,反正TM把能虛擬的都虛擬完了就對(duì)了。
又是一箱方便面的時(shí)間過(guò)去了,管理員為了補(bǔ)當(dāng)年的漏洞,又重新寫(xiě)了一個(gè)功能略叼的玩意,他可以把整個(gè)硬盤(pán)/陣列作為虛擬盤(pán)的存放地,能創(chuàng)建任意大小的虛擬硬盤(pán),還可以把這個(gè)硬盤(pán)直接掛載到某個(gè)虛擬機(jī)上,同時(shí)也做了Horizon的web菜單,點(diǎn)點(diǎn)鼠標(biāo)就能加硬盤(pán),真是方便壞了啊,這么牛逼的東西不得有個(gè)名字?思來(lái)想去,還是叫個(gè)Cinder比較好聽(tīng)(好聽(tīng)個(gè)P啊!!!)
好了,現(xiàn)在總算是把客戶(hù)的問(wèn)題都解決了, 伸個(gè)懶腰,睡個(gè)懶覺(jué), 豈不快哉,咩哈哈哈~~~
話說(shuō)到管理員正在閉關(guān),呃…..睡覺(jué),忽然被客戶(hù)的電話吵醒,CNM的客戶(hù),P事就多得很啊,心里雖然這么想,但是還是吧電話接了:喂狗日的,噢不,親愛(ài)的客戶(hù),怎么了?
客戶(hù)說(shuō),他們公司目前有大量的文件需要找個(gè)地方存放,公司內(nèi)部沒(méi)有這么大的空間,聽(tīng)說(shuō)你們這里的IT環(huán)境各種不錯(cuò),想在你這里租用一些空間來(lái)放文件,但是不要虛擬機(jī),只要能上傳/下載/管理文件就行了,
管理員回到:木問(wèn)題啦,包在我森上啦,小小斯啦..
新的需求又來(lái)了,管理員一邊罵著娘一般開(kāi)始想這事情,我TM現(xiàn)在要想存文件,就TM得要虛擬機(jī)啊,狗日的客戶(hù)又TM不要虛擬機(jī),簡(jiǎn)直坑我(die)啊。。要是給Cinder添加這個(gè)功能無(wú)異于重新編寫(xiě)一次Cinder,殺了我算求…
話雖這么說(shuō),管理員君還是覺(jué)得,與其重寫(xiě)Cinder不如新加一個(gè)組件,讓它實(shí)現(xiàn)這個(gè)功能不就結(jié)了
又是N個(gè)不眠夜,又是一箱的泡面,管理員君終于按照客戶(hù)需求設(shè)計(jì)出了這么一個(gè)程序,可以存取文件,也只能存取文件的一個(gè)東東,同時(shí)管理員君設(shè)計(jì)了這逼玩意在Horizon中的菜單,,同時(shí)又做了一個(gè)網(wǎng)站,專(zhuān)門(mén)提供這B玩意的文件管理功能,這回管理員想的也多了,光有web不高端大氣上檔次,于是一股腦把各種平臺(tái)的各種端都做好了(實(shí)際上的OpenStack并沒(méi)有各種客戶(hù)端,客戶(hù)端都是使用著自己?jiǎn)为?dú)開(kāi)發(fā)的),往出一拿,瞬間好評(píng)爆棚,各種強(qiáng)頂贊,勸都勸不住啊,這么高大上的東西,這么受歡迎的玩意,得起一個(gè)配得上這玩意的名字,那啥,最近蘋(píng)果不是新出了一個(gè)Swift語(yǔ)言么,我看著名字挺不錯(cuò),那就叫Swift吧(實(shí)際上這倆重名是個(gè)意外,毫無(wú)關(guān)聯(lián)的意外)
到了現(xiàn)在,客戶(hù)的各種有理無(wú)理的需求都TM滿(mǎn)足了,管理員也想不出哪里還能再做點(diǎn)什么(明明是不想做了啊喂),管理員也能安心的賺錢(qián)把妹紙了(最后才是主要目的啊喂),管理員君到了現(xiàn)在吃泡面也感覺(jué)萌萌噠了。
故事到這里就算是完了,但是OpenStack的架構(gòu)遠(yuǎn)不止此。。。
讓我們梳理下架構(gòu)
- Keystone提供了身份認(rèn)證管理,所以叫身份認(rèn)證組件,放置Keystone的服務(wù)器我們可以稱(chēng)之為認(rèn)證節(jié)點(diǎn)
- Glance提供了鏡像管理,所以叫鏡像管理組件,放置Glance的服務(wù)器我們可以稱(chēng)之為鏡像節(jié)點(diǎn)
- Nova讓虛擬機(jī)跑起來(lái)了,官方話是提供了計(jì)算服務(wù),所以叫計(jì)算組件,放置Nova的服務(wù)器我們可以稱(chēng)之為計(jì)算節(jié)點(diǎn)
- Neutron能讓虛擬機(jī)上網(wǎng),所以叫網(wǎng)絡(luò)管理組件,放置Neutron的服務(wù)器我們可以稱(chēng)之為網(wǎng)絡(luò)節(jié)點(diǎn)
- Horizon提供了一個(gè)基于Web的管理控制臺(tái),所以就直接叫控制節(jié)點(diǎn)
- Cinder創(chuàng)建了虛擬硬盤(pán),而硬盤(pán)存儲(chǔ)數(shù)據(jù)是以塊作為單位存儲(chǔ)的(在linux中),所以叫塊存儲(chǔ)組件,放置Cinder的服務(wù)器我們可以稱(chēng)之為塊存儲(chǔ)節(jié)點(diǎn)
- Swift能讓文件直接存在云端,在計(jì)算機(jī)行業(yè)里,文件是對(duì)象的一種,所以叫對(duì)象存儲(chǔ)組件,放置Swift的服務(wù)器我們可以稱(chēng)之為對(duì)象存儲(chǔ)節(jié)點(diǎn)
- 這些組件可以單獨(dú)的放置在一臺(tái)服務(wù)器上,也可以把其中的幾個(gè)放置在一個(gè)服務(wù)器上
- 通常做法是把Keystone Glance Horizon放置在一臺(tái)服務(wù)器上稱(chēng)為控制節(jié)點(diǎn)
- 把Nova單獨(dú)放置稱(chēng)為計(jì)算節(jié)點(diǎn)
- 把Neutron單獨(dú)放置稱(chēng)為網(wǎng)絡(luò)節(jié)點(diǎn)
- 把Cinder和Swift放置在一起稱(chēng)為存儲(chǔ)節(jié)點(diǎn)
全文完,感謝閱讀
原文鏈接:http://blog.l1n3.net/cloud/openstack/the_story_about_openstack_framework/