本文系InfoQ中文站向ZStack項(xiàng)目創(chuàng)始人張鑫的約稿。2015年4月正式對外開源的ZStack項(xiàng)目宣稱要解決在OpenStack中得不到解決的問題,并明確將項(xiàng)目目標(biāo)指向目前前景似乎越來越不明朗的私有云市場。作為ZStack項(xiàng)目的架構(gòu)師、CloudStack的前開發(fā)人員,張鑫對于私有云——或者說on-premise的企業(yè)IT——到底遇到了什么問題、此類服務(wù)到底應(yīng)該怎么做,是如何構(gòu)想的?本文將分享他對這個(gè)話題的思考。
寫在前面:由于企業(yè)私有云市場遲遲未打開,近兩年來已有多家IaaS企業(yè)被廉價(jià)收購甚至倒閉,業(yè)界已經(jīng)開始出現(xiàn)一種質(zhì)疑私有云是偽命題的聲音。在此,作者想借ZStack發(fā)布的機(jī)會(huì),梳理一下私有云的過去和現(xiàn)狀,并展望一下它的未來。
從系統(tǒng)管理的角度來看,我們可以把企業(yè)IT市場分為三個(gè)階段:前虛擬化紀(jì)元,虛擬化紀(jì)元,IaaS紀(jì)元(基礎(chǔ)設(shè)施即服務(wù)紀(jì)元)。
前虛擬化紀(jì)元是指虛擬化技術(shù)出現(xiàn)以前的階段,可以追溯到計(jì)算機(jī)出現(xiàn)到1998年VMWare的創(chuàng)立。在這個(gè)階段,人們管理機(jī)器的方式主要是人工部署架構(gòu)(包括安裝物理機(jī),網(wǎng)絡(luò)部署等),配合分布式軟件管理。這個(gè)時(shí)期由于沒有虛擬化技術(shù),一臺(tái)物理機(jī)只能運(yùn)行一個(gè)操作系統(tǒng),網(wǎng)絡(luò)拓?fù)湟脖仨毷孪仍O(shè)計(jì)然后硬連線,整體上效率低下,不靈活。由于一旦部署就難以改變,底層架構(gòu)往往會(huì)制約上層業(yè)務(wù);軟件方面也沒有統(tǒng)一標(biāo)準(zhǔn),多是由系統(tǒng)管理員自己開發(fā)的腳本來實(shí)現(xiàn)部分自動(dòng)化。
1998年VMWare成立ethos并發(fā)布首款操作系統(tǒng)虛擬化產(chǎn)品后,市場進(jìn)入了企業(yè)級虛擬化紀(jì)元。由于虛擬化技術(shù)允許同一物理機(jī)上運(yùn)行多個(gè)操作系統(tǒng),并且操作系統(tǒng)之間可以用虛擬化軟件提供的虛擬網(wǎng)絡(luò)連接,其靈活性讓IT架構(gòu)的部署極大簡化。系統(tǒng)管理員在安裝物理機(jī)后,網(wǎng)絡(luò)拓?fù)淇梢允褂帽馄降亩壘W(wǎng)絡(luò),即所有物理機(jī)在同一個(gè)二級網(wǎng)絡(luò)廣播域(broadcast domain),然后在虛擬網(wǎng)絡(luò)級別實(shí)現(xiàn)隔離。這階段雖然有虛擬化軟件的幫助,系統(tǒng)管理員仍然需要在虛擬機(jī)級別手動(dòng)部署網(wǎng)絡(luò)或存儲(chǔ)。比如需要手動(dòng)為同一個(gè)虛擬網(wǎng)絡(luò)內(nèi)的虛擬機(jī)配置DHCP/DNS服務(wù)器,需要在不同的虛擬網(wǎng)絡(luò)之間手動(dòng)配置路由等。
從Amazon在2006年發(fā)布EC2公有云,市場開始真正進(jìn)入IaaS紀(jì)元。跟虛擬化紀(jì)元不同的是,IaaS軟件借助虛擬化技術(shù)不僅提供池化資源,還將計(jì)算、存儲(chǔ)、網(wǎng)絡(luò)資源按服務(wù)的方式提供給用戶,實(shí)現(xiàn)按需索取。同樣是部署網(wǎng)絡(luò)的例子,在IaaS紀(jì)元,管理員不再需要手動(dòng)配置DHCP/DNS服務(wù)器、網(wǎng)絡(luò)路由,而是向IaaS軟件描述需求,由IaaS軟件自動(dòng)去配置部署。隨著軟件定義網(wǎng)絡(luò)(SDN)、軟件定義存儲(chǔ)(SDS)等技術(shù)的出現(xiàn)和應(yīng)用,管理員甚至不再需要手動(dòng)安裝虛擬軟件到物理服務(wù)器(借助IPMI/PXE),不需要手動(dòng)配置交換機(jī),只需要把硬件安裝在機(jī)架并連線,其余所有工作都交給軟件處理。自此數(shù)據(jù)中心管理開始進(jìn)入軟件定義的全自動(dòng)化時(shí)代。
作為CloudStack的前開發(fā)人員(作者于2010年加入Cloud.com,后被Citrix收購),作者曾多次作為CloudStack的代表參加了多家國際知名公司內(nèi)部私有云項(xiàng)目的設(shè)計(jì)和策劃,第一線地接觸到客戶的需求和痛點(diǎn)。在整個(gè)過程中,作者最深切的感受是:私有云市場的需求是真實(shí)存在的,但現(xiàn)有產(chǎn)品與客戶需求的差距也是巨大的。除去加在私有云上的各種噱頭,客戶的核心需求是管理數(shù)據(jù)中心或企業(yè)IT架構(gòu)中不斷增加的硬件、實(shí)現(xiàn)自動(dòng)化、減少底層架構(gòu)的部署時(shí)間,從而加速企業(yè)在上層業(yè)務(wù)上的創(chuàng)新。用通俗的話說就是:
機(jī)器越來越多,人管不過來,得讓軟件去管;
老板急著上線業(yè)務(wù),IT部門不能拖后腿說光架設(shè)機(jī)器部署網(wǎng)絡(luò)就要一個(gè)月。
這個(gè)剛需是非常巨大的。調(diào)研機(jī)構(gòu)TBR在2014年發(fā)布的報(bào)告中估算當(dāng)年私有云市場的總份額在410億美元上下,并預(yù)測2018年私有云市場份額將達(dá)到680億美元。
IaaS技術(shù)出現(xiàn)以來,其最廣泛最成功的應(yīng)用當(dāng)屬公有云。一大批公有云廠商的出現(xiàn)加速了行業(yè)的發(fā)展和創(chuàng)新,催生了大量相關(guān)產(chǎn)業(yè),同時(shí)也在一定程度上幫助很多客戶從底層架構(gòu)的依賴中解脫出來,實(shí)現(xiàn)了業(yè)務(wù)創(chuàng)新。例如很多成功的SaaS公司就是完全運(yùn)行在公有云之中。公有云的宣傳口號是“讓云計(jì)算像水和電一樣”,這是非常高明的文案,讓人潛意識(shí)中以為有了公有云為我們提供按需供應(yīng)的計(jì)算資源,就不需要自己建立和維護(hù)IT架構(gòu)或數(shù)據(jù)中心,畢竟沒人會(huì)去自己建自來水廠和發(fā)電站。但實(shí)際上公有云遠(yuǎn)沒有達(dá)到自來水管道和供電網(wǎng)絡(luò)那般完善和穩(wěn)定,在數(shù)據(jù)安全和成本方面也并不占優(yōu)勢。我認(rèn)為公有云之所以成功,是因?yàn)樗コ嘶A(chǔ)設(shè)施里眾多的差異性,抽象出能夠滿足大部分客戶需要的模型,例如業(yè)界事實(shí)標(biāo)準(zhǔn)的Amazon EC2模型。
但這個(gè)模型并不適合所有場景。例如像Facebook這樣的公司,交換機(jī)間就需要40G的獨(dú)享帶寬,存儲(chǔ)上還需要專門公司提供的閃存(Flash);而保險(xiǎn)公司可能又希望數(shù)據(jù)庫跑在物理機(jī)上,并且物理機(jī)網(wǎng)絡(luò)要能夠跟前端虛擬機(jī)的網(wǎng)絡(luò)形成VPC。公有云是不能夠在一個(gè)多租戶的環(huán)境內(nèi)去滿足各個(gè)客戶的差異性需求的。所以,公有云雖然是到目前為止IaaS領(lǐng)域發(fā)展最好也是最成功的例子,但要斷言它必將統(tǒng)治世界還為時(shí)過早。如果哪天Intel和AMD的服務(wù)器芯片都被公有云廠商買走了,那么一個(gè)新時(shí)代必將開始;在此之前,我們?nèi)匀恍枰鎸λ接性剖袌龅男枨蟆?/p>
在過去幾年跟不同客戶打交道的過程中,作者深刻感覺到數(shù)據(jù)中心自動(dòng)化以及企業(yè)IT架構(gòu)云化的需求必須劃分為兩類。
一類是服務(wù)提供商的需求(service provider)。這類企業(yè)搭建私有云的目的是為了支撐上層業(yè)務(wù)的運(yùn)行,例如電商公司的私有云、游戲公司的私有云。這類私有云對技術(shù)的要求跟公有云類似,因?yàn)樗麄兊臉I(yè)務(wù)模式?jīng)Q定了基礎(chǔ)架構(gòu)需要有快速動(dòng)態(tài)擴(kuò)展的能力,存儲(chǔ)需要是分布式以支撐數(shù)據(jù)的爆炸式增長等。這類公司通常有很強(qiáng)的DevOps能力,同時(shí)也面臨著傳統(tǒng)IT架構(gòu)不能解決的問題,所以他們有能力部署不成熟的IaaS軟件并追逐新技術(shù)。
另一類需求是傳統(tǒng)企業(yè),他們的IT架構(gòu)主要停留在虛擬化紀(jì)元,多采用VMWare的產(chǎn)品。我們稱這類需求為傳統(tǒng)的企業(yè)虛擬化需求(enterprise virtualization)。云計(jì)算的三層結(jié)構(gòu)中,面對終端用戶的是SaaS,而IaaS、PaaS都是為之服務(wù)的。三者關(guān)系存在一種上層應(yīng)用決定下層架構(gòu),下層架構(gòu)又反過來制約或促進(jìn)上層應(yīng)用的關(guān)系。傳統(tǒng)企業(yè)的特點(diǎn)在于他們?nèi)匀贿\(yùn)行著大量傳統(tǒng)應(yīng)用,這些應(yīng)用很多都是上個(gè)世紀(jì)的產(chǎn)品,它們并非為云環(huán)境所設(shè)計(jì),簡單的把它們搬遷到公有云模式中會(huì)導(dǎo)致很多技術(shù)上的困難。
在公有云模式中有兩個(gè)重要的特點(diǎn):一個(gè)是資源池化,一個(gè)是應(yīng)用程序需要能容忍基礎(chǔ)架構(gòu)的失敗。
資源池化是公有云去差異化的一個(gè)重要設(shè)計(jì),它主張租戶共享資源池,資源獲取的過程不可定制。但傳統(tǒng)應(yīng)用在很多場合是需要能夠進(jìn)行差異化定制的。例如對于IO密集的傳統(tǒng)應(yīng)用,用戶可能期望虛擬機(jī)的根磁盤(裝有操作系統(tǒng)的磁盤)放在NFS上,數(shù)據(jù)磁盤通過專門的存儲(chǔ)網(wǎng)絡(luò)放在高速的IP SAN上面。這就要求對創(chuàng)建虛擬機(jī)的過程可以定制,用戶可以選擇不同的磁盤分配策略和不同的網(wǎng)絡(luò)。又比如Citrix的遠(yuǎn)程桌面XenDesktop,它需要多租戶即獨(dú)享私有網(wǎng)絡(luò)又共享扁平網(wǎng)絡(luò)的拓?fù)?,這就要求類似于Amazon VPC + Classic EC2的網(wǎng)絡(luò)模型。當(dāng)企業(yè)業(yè)務(wù)由眾多傳統(tǒng)應(yīng)用構(gòu)成時(shí),這種差異性的定制需求會(huì)進(jìn)一步加強(qiáng)。公有云提供商也認(rèn)識(shí)到了這種需求,并在有限范圍內(nèi)修改以滿足客戶。例如Amazon VPC發(fā)布最初是不支持靜態(tài)IP(static IP)的,后來在用戶的強(qiáng)烈要求下才加入,但它的Classic EC2是不可能在多租戶環(huán)境下支持這種功能的。去差異化是公有云的成功法寶,它無法也不會(huì)為了迎合傳統(tǒng)程序而實(shí)現(xiàn)各種定制功能。
在公有云中運(yùn)行良好的應(yīng)用都是能夠在應(yīng)用層面容忍一定程度的基礎(chǔ)架構(gòu)失敗(比如虛擬機(jī)崩潰,網(wǎng)絡(luò)失聯(lián)等)的。公有云廠商一直在反復(fù)向客戶強(qiáng)調(diào)基礎(chǔ)架構(gòu)是會(huì)失效的,也提供多種手段幫助用戶設(shè)計(jì)failover的應(yīng)用,而這恰恰是傳統(tǒng)應(yīng)用的死穴,因?yàn)樗鼈兒芏嗍菃螜C(jī)應(yīng)用,對下層架構(gòu)的穩(wěn)定性要求很高。所以大量傳統(tǒng)企業(yè)因?yàn)榉€(wěn)定性而仍然依賴IOE(IBM、Oracle、EMC)的架構(gòu)。企業(yè)客戶在選擇IaaS產(chǎn)品時(shí),往往要求IaaS能夠在架構(gòu)層面提供容錯(cuò)手段,比如虛擬機(jī)級別的高可靠、網(wǎng)絡(luò)層面的高可靠和冗余。這種由傳統(tǒng)應(yīng)用帶來的需求不是云友好(cloud-friendly)和云感知(cloud-aware)的,公有云模式是不會(huì)對他們做出過多考慮的。
這也是為什么對于服務(wù)提供商來說,私有云可以很容易照搬公有云模式,但在面對傳統(tǒng)企業(yè)客戶的需求時(shí),簡單復(fù)制公有云模式是不夠的——因?yàn)槲覀兠鎸Φ氖且粋€(gè)強(qiáng)大的、不可更改的傳統(tǒng)應(yīng)用生態(tài)。
《Why OpenStack is different from other open source projects》
《Keep OpenStack Weird》
《Why vendors can’t sell OpenStack to enterprises》
張鑫,2006年加入Intel上海開源技術(shù)中心(OTC),從事開源虛擬機(jī)項(xiàng)目XEN的開發(fā),為社區(qū)共享了多個(gè)功能,例如XEN中E100網(wǎng)卡模擬器,XEN/IA64虛擬BIOS對Windows的支持等。同時(shí)也共享了大量bug修復(fù)的補(bǔ)丁。2010年赴硅谷加入Cloud.com(后被Citrix收購),從事CloudStack的開發(fā)工作,其間多次作為CloudStack代表參與客戶私有云項(xiàng)目的設(shè)計(jì)和部署。在從Citrix退出后,和搭檔一起創(chuàng)立ZStack。