導語:OpenStack帶來了驚喜,時而又讓人煩惱。OpenStack是為何而設計的?各廠商又對其抱有什么樣的期望?OpenStack碰到了什么問題?OpenStack面臨的困難不少,只要OpenStack社區保持技術上不斷創新,同時又在基本原理上做足功夫,OpenStack就會進一步發展。
OpenStack有點像個早熟的孩子—— 開源數據中心管理(open-source data center management)和服務層(service layer)不斷地做一些了不起的事,而同時又讓人傷透腦筋。
這個開源云控制狂本周在香港召開峰會。我們來看一下OpenStack這個雄心勃勃的軟件的方方面面:
OpenStack于2010年中誕生,計算源碼是美國航空航天局捐的,而存儲源碼則是Rackspace捐的。
OpenStack是設計用來管理公有云和私有云的。很多公司認為OpenStack有希望讓他們能擁有一些單一專有云的功能,一些如谷歌、亞馬遜及微軟經營的云那樣的功能。
一路走來,有數百個公司對 OpenStack感興趣,其中包括英特爾、紅帽、AT&T、Brocade 和F5。OpenStack現在是一些公有云的基礎,如惠普云和IBM即將面世的SoftLayer-revamp。
盡管很多人稱OpenStack是“云之Linux”,OpenStack技術到目前為止并沒有像Linux那樣在可用性和兼容性上達到人們的期望,不過正在迅速改善之中。
截止這個月,OpenStack的很多核心組件已達到可用水平,并可以在具規模的系統上應用。不少人對OpenStack的Cinder塊存儲組件(Cinder block storage component)、Horizon網站前端(Horizon web front-end)和Keystone身份服務(Keystone identity service)稱贊不已。OpenStack的一些新功能也做得不錯,甲骨文公司在自己的云里用上了新的Swift object-cum-blob存儲。
但是,OpenStack技術在一個關鍵領域里碰到問題,它的Neutron網絡組件問題多多。這已經引起OpenStack社區的關注,也有不少人私下在一些IRC(Internet Relay Chat“因特網中繼聊天”的縮寫)聊天室中就此問題大談特談。
這些挑戰的出現可以說是能夠預見的。因為盡管開源在過去二十年強勁地攻占了儲存和計算系統,網絡系統到目前為止卻仍然是專有供應商的堅固領地。可以看到,這一塊變化不大,在這一塊的開源碼和開源專業人員也不多。
Neutron網絡噩夢
Neutron(中子)是所謂的“網絡即服務”("network-as-a-service")組件,以前名為Quantum(量子),2012年9月與Folsom系統版一起發布。名字引起Quantum公司的爭議,后來在最近的Havana 發布中改名為Neutron。
在IRC上的OpenStack網絡聊天室記錄中,記者看到OpenStack社區在Neutron里找到一些bug,并不得不在發布Havana 前急急忙忙地打上補丁。盡管這些bug已經得到修補,但其出現充分說明了要為規模達數千個服務器的一個系統開發穩定的網絡組件是十分困難的。
Hernan Alvarez是Bluebox(OpenStack寄存公司) 的運營與產品副總裁。他說:“如果你只待在Neutron的基礎應用區內,不會有什么問題。但是一旦你想要更深入,就會相當地冒險。”
OpenStack公共電郵群里9月27號有個貼子詢問有沒有人在產品里使用Quantum或Neutron,至今尚未獲得任何公開答復。
發帖者特別提到Neutron技術上的幾個方面“不能盡如人意”,包括:不支持簡潔地拆解網絡,更新子網困難,不支持多主機部署,“Neutron開發人員很少或沒有在IRC上提供技術支持”以及在網絡管理文件中出現的“部署上混亂和不切實際的假設”。
這名用戶寫道,“我們是由于Nova網有遭棄用的危險才被迫考慮Neutron的。”
當然,一個人的經驗明顯不能代表整體,有可能很多人在私底下玩Neutron并將其用在私有和秘密項目上。但是,貼子中提到的問題記者在過去幾個月里不止一次聽人說起過。
另外一個問題同時涉及到含計算網絡組件(Nova)和獨立發展網絡組件(Neutron),兩個組件里的單機和簡單網絡、IP地址分配、IP路由、NAT、DHCP和OpenStack元數據服務的源碼都處于一個單一的碼塊里,因而造成接口困難。另一方面,多主機格式里的服務分布在虛擬機管理程序里,會出現攻擊面過大的問題。
OpenStack專業公司CloudScaling的主管Randy Bias說,“從構造上來說,如果因為OpenStack的默認網絡模式在大規模使用時不給力而不得不在產品里使用默認網絡模式,這真是最槽糕的事情。”
Neutron還在開發中。據我們所知,很多公司在努力提高此關鍵組件的穩定性。但是,這也導致了社區的分化。這有點像Linux和Android社區的分化。OpenStack社區有必要弄清楚分化的存在,否則會出現一堆獨立的版本,而且各版本間不能相互轉移。
Bluebox的Alvarez指出:“大家用到很多不同的方法使得Nova的Neutron具有高可用性。這里沒有最好的做法——每一個解決方法都像是獨特的手工作品。”
Alvarez說的“手工作品”特點很精彩地說出了OpenStack在另一個方面的問題:OpenStack的可用組件多數在應用中都需要大量地調整,各個公司都調整安裝自己的系統,最后OpenStack社區發布下一個版本時,一些改良的功能很難融合在一起。
CloudScaling 的Randy Bias指,“下載一個OpenStack部署是一件復雜的事,有不少隱患。OpenStack是一個很靈活的系統,但也有不少挑戰,原因是有些設計上的決策會導致升級困難。”
OpenStack軟件供應商Metacloud應同以上的說法。Metacloud的系統架構主管Chet Burgess最近告訴記者,設置OpenStack軟件對新手管理員來說是一件困難的事,因此會吸引一些機構對OpenStack作出調整以處理相關的問題。
Burgess說:“部署OpenStack不是件簡單的事,給OpenStack排除故障和運行OpenStack也很復雜。像OpenStack這樣的系統有很多功能和選項,所以要保證一切都順利也不是件容易的事。”
CloudScaling、Metacloud和Bluebox都提了一條建議,各個公司不應該過多地插手自己用到的發行版本(指代那些受益于外包OpenStack部署的公司。但是,我們相信他們說的是為OpenStack社區的利益著想的,然后才是他們自己少少的利益,而不是反過來。)
Bias說道:“我覺得主要問題是……大家都是一副‘去下個OpenStack,想用來做什么就做吧’的姿態,沒有看到事情的另一面。另一面是:這樣做了以后就意味著要做好維護一個定制系統的準備。有些類似‘你為什么不去建一個定制的Linux版本,’因為這樣做的話要做出各種不同的奇怪決定。”
我們認為,OpenStack更多需要的是一個小范圍的版本及社區一致的努力,以期待可以讓所有的核心功能得到強化。
Hadoop用的就是類似的方法,包括因特爾公司、Hortonworks和微軟在內的不少公司匯集在Apache Hadoop項目的周圍,再加上有幾個公司制造如MapR 或Cloudera的極為專有的“開源核心”發行版本。
Bias說,“大家應該用基于OpenStack的產品,而不是采用DIY(自己動手做)。你要么是去買輛車,要么是改裝車,沒必要兩樣都做。要確定自己的策略。”
Icehouse版定于6個月左右后發布。社區不少人期待網絡問題屆時會得到解決以及其他核心功能會得到加強。
Metacloud 的Burgess說:“前面道路是崎嶇的。但過去兩年我們一路走來,證明了它不僅是可行的,而且還相當的不錯。” Bluebox的Alvarez認同這個說法,他補充說,“過去一年半內的發展絕對是驚人的。”
只要OpenStack社區保持技術上不斷創新,同時又在基本原理上做足功夫,OpenStack就會進一步發展。但是Neutron的開發是一個值得警惕的例子。這個例子說明,要為每個不同大小的數據中心建造管理系統不可避免地會出現各種困難。