OpenStack發(fā)展的同時(shí)切勿重演Neutron
OpenStack有點(diǎn)像個(gè)早熟的孩子—— 開源數(shù)據(jù)中心管理(open-source data center management)和服務(wù)層(service layer)不斷地做一些了不起的事,而同時(shí)又讓人傷透腦筋。
這個(gè)開源云控制狂本周在香港召開峰會(huì)。我們來看一下OpenStack這個(gè)雄心勃勃的軟件的方方面面:
OpenStack于2010年中誕生,計(jì)算源碼是美國航空航天局捐的,而存儲(chǔ)源碼則是Rackspace捐的。
OpenStack是設(shè)計(jì)用來管理共有云和私有云的。很多公司認(rèn)為OpenStack有希望讓他們能擁有一些單一專有云的功能,一些如谷歌、亞馬遜及微軟經(jīng)營的云那樣的功能。
一路走來,有數(shù)百個(gè)公司對 OpenStack感興趣,其中包括英特爾、紅帽、AT&T、Brocade 和F5。OpenStack現(xiàn)在是一些公有云的基礎(chǔ),如惠普云和IBM即將面世的SoftLayer-revamp。
盡管很多人稱OpenStack是“云之Linux”,OpenStack技術(shù)到目前為止并沒有像Linux那樣在可用性和兼容性上達(dá)到人們的期望,不過正在迅速改善之中。
截止這個(gè)月,OpenStack的很多核心組件已達(dá)到可用水平,并可以在具規(guī)模的系統(tǒng)上應(yīng)用。不少人對OpenStack的Cinder塊存儲(chǔ)組件(Cinder block storage component)、Horizon網(wǎng)站前端(Horizon web front-end)和Keystone身份服務(wù)(Keystone identity service)稱贊不已。OpenStack的一些新功能也做得不錯(cuò),甲骨文公司在自己的云里用上了新的Swift object-cum-blob存儲(chǔ)。
但是,OpenStack技術(shù)在一個(gè)關(guān)鍵領(lǐng)域里碰到問題,它的Neutron網(wǎng)絡(luò)組件問題多多。這已經(jīng)引起OpenStack社區(qū)的關(guān)注,也有不少人私下在一些IRC(Internet Relay Chat“因特網(wǎng)中繼聊天”的縮寫)聊天室中就此問題大談特談。
這些挑戰(zhàn)的出現(xiàn)可以說是能夠預(yù)見的。因?yàn)楸M管開源在過去二十年強(qiáng)勁地攻占了儲(chǔ)存和計(jì)算系統(tǒng),網(wǎng)絡(luò)系統(tǒng)到目前為止卻仍然是專有供應(yīng)商的堅(jiān)固領(lǐng)地??梢钥吹?,這一塊變化不大,在這一塊的開源碼和開源專業(yè)人員也不多。

Neutron網(wǎng)絡(luò)噩夢
Neutron(中子)是所謂的“網(wǎng)絡(luò)即服務(wù)”("network-as-a-service")組件,以前名為Quantum(量子),2012年9月與Folsom系統(tǒng)版一起發(fā)布。名字引起Quantum公司的爭議,后來在最近的Havana 發(fā)布中改名為Neutron。
在IRC上的OpenStack網(wǎng)絡(luò)聊天室記錄中,記者看到OpenStack社區(qū)在Neutron里找到一些bug,并不得不在發(fā)布Havana 前急急忙忙地打上補(bǔ)丁。盡管這些bug已經(jīng)得到修補(bǔ),但其出現(xiàn)充分說明了要為規(guī)模達(dá)數(shù)千個(gè)服務(wù)器的一個(gè)系統(tǒng)開發(fā)穩(wěn)定的網(wǎng)絡(luò)組件是十分困難的。
Hernan Alvarez是Bluebox(OpenStack寄存公司) 的運(yùn)營與產(chǎn)品副總裁。他說:“如果你只待在Neutron的基礎(chǔ)應(yīng)用區(qū)內(nèi),不會(huì)有什么問題。但是一旦你想要更深入,就會(huì)相當(dāng)?shù)孛半U(xiǎn)。”
OpenStack公共電郵群里9月27號(hào)有個(gè)貼子詢問有沒有人在產(chǎn)品里使用Quantum或Neutron,至今尚未獲得任何公開答復(fù)。
發(fā)帖者特別提到Neutron技術(shù)上的幾個(gè)方面“不能盡如人意”,包括:不支持簡潔地拆解網(wǎng)絡(luò),更新子網(wǎng)困難,不支持多主機(jī)部署,“Neutron開發(fā)人員很少或沒有在IRC上提供技術(shù)支持”以及在網(wǎng)絡(luò)管理文件中出現(xiàn)的“部署上混亂和不切實(shí)際的假設(shè)”。
這名用戶寫道,“我們是由于Nova網(wǎng)有遭棄用的危險(xiǎn)才被迫考慮Neutron的。”
當(dāng)然,一個(gè)人的經(jīng)驗(yàn)明顯不能代表整體,有可能很多人在私底下玩Neutron并將其用在私有和秘密項(xiàng)目上。但是,貼子中提到的問題記者在過去幾個(gè)月里不止一次聽人說起過。

另外一個(gè)問題同時(shí)涉及到含計(jì)算網(wǎng)絡(luò)組件(Nova)和獨(dú)立發(fā)展網(wǎng)絡(luò)組件(Neutron),兩個(gè)組件里的單機(jī)和簡單網(wǎng)絡(luò)、IP地址分配、IP路由、NAT、DHCP和OpenStack元數(shù)據(jù)服務(wù)的源碼都處于一個(gè)單一的碼塊里,因而造成接口困難。另一方面,多主機(jī)格式里的服務(wù)分布在虛擬機(jī)管理程序里,會(huì)出現(xiàn)攻擊面過大的問題。
OpenStack專業(yè)公司CloudScaling的主管Randy Bias說,“從構(gòu)造上來說,如果因?yàn)镺penStack的默認(rèn)網(wǎng)絡(luò)模式在大規(guī)模使用時(shí)不給力而不得不在產(chǎn)品里使用默認(rèn)網(wǎng)絡(luò)模式,這真是最槽糕的事情。”
Neutron還在開發(fā)中。據(jù)我們所知,很多公司在努力提高此關(guān)鍵組件的穩(wěn)定性。但是,這也導(dǎo)致了社區(qū)的分化。這有點(diǎn)像Linux和Android社區(qū)的分化。OpenStack社區(qū)有必要弄清楚分化的存在,否則會(huì)出現(xiàn)一堆獨(dú)立的版本,而且各版本間不能相互轉(zhuǎn)移。
Bluebox的Alvarez指出:“大家用到很多不同的方法使得Nova的Neutron具有高可用性。這里沒有最好的做法——每一個(gè)解決方法都像是獨(dú)特的手工作品。”
Alvarez說的“手工作品”特點(diǎn)很精彩地說出了OpenStack在另一個(gè)方面的問題:OpenStack的可用組件多數(shù)在應(yīng)用中都需要大量地調(diào)整,各個(gè)公司都調(diào)整安裝自己的系統(tǒng),最后OpenStack社區(qū)發(fā)布下一個(gè)版本時(shí),一些改良的功能很難融合在一起。
CloudScaling 的Randy Bias指,“下載一個(gè)OpenStack部署是一件復(fù)雜的事,有不少隱患。OpenStack是一個(gè)很靈活的系統(tǒng),但也有不少挑戰(zhàn),原因是有些設(shè)計(jì)上的決策會(huì)導(dǎo)致升級(jí)困難。”
OpenStack軟件供應(yīng)商Metacloud應(yīng)同以上的說法。Metacloud的系統(tǒng)架構(gòu)主管Chet Burgess最近告訴記者,設(shè)置OpenStack軟件對新手管理員來說是一件困難的事,因此會(huì)吸引一些機(jī)構(gòu)對OpenStack作出調(diào)整以處理相關(guān)的問題。
Burgess說:“部署OpenStack不是件簡單的事,給OpenStack排除故障和運(yùn)行OpenStack也很復(fù)雜。像OpenStack這樣的系統(tǒng)有很多功能和選項(xiàng),所以要保證一切都順利也不是件容易的事。”
CloudScaling、Metacloud和Bluebox都提了一條建議,各個(gè)公司不應(yīng)該過多地插手自己用到的發(fā)行版本(指代那些受益于外包OpenStack部署的公司。但是,我們相信他們說的是為OpenStack社區(qū)的利益著想的,然后才是他們自己少少的利益,而不是反過來。)
Bias說道:“我覺得主要問題是……大家都是一副‘去下個(gè)OpenStack,想用來做什么就做吧’的姿態(tài),沒有看到事情的另一面。另一面是:這樣做了以后就意味著要做好維護(hù)一個(gè)定制系統(tǒng)的準(zhǔn)備。有些類似‘你為什么不去建一個(gè)定制的Linux版本,’因?yàn)檫@樣做的話要做出各種不同的奇怪決定。”
我們認(rèn)為,OpenStack更多需要的是一個(gè)小范圍的版本及社區(qū)一致的努力,以期待可以讓所有的核心功能得到強(qiáng)化。
Hadoop用的就是類似的方法,包括因特爾公司、Hortonworks和微軟在內(nèi)的不少公司匯集在Apache Hadoop項(xiàng)目的周圍,再加上有幾個(gè)公司制造如MapR 或Cloudera的極為專有的“開源核心”發(fā)行版本。
Bias說,“大家應(yīng)該用基于OpenStack的產(chǎn)品,而不是采用DIY(自己動(dòng)手做)。你要么是去買輛車,要么是改裝車,沒必要兩樣都做。要確定自己的策略。”
Icehouse版定于6個(gè)月左右后發(fā)布。社區(qū)不少人期待網(wǎng)絡(luò)問題屆時(shí)會(huì)得到解決以及其他核心功能會(huì)得到加強(qiáng)。
Metacloud 的Burgess說:“前面道路是崎嶇的。但過去兩年我們一路走來,證明了它不僅是可行的,而且還相當(dāng)?shù)牟诲e(cuò)。” Bluebox的Alvarez認(rèn)同這個(gè)說法,他補(bǔ)充說,“過去一年半內(nèi)的發(fā)展絕對是驚人的。”
只要OpenStack社區(qū)保持技術(shù)上不斷創(chuàng)新,同時(shí)又在基本原理上做足功夫,OpenStack就會(huì)進(jìn)一步發(fā)展。但是Neutron的開發(fā)是一個(gè)值得警惕的例子。這個(gè)例子說明,要為每個(gè)不同大小的數(shù)據(jù)中心建造管理系統(tǒng)不可避免地會(huì)出現(xiàn)各種困難。