我跟OpenStack 1-8年,從ABC到HI、到KO
我跟OpenStack從ABC、HI到KO
2010年底,因電信級(jí)支撐平臺(tái)和業(yè)務(wù)對(duì)虛擬化的需要,我在ZTE開(kāi)始了從嵌入式Linux向云計(jì)算的轉(zhuǎn)型。
當(dāng)時(shí)的OpenStack版本還處于A、B、C階段,與端莊有型的CloudStack,簡(jiǎn)潔明快的OpenNebula,高端大氣的Eucalyptus相比,可以合稱(chēng)IaaS初生年代的四小龍。其中的Eucalyptus在學(xué)術(shù)圈被高談闊論,中國(guó)移動(dòng)的大云用上了OpenNebula,CloudStack被Citrix給收了,OpenStack卻還在蹣跚學(xué)步。轉(zhuǎn)眼八年過(guò)去了, 如今的那三位或淡出江湖,或銷(xiāo)聲匿跡,只有OpenStack獨(dú)霸高處,至少在開(kāi)源界是四顧無(wú)人敵,所以一時(shí)難免心生唏噓。
由于當(dāng)年這四個(gè)開(kāi)源IaaS項(xiàng)目的前景未明,難分上下,所以我們都嘗試做了編譯部署和源碼級(jí)預(yù)研,代碼看得最多的是OpenNebula,一是因其簡(jiǎn)單易懂的輕量級(jí)架構(gòu),二是因其采用C++實(shí)現(xiàn),對(duì)于嵌入式C開(kāi)發(fā)出身的團(tuán)隊(duì)比較容易上手,畢竟那些年P(guān)ython還沒(méi)火起來(lái)。最后集眾家之所長(zhǎng),我們從零起步開(kāi)發(fā)了一個(gè)電信級(jí)的虛擬化管理平臺(tái)TECS,底層先是采用了Xen,后來(lái)才支持了KVM,發(fā)布之后就用在了ZTE的GoTa系統(tǒng)、核心網(wǎng)等通信業(yè)務(wù)場(chǎng)景中。
TECS平臺(tái)的通用支撐層中就有基于Qpid的AMQP消息隊(duì)列,利用了OpenNebula的方案,并進(jìn)一步改造成了支持多線程、多進(jìn)程、多節(jié)點(diǎn)、層次更豐富的通信模式,并利用該機(jī)制實(shí)現(xiàn)了一個(gè)有向無(wú)環(huán)圖的操作事務(wù)系統(tǒng),支持異常事務(wù)的多個(gè)并行化步驟的集體操作回滾。當(dāng)然作為支撐層,除了通信,還有Shell、定時(shí)器、序列化、數(shù)據(jù)庫(kù)、異常處理等通用組件,記得當(dāng)時(shí)光是針對(duì)這個(gè)支撐層的設(shè)計(jì)方案文檔就寫(xiě)了100多頁(yè)。
到了2013年,OpenStack相繼發(fā)布了Havana、IceHouse版本,仿佛暗示著該從入門(mén)ABC到了說(shuō)Hi的時(shí)候了。由于電信運(yùn)營(yíng)商重視NFV,需要一個(gè)開(kāi)放的虛擬化平臺(tái)提供支撐,演化出一個(gè)更廣闊的技術(shù)生態(tài)鏈。所以當(dāng)時(shí)的團(tuán)隊(duì)只能忍痛放棄了自己打造了三年的虛擬化平臺(tái),轉(zhuǎn)向了維護(hù)OpenStack的I版本。起初總歸是有些心理排斥感,看到OpenStack的什么功能都是自己曾經(jīng)玩過(guò)的,而且它對(duì)細(xì)節(jié)穩(wěn)定性的要求跟電信級(jí)平臺(tái)沒(méi)法比。但是隨著業(yè)務(wù)新功能的二次開(kāi)發(fā),對(duì)OpenStack的統(tǒng)一服務(wù)網(wǎng)關(guān)入口,高度靈活的實(shí)現(xiàn)層動(dòng)態(tài)插件化機(jī)制,單線程多協(xié)程的服務(wù)框架,頗具微服務(wù)形態(tài)的擴(kuò)展思路,以及Python語(yǔ)言的快速實(shí)現(xiàn)嘆為觀止,感覺(jué)它是在用一種高屋建瓴、大開(kāi)大合的理念,如同玩樂(lè)高積木一樣把無(wú)數(shù)既有的開(kāi)源項(xiàng)目機(jī)動(dòng)性地拼裝成一個(gè)達(dá)到商用級(jí)要求的龐大平臺(tái),經(jīng)過(guò)兩年的研發(fā)與維護(hù)投入,從中汲取到了豐富的架構(gòu)設(shè)計(jì)經(jīng)驗(yàn)。
再后來(lái),和OpenStack的緣分繼續(xù)延伸到了如今的云桌面領(lǐng)域。從初創(chuàng)時(shí)的Kilo,到2.0版本的Ocata,OpenStack已經(jīng)把其它的開(kāi)源IaaS項(xiàng)目給徹底KO了,自身也到了守江山穩(wěn)社稷的階段。OpenStack代碼中最核心的五大件,keystone、nova、glance、cinder、neutron,已經(jīng)牢固成型,不同版本之間主要是在實(shí)現(xiàn)層進(jìn)行細(xì)節(jié)微調(diào),可用性早已不是問(wèn)題了。很多云平臺(tái)的實(shí)際使用者也已經(jīng)很少去關(guān)注這些代碼級(jí)變化,更加關(guān)注的是自身的應(yīng)用場(chǎng)景。
相對(duì)甘守寂寞的Linux內(nèi)核圈,作為上層管理平臺(tái)級(jí)開(kāi)源項(xiàng)目的OpenStack,操作流程性的代碼讓新人上手的速度很快,又趕上了如日中天的云計(jì)算技術(shù)高速發(fā)展期,很容易讓開(kāi)發(fā)者們浮想聯(lián)翩,集體爆發(fā),所以核心組件剛站穩(wěn)腳跟,從sahara,heat開(kāi)始的各種大帳篷項(xiàng)目便層出不窮,整體架構(gòu)上的技術(shù)杠桿伸得有點(diǎn)長(zhǎng)了。其實(shí)這種統(tǒng)一的基礎(chǔ)平臺(tái)性的東西,不像微信小程序、手機(jī)APP那樣的互聯(lián)網(wǎng)應(yīng)用,它更需要豐富的現(xiàn)實(shí)運(yùn)維經(jīng)驗(yàn)加上對(duì)底層實(shí)現(xiàn)機(jī)制的精通,匆忙趕制出來(lái)的項(xiàng)目,其穩(wěn)定性與生產(chǎn)環(huán)境的可用性值得商榷。當(dāng)然,這樣的形勢(shì)并不能否認(rèn)其開(kāi)源性質(zhì)的優(yōu)勢(shì),既然是做一個(gè)普適性的大平臺(tái),就意味著要兼收并蓄,有容乃大。它能讓無(wú)數(shù)的組件、插件、技術(shù)點(diǎn)來(lái)來(lái)往往,應(yīng)時(shí)順勢(shì),甚至自生自滅,但是那個(gè)核心的框架一直存在,就像帕特農(nóng)神廟一樣永遠(yuǎn)矗立著,本身就是很了不起的事。就像波普爾在《開(kāi)放社會(huì)及其敵人》里面說(shuō)的那樣,好的社會(huì)是開(kāi)放的,開(kāi)放社會(huì)就意味著會(huì)有形形色色相互矛盾的觀念。正是這種相互矛盾,讓社會(huì)具有多種選擇,多種可能,越變?cè)胶?。相反,封閉的社會(huì),是一元的、單純的,但因?yàn)檫@種社會(huì)失去了矛盾的對(duì)峙,失去選擇,就會(huì)一錯(cuò)到底,走向倒退。
在桌面上談?wù)凮penStack
再來(lái)說(shuō)說(shuō)云桌面和OpenStack的事。OpenStack本身是個(gè)管理平臺(tái),給用戶(hù)帶來(lái)實(shí)際價(jià)值的是對(duì)其場(chǎng)景化的利用,畢竟搭臺(tái)的不如唱戲的搶眼,云桌面就是在云平臺(tái)上唱遍大街小巷的一出好戲。電腦桌面這個(gè)整日里相看兩不厭的應(yīng)用,無(wú)論是廟堂之高,江湖之遠(yuǎn),各行各業(yè)都離不開(kāi),場(chǎng)景化千差萬(wàn)別。距離人那么近的應(yīng)用,便攜性、易用性,安全性、體驗(yàn)感都是繞不過(guò)去的話題,在IaaS日漸推廣的今天,桌面上云也成了當(dāng)仁不讓的選擇。
但是談IaaS的場(chǎng)合卻似乎少提桌面云,因?yàn)樽烂嫣摂M化是先于云計(jì)算出現(xiàn)的,在OpenStack之前,已經(jīng)有形形色色的桌面虛擬化管理系統(tǒng)了,直到現(xiàn)在也是只見(jiàn)多不見(jiàn)少,因?yàn)樽约洪_(kāi)發(fā)一個(gè)幾臺(tái)電腦的管理系統(tǒng)并不是什么復(fù)雜的事,所以云桌面的名字里面也帶個(gè)云字,但是和IaaS常常是花開(kāi)兩朵各表一枝。其實(shí)自己開(kāi)發(fā)的小型化虛擬機(jī)管理系統(tǒng)在幾根螺絲就能擰死了的小場(chǎng)合,小規(guī)模的用一下可以,一旦大規(guī)模地鋪開(kāi)建設(shè),除了桌面體驗(yàn),整個(gè)管理平臺(tái)的高可用性、靈活性,熱遷移、存儲(chǔ)備份、二次開(kāi)發(fā)便捉襟見(jiàn)肘起來(lái),就像自留地種的小菜一樣,雖然口味有機(jī)些,但是要常規(guī)批量供應(yīng)大客戶(hù)就緊缺了。
云桌面的管理平臺(tái)可以只用到OpenStack中的keystone、nova、glance、cinder、neutron這最成熟的五大件,背靠大樹(shù)好乘涼。而且目前的桌面操作系統(tǒng)還沒(méi)法跑在容器里,對(duì)K8S之類(lèi)的容器平臺(tái)也不感冒。我們目前對(duì)OpenStack這個(gè)平臺(tái)已經(jīng)不用投入太多精力去開(kāi)發(fā),它在桌面虛擬化應(yīng)用場(chǎng)景的穩(wěn)定成熟度已經(jīng)能讓維護(hù)人員無(wú)需整天提心吊膽了。
更進(jìn)一步考慮,VDI桌面核心內(nèi)容是虛擬化,完全可以不依賴(lài)于平臺(tái)管理層,比如我們目前的云桌面平臺(tái)3.0版已經(jīng)做到能夠以虛擬機(jī)鏡像,容器鏡像的形式安裝到任意一個(gè)現(xiàn)成的IaaS平臺(tái)、超融合環(huán)境中去,成為真正的DaaS,從而讓私有云廠家無(wú)須重復(fù)開(kāi)發(fā),私有云用戶(hù)無(wú)須重復(fù)建設(shè)。堅(jiān)持使用OpenStack云平臺(tái)來(lái)運(yùn)行我們的桌面系統(tǒng),就是看中它有一個(gè)開(kāi)放的標(biāo)準(zhǔn)化的接口體系,能夠?yàn)槲覀兊淖烂鎽?yīng)用提供更多的管理功能入口,從云平臺(tái)這一層來(lái)講,我們的云桌面是把OpenStack這個(gè)開(kāi)源項(xiàng)目做到了最恰如其分的場(chǎng)景化利用。
經(jīng)過(guò)八年的磨礪,OpenStack已經(jīng)從炙手可熱、從者如云到了大隱隱于市的階段?;竟δ艿娜找娉墒?,漸趨穩(wěn)定,版本差異化變小,必然會(huì)讓它淡出視野。凡事成為過(guò)往,就會(huì)有許多責(zé)之深、愛(ài)之切的聲音不斷發(fā)出。不如讓它踏踏實(shí)實(shí)做好自己的平臺(tái)角色,在一個(gè)個(gè)項(xiàng)目、產(chǎn)品領(lǐng)域發(fā)揮臺(tái)柱的功力,將會(huì)是對(duì)這么多年積累下來(lái)的開(kāi)源技術(shù)價(jià)值最好的印證。
作者介紹:
張文劍,南京機(jī)敏科技首席架構(gòu)師,主攻OpenStack VDI,參與編寫(xiě)中國(guó)開(kāi)源云聯(lián)盟桌面云標(biāo)準(zhǔn),主持機(jī)敏云平臺(tái)1.0、2.0版本的研發(fā)。