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























