本文系InfoQ中文站向ZStack項目創(chuàng)始人張鑫的約稿。2015年4月正式對外開源的ZStack項目宣稱要解決在OpenStack中得不到解決的問題桶良,并明確將項目目標指向目前前景似乎越來越不明朗的私有云市場糖耸。作為ZStack項目的架構(gòu)師捌蚊、CloudStack的前開發(fā)人員舀瓢,張鑫對于私有云——或者說on-premise的企業(yè)IT——到底遇到了什么問題、此類服務(wù)到底應(yīng)該怎么做奏纪,是如何構(gòu)想的?本文將分享他對這個話題的思考斩启。
寫在前面:由于企業(yè)私有云市場遲遲未打開序调,近兩年來已有多家IaaS企業(yè)被廉價收購甚至倒閉,業(yè)界已經(jīng)開始出現(xiàn)一種質(zhì)疑私有云是偽命題的聲音兔簇。在此发绢,作者想借ZStack發(fā)布的機會,梳理一下私有云的過去和現(xiàn)狀垄琐,并展望一下它的未來边酒。
從系統(tǒng)管理的角度來看,我們可以把企業(yè)IT市場分為三個階段:前虛擬化紀元狸窘,虛擬化紀元墩朦,IaaS紀元(基礎(chǔ)設(shè)施即服務(wù)紀元)辩涝。
前虛擬化紀元是指虛擬化技術(shù)出現(xiàn)以前的階段凿宾,可以追溯到計算機出現(xiàn)到1998年VMWare的創(chuàng)立。在這個階段,人們管理機器的方式主要是人工部署架構(gòu)(包括安裝物理機藐翎,網(wǎng)絡(luò)部署等),配合分布式軟件管理腰吟。這個時期由于沒有虛擬化技術(shù)趟大,一臺物理機只能運行一個操作系統(tǒng),網(wǎng)絡(luò)拓撲也必須事先設(shè)計然后硬連線赴背,整體上效率低下椰拒,不靈活。由于一旦部署就難以改變燃观,底層架構(gòu)往往會制約上層業(yè)務(wù);軟件方面也沒有統(tǒng)一標準便瑟,多是由系統(tǒng)管理員自己開發(fā)的腳本來實現(xiàn)部分自動化缆毁。
1998年VMWare成立ethos并發(fā)布首款操作系統(tǒng)虛擬化產(chǎn)品后,市場進入了企業(yè)級虛擬化紀元到涂。由于虛擬化技術(shù)允許同一物理機上運行多個操作系統(tǒng)脊框,并且操作系統(tǒng)之間可以用虛擬化軟件提供的虛擬網(wǎng)絡(luò)連接,其靈活性讓IT架構(gòu)的部署極大簡化践啄。系統(tǒng)管理員在安裝物理機后浇雹,網(wǎng)絡(luò)拓撲可以使用扁平的二級網(wǎng)絡(luò),即所有物理機在同一個二級網(wǎng)絡(luò)廣播域(broadcast domain)屿讽,然后在虛擬網(wǎng)絡(luò)級別實現(xiàn)隔離昭灵。這階段雖然有虛擬化軟件的幫助,系統(tǒng)管理員仍然需要在虛擬機級別手動部署網(wǎng)絡(luò)或存儲伐谈。比如需要手動為同一個虛擬網(wǎng)絡(luò)內(nèi)的虛擬機配置DHCP/DNS服務(wù)器烂完,需要在不同的虛擬網(wǎng)絡(luò)之間手動配置路由等。
從Amazon在2006年發(fā)布EC2公有云诵棵,市場開始真正進入IaaS紀元抠蚣。跟虛擬化紀元不同的是,IaaS軟件借助虛擬化技術(shù)不僅提供池化資源非春,還將計算柱徙、存儲、網(wǎng)絡(luò)資源按服務(wù)的方式提供給用戶奇昙,實現(xiàn)按需索取护侮。同樣是部署網(wǎng)絡(luò)的例子,在IaaS紀元储耐,管理員不再需要手動配置DHCP/DNS服務(wù)器羊初、網(wǎng)絡(luò)路由,而是向IaaS軟件描述需求,由IaaS軟件自動去配置部署长赞。隨著軟件定義網(wǎng)絡(luò)(SDN)晦攒、軟件定義存儲(SDS)等技術(shù)的出現(xiàn)和應(yīng)用,管理員甚至不再需要手動安裝虛擬軟件到物理服務(wù)器(借助IPMI/PXE)得哆,不需要手動配置交換機脯颜,只需要把硬件安裝在機架并連線,其余所有工作都交給軟件處理贩据。自此數(shù)據(jù)中心管理開始進入軟件定義的全自動化時代栋操。
作為CloudStack的前開發(fā)人員(作者于2010年加入Cloud.com,后被Citrix收購)饱亮,作者曾多次作為CloudStack的代表參加了多家國際知名公司內(nèi)部私有云項目的設(shè)計和策劃矾芙,第一線地接觸到客戶的需求和痛點。在整個過程中近上,作者最深切的感受是:私有云市場的需求是真實存在的剔宪,但現(xiàn)有產(chǎn)品與客戶需求的差距也是巨大的。除去加在私有云上的各種噱頭壹无,客戶的核心需求是管理數(shù)據(jù)中心或企業(yè)IT架構(gòu)中不斷增加的硬件葱绒、實現(xiàn)自動化、減少底層架構(gòu)的部署時間斗锭,從而加速企業(yè)在上層業(yè)務(wù)上的創(chuàng)新哈街。用通俗的話說就是:
機器越來越多,人管不過來拒迅,得讓軟件去管;
老板急著上線業(yè)務(wù)她倘,IT部門不能拖后腿說光架設(shè)機器部署網(wǎng)絡(luò)就要一個月璧微。
這個剛需是非常巨大的。調(diào)研機構(gòu)TBR在2014年發(fā)布的報告中估算當年私有云市場的總份額在410億美元上下硬梁,并預(yù)測2018年私有云市場份額將達到680億美元前硫。
IaaS技術(shù)出現(xiàn)以來,其最廣泛最成功的應(yīng)用當屬公有云荧止。一大批公有云廠商的出現(xiàn)加速了行業(yè)的發(fā)展和創(chuàng)新屹电,催生了大量相關(guān)產(chǎn)業(yè),同時也在一定程度上幫助很多客戶從底層架構(gòu)的依賴中解脫出來跃巡,實現(xiàn)了業(yè)務(wù)創(chuàng)新危号。例如很多成功的SaaS公司就是完全運行在公有云之中。公有云的宣傳口號是“讓云計算像水和電一樣”素邪,這是非常高明的文案外莲,讓人潛意識中以為有了公有云為我們提供按需供應(yīng)的計算資源,就不需要自己建立和維護IT架構(gòu)或數(shù)據(jù)中心,畢竟沒人會去自己建自來水廠和發(fā)電站偷线。但實際上公有云遠沒有達到自來水管道和供電網(wǎng)絡(luò)那般完善和穩(wěn)定磨确,在數(shù)據(jù)安全和成本方面也并不占優(yōu)勢。我認為公有云之所以成功声邦,是因為它去除了基礎(chǔ)設(shè)施里眾多的差異性乏奥,抽象出能夠滿足大部分客戶需要的模型,例如業(yè)界事實標準的Amazon EC2模型亥曹。
但這個模型并不適合所有場景邓了。例如像Facebook這樣的公司,交換機間就需要40G的獨享帶寬歇式,存儲上還需要專門公司提供的閃存(Flash)驶悟;而保險公司可能又希望數(shù)據(jù)庫跑在物理機上,并且物理機網(wǎng)絡(luò)要能夠跟前端虛擬機的網(wǎng)絡(luò)形成VPC材失。公有云是不能夠在一個多租戶的環(huán)境內(nèi)去滿足各個客戶的差異性需求的痕鳍。所以,公有云雖然是到目前為止IaaS領(lǐng)域發(fā)展最好也是最成功的例子龙巨,但要斷言它必將統(tǒng)治世界還為時過早笼呆。如果哪天Intel和AMD的服務(wù)器芯片都被公有云廠商買走了,那么一個新時代必將開始旨别;在此之前诗赌,我們?nèi)匀恍枰鎸λ接性剖袌龅男枨蟆?/p>
在過去幾年跟不同客戶打交道的過程中,作者深刻感覺到數(shù)據(jù)中心自動化以及企業(yè)IT架構(gòu)云化的需求必須劃分為兩類秸弛。
一類是服務(wù)提供商的需求(service provider)铭若。這類企業(yè)搭建私有云的目的是為了支撐上層業(yè)務(wù)的運行,例如電商公司的私有云递览、游戲公司的私有云叼屠。這類私有云對技術(shù)的要求跟公有云類似,因為他們的業(yè)務(wù)模式?jīng)Q定了基礎(chǔ)架構(gòu)需要有快速動態(tài)擴展的能力绞铃,存儲需要是分布式以支撐數(shù)據(jù)的爆炸式增長等镜雨。這類公司通常有很強的DevOps能力,同時也面臨著傳統(tǒng)IT架構(gòu)不能解決的問題儿捧,所以他們有能力部署不成熟的IaaS軟件并追逐新技術(shù)荚坞。
另一類需求是傳統(tǒng)企業(yè),他們的IT架構(gòu)主要停留在虛擬化紀元菲盾,多采用VMWare的產(chǎn)品颓影。我們稱這類需求為傳統(tǒng)的企業(yè)虛擬化需求(enterprise virtualization)。云計算的三層結(jié)構(gòu)中懒鉴,面對終端用戶的是SaaS瞭空,而IaaS、PaaS都是為之服務(wù)的。三者關(guān)系存在一種上層應(yīng)用決定下層架構(gòu)咆畏,下層架構(gòu)又反過來制約或促進上層應(yīng)用的關(guān)系南捂。傳統(tǒng)企業(yè)的特點在于他們?nèi)匀贿\行著大量傳統(tǒng)應(yīng)用,這些應(yīng)用很多都是上個世紀的產(chǎn)品旧找,它們并非為云環(huán)境所設(shè)計溺健,簡單的把它們搬遷到公有云模式中會導致很多技術(shù)上的困難。
在公有云模式中有兩個重要的特點:一個是資源池化钮蛛,一個是應(yīng)用程序需要能容忍基礎(chǔ)架構(gòu)的失敗鞭缭。
資源池化是公有云去差異化的一個重要設(shè)計,它主張租戶共享資源池魏颓,資源獲取的過程不可定制岭辣。但傳統(tǒng)應(yīng)用在很多場合是需要能夠進行差異化定制的。例如對于IO密集的傳統(tǒng)應(yīng)用甸饱,用戶可能期望虛擬機的根磁盤(裝有操作系統(tǒng)的磁盤)放在NFS上沦童,數(shù)據(jù)磁盤通過專門的存儲網(wǎng)絡(luò)放在高速的IP SAN上面。這就要求對創(chuàng)建虛擬機的過程可以定制叹话,用戶可以選擇不同的磁盤分配策略和不同的網(wǎng)絡(luò)偷遗。又比如Citrix的遠程桌面XenDesktop,它需要多租戶即獨享私有網(wǎng)絡(luò)又共享扁平網(wǎng)絡(luò)的拓撲驼壶,這就要求類似于Amazon VPC + Classic EC2的網(wǎng)絡(luò)模型氏豌。當企業(yè)業(yè)務(wù)由眾多傳統(tǒng)應(yīng)用構(gòu)成時,這種差異性的定制需求會進一步加強热凹。公有云提供商也認識到了這種需求泵喘,并在有限范圍內(nèi)修改以滿足客戶。例如Amazon VPC發(fā)布最初是不支持靜態(tài)IP(static IP)的般妙,后來在用戶的強烈要求下才加入涣旨,但它的Classic EC2是不可能在多租戶環(huán)境下支持這種功能的。去差異化是公有云的成功法寶股冗,它無法也不會為了迎合傳統(tǒng)程序而實現(xiàn)各種定制功能。
在公有云中運行良好的應(yīng)用都是能夠在應(yīng)用層面容忍一定程度的基礎(chǔ)架構(gòu)失敽万健(比如虛擬機崩潰止状,網(wǎng)絡(luò)失聯(lián)等)的。公有云廠商一直在反復向客戶強調(diào)基礎(chǔ)架構(gòu)是會失效的攒霹,也提供多種手段幫助用戶設(shè)計failover的應(yīng)用怯疤,而這恰恰是傳統(tǒng)應(yīng)用的死穴,因為它們很多是單機應(yīng)用催束,對下層架構(gòu)的穩(wěn)定性要求很高集峦。所以大量傳統(tǒng)企業(yè)因為穩(wěn)定性而仍然依賴IOE(IBM、Oracle、EMC)的架構(gòu)塔淤。企業(yè)客戶在選擇IaaS產(chǎn)品時摘昌,往往要求IaaS能夠在架構(gòu)層面提供容錯手段,比如虛擬機級別的高可靠高蜂、網(wǎng)絡(luò)層面的高可靠和冗余聪黎。這種由傳統(tǒng)應(yīng)用帶來的需求不是云友好(cloud-friendly)和云感知(cloud-aware)的,公有云模式是不會對他們做出過多考慮的备恤。
這也是為什么對于服務(wù)提供商來說稿饰,私有云可以很容易照搬公有云模式,但在面對傳統(tǒng)企業(yè)客戶的需求時露泊,簡單復制公有云模式是不夠的——因為我們面對的是一個強大的喉镰、不可更改的傳統(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)侣姆,從事開源虛擬機項目XEN的開發(fā),為社區(qū)共享了多個功能脖咐,例如XEN中E100網(wǎng)卡模擬器铺敌,XEN/IA64虛擬BIOS對Windows的支持等。同時也共享了大量bug修復的補丁屁擅。2010年赴硅谷加入Cloud.com(后被Citrix收購)偿凭,從事CloudStack的開發(fā)工作,其間多次作為CloudStack代表參與客戶私有云項目的設(shè)計和部署派歌。在從Citrix退出后弯囊,和搭檔一起創(chuàng)立ZStack。