OpenStack中國(guó)社區(qū)編者按:在云計(jì)算生態(tài)系統(tǒng)中,有兩種類(lèi)型的用戶(hù)需要使用云計(jì)算資源:傳統(tǒng)型(Traditional IT applications)和在互聯(lián)網(wǎng)大潮下逐漸崛起云計(jì)算應(yīng)用型(Cloud-aware applications)。國(guó)外廣為流傳的一個(gè)比喻是:在傳統(tǒng)服務(wù)模式下,可以想象服務(wù)器就是IT的寵物(Pets),給他們?nèi)∶郑膿狃B(yǎng)長(zhǎng)大,當(dāng)他們生病了,你得修復(fù)他們;在新形態(tài)的應(yīng)用服務(wù)模型中,虛擬機(jī)被看做是農(nóng)場(chǎng)中的公牛(Cattle),名字通常都是編號(hào),當(dāng)他們生病了,你就殺掉他,用一頭新牛代替。VMWare和OpenStack的云計(jì)算Vision、功能、特點(diǎn)對(duì)比正式這個(gè)戰(zhàn)爭(zhēng)或者說(shuō)趨勢(shì)的一個(gè)生動(dòng)寫(xiě)照。未來(lái)的應(yīng)用架構(gòu)應(yīng)該像對(duì)待農(nóng)場(chǎng)中的公牛一樣:VMware的“保養(yǎng)”、保護(hù)虛擬機(jī)的各種功能較比云計(jì)算型應(yīng)用模式可能會(huì)逐漸變得越來(lái)越不那么重要。本文在國(guó)外廣泛流傳,熱議不斷,中國(guó)社區(qū)意譯分享給大家,歡迎積極討論。本文之前發(fā)表在中國(guó)社區(qū)網(wǎng)站,各大媒體廣泛轉(zhuǎn)載,評(píng)論也很多,現(xiàn)在發(fā)給中國(guó)社區(qū)微信朋友,希望沒(méi)看的朋友不要錯(cuò)過(guò):)
全文如下:
在 Cloud領(lǐng)域,我們討論最多的就是VMware與OpenStack的對(duì)比。事實(shí)上,這也是那些想使用OpenStack的人們熱議的話(huà)題。我已經(jīng)在 SF Bay OpenStack會(huì)議中多次針對(duì)這個(gè)話(huà)題做了討論,會(huì)議中很多朋友都希望我把這些討論寫(xiě)下來(lái)。為了讓讀者能夠更好地了解本文的內(nèi)容,我決定通過(guò)兩大云計(jì)算產(chǎn)品在數(shù)據(jù)中心應(yīng)用的關(guān)鍵點(diǎn)對(duì)比的方式去完成本文的內(nèi)容,內(nèi)容可能包括:開(kāi)放與非開(kāi)放的軟件系統(tǒng),企業(yè)級(jí)傳統(tǒng)應(yīng)用與云計(jì)算應(yīng)用,自由軟件與授權(quán)軟件,通過(guò)嚴(yán)格功能測(cè)試的產(chǎn)品與開(kāi)放性功能的產(chǎn)品等。
本文中內(nèi)容具體包括以下幾個(gè)部分:設(shè)計(jì)、功能集、客戶(hù)用例和價(jià)值,每點(diǎn)都以十分來(lái)評(píng)價(jià),最終我們將以總分來(lái)決定贏家。
第一回合:設(shè)計(jì)
VMware 軟件套件是自底向上的架構(gòu),下端邊界為虛擬機(jī)管理器。像VMware的vSphere和vCloud director產(chǎn)品都是依賴(lài)于免費(fèi)的ESX(i) 虛擬機(jī)管理器, ESX(i)虛擬機(jī)管理器為他們提供了非常優(yōu)秀的部署架構(gòu)。本身VMware的軟件套件也是經(jīng)過(guò)全面測(cè)試過(guò)的,并且都有單一部署框架。總的來(lái)說(shuō),VMware的產(chǎn)品由于其架構(gòu)的健壯性,很多高規(guī)格用戶(hù)在多數(shù)據(jù)中心規(guī)模的環(huán)境中都有使用。換句話(huà)說(shuō),VMware的軟件系統(tǒng)是封閉的,并且軟件的發(fā)展路線(xiàn)是完全遵循VMware自己的發(fā)展目標(biāo),用戶(hù)或消費(fèi)者在此方面沒(méi)有任何控制權(quán)。
OpenStack作為一個(gè)開(kāi)源系統(tǒng),沒(méi)有任何一家單獨(dú)的公司在控制OpenStack的發(fā)展路線(xiàn)。本身OpenStack是年輕的,還不滿(mǎn)三周歲,但是他卻具有巨大的市場(chǎng)動(dòng)力,與此同時(shí),很多大公司都在支持OpenStack發(fā)展(詳見(jiàn):OpenStack支持者)。有了如此多公司的資源投入,OpenStack的發(fā)展是多元化的。然而這也帶來(lái)了問(wèn)題,就是OpenStack部署和架構(gòu)的實(shí)施和維護(hù)成本較比VMware有了陡然提高,與此同時(shí),由于相對(duì)快速的版本更新速度,技術(shù)支持文檔不能跟上產(chǎn)品的腳步。
VMware在設(shè)計(jì)方面稍占優(yōu)勢(shì),這源于它優(yōu)秀的文檔資料以及便捷易用的部署和管理接口。OpenStack在這個(gè)方面也在緊追不舍,并且在硬件和虛擬機(jī)管理層其保持了它自身的靈活性,更是提供了多廠商支持。
第二回合:功能
VMware vMotion
vMotion 是vSphere DRS、DPM和主機(jī)維護(hù)三大功能的合集。其中虛擬機(jī)動(dòng)態(tài)遷移允許將一臺(tái)虛擬機(jī)在零關(guān)機(jī)的情況下由一臺(tái)宿主機(jī)遷移到另一臺(tái)上,這原本是需要共享存儲(chǔ)的支持的,但在vSphere 5.1中,VMware已經(jīng)不需要通過(guò)共享存儲(chǔ)實(shí)現(xiàn)動(dòng)態(tài)遷移了。當(dāng)一臺(tái)虛擬機(jī)由一個(gè)宿主機(jī)遷移到另一個(gè)上時(shí),虛擬機(jī)的內(nèi)存狀態(tài)和數(shù)據(jù)都要同步遷移過(guò)去。如果是共享存儲(chǔ)的情況,實(shí)際上數(shù)據(jù)是不需要進(jìn)行遷移的,只需要變化指向數(shù)據(jù)存儲(chǔ)的鏈接而已。這在加速了遷移速度的同時(shí)也減少了在復(fù)制過(guò)程中網(wǎng)絡(luò)的負(fù)載。
OpenStack 動(dòng)態(tài)遷移
KVM 動(dòng)態(tài)遷移允許一個(gè)虛擬機(jī)由一個(gè)虛擬機(jī)管理器遷移到另一個(gè),說(shuō)的詳細(xì)一點(diǎn),你可以來(lái)來(lái)回回將一臺(tái)虛擬機(jī)在AMD架構(gòu)主機(jī)與Intel架構(gòu)主機(jī)上進(jìn)行遷移,但是需要注意的是,64位的虛擬主機(jī)只能被遷移到64位的宿主機(jī)上,但是32位的則有32位和64位兩種選擇。在動(dòng)態(tài)遷移過(guò)程中,不能再對(duì)虛擬機(jī)進(jìn)行操作,但是虛擬機(jī)內(nèi)的用戶(hù)還是可以在虛擬機(jī)內(nèi)部繼續(xù)進(jìn)行工作的。KVM主要還是依賴(lài)于共享存儲(chǔ),某種程度上,這相對(duì)來(lái)說(shuō)是需要一些資金投入的。
動(dòng)態(tài)遷移需求:
虛擬機(jī)存儲(chǔ)需要放在分布式文件系統(tǒng)之上,如NFS或在GlusterFS
Libvirt必須要開(kāi)啟listen flag
每一個(gè)計(jì)算節(jié)點(diǎn)(虛擬機(jī)管理器)都必須在同一個(gè)網(wǎng)絡(luò)/子網(wǎng)當(dāng)中
計(jì)算節(jié)點(diǎn)間的認(rèn)證必須提前完成配置
DFS的掛載節(jié)點(diǎn)在每一個(gè)計(jì)算節(jié)點(diǎn)必須保持一致
OpenStack塊存儲(chǔ)遷移
在 OpenStack當(dāng)中,KVM支持塊存儲(chǔ)遷移,這也就是說(shuō)虛擬機(jī)遷移不是必須需要共享存儲(chǔ)的支持的。在塊遷移的場(chǎng)景下,虛擬機(jī)的內(nèi)存狀態(tài)與數(shù)據(jù)都將被遷移,但是遷移操作也需要消耗兩端的CPU資源并且操作花費(fèi)時(shí)間較比共享存儲(chǔ)來(lái)說(shuō)要長(zhǎng)一些。在某些用戶(hù)場(chǎng)景當(dāng)中,如果我們比較關(guān)注于主機(jī)的可維護(hù)性,并且不想花費(fèi)過(guò)多經(jīng)費(fèi),那么應(yīng)用塊存儲(chǔ)遷移將是好的解決方案。同時(shí),如果在沒(méi)有共享存儲(chǔ)的環(huán)境中,我們想對(duì)計(jì)算節(jié)點(diǎn)進(jìn)行內(nèi)核維護(hù)、安全升級(jí),那么保證虛擬機(jī)服務(wù)不被打斷,塊存儲(chǔ)遷移也是理想選擇。
用戶(hù)場(chǎng)景:
用戶(hù)沒(méi)有分布式文件系統(tǒng),可能是由于企業(yè)的資金支持或者網(wǎng)絡(luò)延遲,但是卻想實(shí)現(xiàn)虛擬機(jī)的高可用性。
VMware DRS 和 DPM
基于vMotion,DRS可以動(dòng)態(tài)監(jiān)控虛機(jī)機(jī)及宿主機(jī)的當(dāng)前使用狀況,并且為宿主機(jī)的負(fù)載均衡提供支持。
用戶(hù)場(chǎng)景:
部署階段:可以對(duì)監(jiān)控虛擬機(jī)執(zhí)行自定義自動(dòng)化腳本
監(jiān)控階段:DRS可以在ESX(i)主機(jī)上分布式部署虛擬機(jī),并且持續(xù)監(jiān)控活躍虛擬機(jī)和可用資源,以動(dòng)態(tài)遷移虛擬機(jī)來(lái)實(shí)現(xiàn)資源利用率最大化
基于vMotion, DPM將虛擬機(jī)從低負(fù)載宿主機(jī)遷移掉,并且關(guān)閉以達(dá)到減少電能損耗。當(dāng)負(fù)載增長(zhǎng),DPM將宿主機(jī)重啟,并且部署新的虛擬機(jī)以滿(mǎn)足負(fù)載需要。
OpenStack 調(diào)度器
OpenStack 包含了對(duì)于compute和volume的調(diào)度器,通過(guò)一系列的管理員設(shè)定的規(guī)則參數(shù)和過(guò)濾器,OpenStack調(diào)度器將虛擬機(jī)部署到合適的宿主機(jī)上。在過(guò)濾器方面,調(diào)度器是非常靈活的,用戶(hù)可以自己完成JSON格式的過(guò)濾器,并且過(guò)濾器還包含很多預(yù)定義的過(guò)濾器。雖然OpenStack調(diào)度器非常靈活,但是還是不能完全替代DRS,原因如下:
調(diào)度器用于選擇哪個(gè)宿主機(jī)進(jìn)行虛擬機(jī)部署的靜態(tài)參考數(shù)據(jù)來(lái)源于Nova的數(shù)據(jù)庫(kù)。換句話(huà)說(shuō),就是發(fā)現(xiàn)宿主機(jī)已經(jīng)有了4臺(tái)虛擬機(jī)了,那么我們需要選擇一個(gè)新的宿主機(jī)去部署下一臺(tái)虛擬機(jī)。
調(diào)度器只能在虛擬機(jī)部署階段影響部署的位置,一旦部署完成,虛擬機(jī)運(yùn)行后則無(wú)法挪動(dòng)虛擬機(jī)了。如果需要基于動(dòng)態(tài)數(shù)據(jù)進(jìn)行調(diào)度,那么調(diào)度器需要與外部監(jiān)控解決方案如Nagios合作。總而言之,目前OpenStack調(diào)度器將只會(huì)對(duì)部署虛擬機(jī)環(huán)節(jié)有影響。
VMware High Availability(高可用)
在 vSphere中,虛擬機(jī)級(jí)別的高可用性是允許在虛擬機(jī)或者ESX(i)主機(jī)出錯(cuò)時(shí),在不同宿主機(jī)部署相同的虛擬機(jī)。這里不要和容錯(cuò)(FT)機(jī)制混淆,高可用的意義在于當(dāng)有一些東西出錯(cuò)了,可以在一定時(shí)間內(nèi)自我修復(fù)。高可用是在硬件出問(wèn)題的時(shí)候保證虛擬機(jī)的正常個(gè)工作,如果真的出錯(cuò)了,那么只能在不同的 ESX(i)主機(jī)上啟動(dòng)虛擬機(jī),這也可能造成服務(wù)的中斷。
OpenStack High Availability(高可用)
目前并沒(méi)有官方聲明OpenStack支持虛擬機(jī)級(jí)別的高可用性,這個(gè)特性在Folsom版本被提出,但是后續(xù)又被放棄了。目前OpenStack有一個(gè)孵化項(xiàng)目Evacuate, 其作用是為OpenStack提供虛擬機(jī)級(jí)別高可用支持。
VMware Fault Tolerance(容錯(cuò))
VMware容錯(cuò)機(jī)制是通過(guò)監(jiān)控虛擬機(jī)的狀態(tài)和所有變化,將這些變化同步到第二臺(tái)備份ESX(i)服務(wù)器之上。容錯(cuò)的概念在于無(wú)論是主還是從宿主機(jī)出現(xiàn)問(wèn)題,只要一方能正常工作,那么宿主機(jī)上的虛擬機(jī)都保持正常工作。拋開(kāi)營(yíng)銷(xiāo)中的噱頭,這種機(jī)制還是無(wú)法解決虛擬機(jī)中的應(yīng)用程序崩潰,因?yàn)橐坏┮环奖罎ⅲ瑒t這個(gè)變化也會(huì)同步到從節(jié)點(diǎn),當(dāng)你停止虛擬機(jī)的服務(wù)去修復(fù)它,從節(jié)點(diǎn)也會(huì)同樣停止服務(wù)。所以這個(gè)機(jī)制只能保證單點(diǎn)失效的問(wèn)題不再出現(xiàn),而真正的應(yīng)用層面的容錯(cuò)則需要MSCS或者WCS來(lái)解決。考慮到其他方面如最高資源使用、內(nèi)存、硬盤(pán)、CPU、帶寬的容錯(cuò),這些方面都有局限性,并且是使用量相對(duì)比較小的功能。如實(shí)現(xiàn)這些則這需要雙倍的內(nèi)存,由于內(nèi)存不能跨主機(jī)復(fù)制,并且還需要CPU lockstepping去同步每一個(gè)CPU指令。這將導(dǎo)致只有單獨(dú)一個(gè)虛擬CPU被容錯(cuò)機(jī)制所監(jiān)控。
OpenStack Fault Tolerance(容錯(cuò))
在OpenStack中沒(méi)有針對(duì)于容錯(cuò)的功能,并且截至目前也沒(méi)有計(jì)劃去完成這些功能。未來(lái),KVM也不再支持鏡像操作功能。
我們可以看到,在功能的支持方面和功能細(xì)節(jié),OpenStack與VMware還是有差距的,但是這對(duì)OpenStack還是有優(yōu)勢(shì)的,因?yàn)檩^比 VMware的昂貴價(jià)格,OpenStack免費(fèi)、開(kāi)放的優(yōu)勢(shì)顯現(xiàn)出來(lái)。VMware高投入帶來(lái)的功能,OpenStack大部分可以免費(fèi)提供給客戶(hù)。
從VMware在功能方面的領(lǐng)先可以看出,VMware還在繼續(xù)研發(fā)除了vMotion、高可用、容錯(cuò)以外其他的新功能去保護(hù)他們的虛擬機(jī);OpenStack一方面跟隨VMware的腳步,另一方面他們投入精力在支持更多硬件廠商解決方案的上面。
第三回合:用例
在我們?cè)u(píng)價(jià)上述功能的價(jià)值之前,首先我們需要考慮用例問(wèn)題。在云計(jì)算生態(tài)系統(tǒng)中,有兩種類(lèi)型的用戶(hù)需要使用云計(jì)算資源:傳統(tǒng)型和云計(jì)算應(yīng)用型。云計(jì)算應(yīng)用型用戶(hù)將自己處理HA和DR策略,而傳統(tǒng)型用戶(hù)將依賴(lài)于云平臺(tái)提供的HA和DR。看下面出自VMware云計(jì)算架構(gòu)文章的圖表。
云計(jì)算型應(yīng)用共同特點(diǎn)
分布式
無(wú)狀態(tài)、軟狀態(tài)
失效切換在應(yīng)用端
擴(kuò)展性在應(yīng)用端
傳統(tǒng)型應(yīng)用共同特點(diǎn)
客戶(hù)端-服務(wù)器架構(gòu)
難以橫向擴(kuò)展
失效切換在服務(wù)端
擴(kuò)展性在服務(wù)端
傳統(tǒng)型應(yīng)用將需要如FT、VM級(jí)別的高可用性、自動(dòng)病毒掃描等功能,而云計(jì)算型應(yīng)用則不需要,當(dāng)一臺(tái)虛擬機(jī)出問(wèn)題后,新的一臺(tái)虛擬機(jī)將替代它。
Pet vs. Cattle
換一種思路去想這件事,那就可以從微軟 William Baker的出名文章 Pets vs. Cattle 的比喻看出OpenStack和Vmware的關(guān)系。
比喻是這樣說(shuō)的:在傳統(tǒng)服務(wù)模式下,你可以想象你的主機(jī)就是你的寵物,你給他們?nèi)∶郑热鏳usty、cern等等,他們被精心撫養(yǎng)長(zhǎng)大。當(dāng)他們生病了,你得修復(fù)他們。在云計(jì)算型應(yīng)用服務(wù)模型中,虛擬機(jī)被看做是農(nóng)場(chǎng)中的公牛,他們的名字通常都是編號(hào),牛和牛長(zhǎng)得也差不多,當(dāng)他們生病了,你就殺掉他,用一頭新牛代替。
未來(lái)的云應(yīng)用架構(gòu)應(yīng)該像對(duì)待農(nóng)場(chǎng)中的公牛一樣。VMware的保養(yǎng)、保護(hù)虛擬機(jī)的各種功能較比云計(jì)算型應(yīng)用模式變得越來(lái)越不那么重要了。
在這輪比賽中,OpenStack追了上來(lái),雖然VMware有很多OpenStack所不具有的功能,但是針對(duì)云計(jì)算型應(yīng)用,這些功能變得不那么重要。未來(lái),你很可能為那些你用不上的、不可控的VMware添加功能買(mǎi)單。
第四回合:價(jià)值
現(xiàn)在是最后一回合,我們將決定比賽結(jié)果。雖然,OpenStack還是VMware更有價(jià)值,這個(gè)問(wèn)題并沒(méi)有很清晰的答案,并且答案也取決于部署規(guī)模。雖然OpenStack是免費(fèi)使用的,但是他需要有大量工程資源和領(lǐng)域?qū)<也判校⑶宜€需要很多架構(gòu)和搭建方面的工作,因?yàn)樗С趾芏嗖渴饒?chǎng)景,并且安裝過(guò)程都不盡相同。VMware則需要花費(fèi)一些經(jīng)費(fèi)購(gòu)買(mǎi)權(quán)限,并且相對(duì)來(lái)說(shuō)更加容易安裝和運(yùn)行,另外較比命令行,VMware則學(xué)習(xí)成本更低一些。
總得來(lái)說(shuō),OpenStack入門(mén)門(mén)檻較高,但是隨著項(xiàng)目規(guī)模的擴(kuò)大,你將從中受益,因?yàn)椴槐刂Ц陡哳~的版權(quán)費(fèi)用。VMware雖然在小規(guī)模安裝時(shí)相對(duì)容易,但是隨著規(guī)模擴(kuò)大,事情就變了。這就是說(shuō),隨著云應(yīng)用大規(guī)模化,大家也更加熟悉OpenStack,那么OpenStack的入門(mén)門(mén)檻就低得多了。
勝利者是:OpenStack
在云計(jì)算領(lǐng)域,OpenStack和VMware這兩位重量級(jí)玩家,VMware在功能和架構(gòu)上稍微領(lǐng)先,但是OpenStack作為一只弱旅,卻在第三回合迎頭趕上并在最后一回合給予對(duì)方毀滅性打擊。
后記
巧合的是,在寫(xiě)這篇文章的時(shí)候,VMware股價(jià)在一月29日一天就下跌了22%,市場(chǎng)分析稱(chēng)VMware缺乏清晰、優(yōu)秀的云計(jì)算策略。
我也了解為什么大家不同意我的給分,并且不明我為何在四輪對(duì)比中權(quán)重相同。說(shuō)實(shí)話(huà),這個(gè)評(píng)分不是那么完美,也沒(méi)有那么客觀,但是他有他的存在的意義,他讓這場(chǎng)云計(jì)算這場(chǎng)戰(zhàn)爭(zhēng)變得更加有趣,請(qǐng)大家積極評(píng)論并提出您的觀點(diǎn)。
譯者補(bǔ)充:針對(duì)此文章精華評(píng)論
OpenStack社區(qū):Toby Ford
這是一篇非常出色的深入挖掘兩者區(qū)別的文章,比如 Pets vs. Cattle的比喻就非常好,另外,我認(rèn)為評(píng)價(jià)標(biāo)準(zhǔn)應(yīng)該再增加幾個(gè)緯度。
在DRS與OS Scheduler對(duì)比中,目前,DRS對(duì)比OpenStack Scheduler是有優(yōu)勢(shì)的,因?yàn)镈RS采用各種關(guān)鍵指標(biāo)去決策部署虛擬機(jī)時(shí)的主機(jī)節(jié)點(diǎn)選擇,另外,DRS還會(huì)對(duì)虛擬機(jī)整個(gè)生命周期進(jìn)行監(jiān)控。
但是,DRS是封閉的,這些權(quán)重指標(biāo)都無(wú)法配置,舉一個(gè)簡(jiǎn)單的例子:如果在晚上很短的時(shí)間內(nèi),CPU的負(fù)載突然增高,這并不意味著我們需要將虛擬機(jī)遷移到另一臺(tái)宿主機(jī)之上,或者如果管理員知道在未來(lái)一段時(shí)間將會(huì)虛擬機(jī)將會(huì)發(fā)生一些問(wèn)題而又不想DRS介入其中,這就變得非常難辦了。相反,OpenStack Scheduler則會(huì)逐步與DRS拉開(kāi)距離,特別是當(dāng)其變得更加可擴(kuò)展。
針對(duì)為什么說(shuō)vMotion采用動(dòng)態(tài)/全生命周期地去維護(hù)虛擬機(jī)很重要:vMotion/DRS/HA都是處理傳統(tǒng)型虛擬機(jī)的必備功能,顯而易見(jiàn),這跟虛擬機(jī)的類(lèi)別其實(shí)沒(méi)什么關(guān)系,而我要說(shuō)的是vMotion/DRS 對(duì)于資源的最大化利用還是很重要的。
在我們的實(shí)際環(huán)境中,我就因?yàn)樾枰远x調(diào)度規(guī)則而不得不關(guān)閉了DRS,雖然我們自定義了調(diào)度規(guī)則,但是VMware的升級(jí)使這種自定義的調(diào)度器變得非常難以維護(hù)。
我想要說(shuō)的是,OpenStack不單單面向cattle模式的應(yīng)用場(chǎng)景,對(duì)于處理pets模式的虛擬機(jī)也會(huì)越來(lái)越好。