在雲計算生态系統中(zhōng),有(yǒu)兩種類型的用(yòng)戶需要使用(yòng)雲計算資源:傳統型(Traditional IT applications)和在互聯網大潮下逐漸崛起雲計算應用(yòng)型(Cloud-aware applications)。國(guó)外廣為(wèi)流傳的一個比喻是:在傳統服務(wù)模式下,可(kě)以想象服務(wù)器就是IT的寵物(wù)(Pets),給他(tā)們取名(míng)字,精(jīng)心撫養長(cháng)大,當他(tā)們生病了,你得修複他(tā)們;在新(xīn)形态的應用(yòng)服務(wù)模型中(zhōng),虛拟機被看做是農場中(zhōng)的公(gōng)牛(Cattle),名(míng)字通常都是編号,當他(tā)們生病了,你就殺掉他(tā),用(yòng)一頭新(xīn)牛代替。VMWare和OpenStack的雲計算Vision、功能(néng)、特點對比正式這個戰争或者說趨勢的一個生動寫照。未來的應用(yòng)架構應該像對待農場中(zhōng)的公(gōng)牛一樣:VMware的“保養”、保護虛拟機的各種功能(néng)比較雲計算型應用(yòng)模式可(kě)能(néng)會逐漸變得越來越不那麽重要。本文(wén)在國(guó)外廣泛流傳,熱議不斷,中(zhōng)國(guó)社區(qū)意譯分(fēn)享給大家,歡迎積極讨論。
本文(wén)中(zhōng)内容具(jù)體(tǐ)包括以下幾個部分(fēn):設計、功能(néng)集、客戶用(yòng)例和價值,每點都以十分(fēn)來評價,最終我們将以總分(fēn)來決定赢家。
第一回合:設計
VMware軟件套件是自底向上的架構,下端邊界為(wèi)虛拟機管理(lǐ)器。像VMware的vSphere和vCloud director産(chǎn)品都是依賴于免費的ESX(i) 虛拟機管理(lǐ)器, ESX(i)虛拟機管理(lǐ)器為(wèi)他(tā)們提供了非常優秀的部署架構。本身VMware的軟件套件也是經過全面測試過的,并且都有(yǒu)單一部署框架。總的來說,VMware的産(chǎn)品由于其架構的健壯性,很(hěn)多(duō)高規格用(yòng)戶在多(duō)數據中(zhōng)心規模的環境中(zhōng)都有(yǒu)使用(yòng)。換句話說,VMware的軟件系統是封閉的,并且軟件的發展路線(xiàn)是完全遵循VMware自己的發展目标,用(yòng)戶或消費者在此方面沒有(yǒu)任何控制權。
OpenStack作(zuò)為(wèi)一個開源系統,沒有(yǒu)任何一家單獨的公(gōng)司在控制OpenStack的發展路線(xiàn)。本身OpenStack是年輕的,還不滿三周歲,但是他(tā)卻具(jù)有(yǒu)巨大的市場動力,與此同時,很(hěn)多(duō)大公(gōng)司都在支持OpenStack發展(詳見:OpenStack支持者)。有(yǒu)了如此多(duō)公(gōng)司的資源投入,OpenStack的發展是多(duō)元化的。然而這也帶來了問題,就是OpenStack部署和架構的實施和維護成本較比VMware有(yǒu)了陡然提高,與此同時,由于相對快速的版本更新(xīn)速度,技(jì )術支持文(wén)檔不能(néng)跟上産(chǎn)品的腳步。
VMware在設計方面稍占優勢,這源于它優秀的文(wén)檔資料以及便捷易用(yòng)的部署和管理(lǐ)接口。OpenStack在這個方面也在緊追不舍,并且在硬件和虛拟機管理(lǐ)層其保持了它自身的靈活性,更是提供了多(duō)廠商(shāng)支持。
第二回合:功能(néng)
VMware vMotion
vMotion是vSphere DRS、DPM和主機維護三大功能(néng)的合集。其中(zhōng)虛拟機動态遷移允許将一台虛拟機在零關機的情況下由一台宿主機遷移到另一台上,這原本是需要共享存儲的支持的,但在vSphere 5.1中(zhōng),VMware已經不需要通過共享存儲實現動态遷移了。當一台虛拟機由一個宿主機遷移到另一個上時,虛拟機的内存狀态和數據都要同步遷移過去。如果是共享存儲的情況,實際上數據是不需要進行遷移的,隻需要變化指向數據存儲的鏈接而已。這在加速了遷移速度的同時也減少了在複制過程中(zhōng)網絡的負載。
OpenStack 動态遷移
KVM動态遷移允許一個虛拟機由一個虛拟機管理(lǐ)器遷移到另一個,說的詳細一點,你可(kě)以來來回回将一台虛拟機在AMD架構主機與Intel架構主機上進行遷移,但是需要注意的是,64位的虛拟主機隻能(néng)被遷移到64位的宿主機上,但是32位的則有(yǒu)32位和64位兩種選擇。在動态遷移過程中(zhōng),不能(néng)再對虛拟機進行操作(zuò),但是虛拟機内的用(yòng)戶還是可(kě)以在虛拟機内部繼續進行工(gōng)作(zuò)的。KVM主要還是依賴于共享存儲,某種程度上,這相對來說是需要一些資金投入的。
動态遷移需求:
虛拟機存儲需要放在分(fēn)布式文(wén)件系統之上,如NFS或在GlusterFSLibvirt必須要開啓listen flag每一個計算節點(虛拟機管理(lǐ)器)都必須在同一個網絡/子網當中(zhōng)計算節點間的認證必須提前完成配置DFS的挂載節點在每一個計算節點必須保持一緻
OpenStack塊存儲遷移
在OpenStack當中(zhōng),KVM支持塊存儲遷移,這也就是說虛拟機遷移不是必須需要共享存儲的支持的。在塊遷移的場景下,虛拟機的内存狀态與數據都将被遷移,但是遷移操作(zuò)也需要消耗兩端的CPU資源并且操作(zuò)花(huā)費時間較比共享存儲來說要長(cháng)一些。在某些用(yòng)戶場景當中(zhōng),如果我們比較關注于主機的可(kě)維護性,并且不想花(huā)費過多(duō)經費,那麽應用(yòng)塊存儲遷移将是好的解決方案。同時,如果在沒有(yǒu)共享存儲的環境中(zhōng),我們想對計算節點進行内核維護、安(ān)全升級,那麽保證虛拟機服務(wù)不被打斷,塊存儲遷移也是理(lǐ)想選擇。
用(yòng)戶場景:
用(yòng)戶沒有(yǒu)分(fēn)布式文(wén)件系統,可(kě)能(néng)是由于企業的資金支持或者網絡延遲,但是卻想實現虛拟機的高可(kě)用(yòng)性。
VMware DRS 和 DPM
基于vMotion,DRS可(kě)以動态監控虛機機及宿主機的當前使用(yòng)狀況,并且為(wèi)宿主機的負載均衡提供支持。
用(yòng)戶場景:
部署階段:可(kě)以對監控虛拟機執行自定義自動化腳本監控階段:DRS可(kě)以在ESX(i)主機上分(fēn)布式部署虛拟機,并且持續監控活躍虛拟機和可(kě)用(yòng)資源,以動态遷移虛拟機來實現資源利用(yòng)率最大化
基于vMotion, DPM将虛拟機從低負載宿主機遷移掉,并且關閉以達到減少電(diàn)能(néng)損耗。當負載增長(cháng),DPM将宿主機重啓,并且部署新(xīn)的虛拟機以滿足負載需要。
OpenStack 調度器
OpenStack包含了對于compute和volume的調度器,通過一系列的管理(lǐ)員設定的規則參數和過濾器,OpenStack調度器将虛拟機部署到合适的宿主機上。在過濾器方面,調度器是非常靈活的,用(yòng)戶可(kě)以自己完成JSON格式的過濾器,并且過濾器還包含很(hěn)多(duō)預定義的過濾器。雖然OpenStack調度器非常靈活,但是還是不能(néng)完全替代DRS,原因如下:
VMware High Availability(高可(kě)用(yòng))
在vSphere中(zhōng),虛拟機級别的高可(kě)用(yòng)性是允許在虛拟機或者ESX(i)主機出錯時,在不同宿主機部署相同的虛拟機。這裏不要和容錯(FT)機制混淆,高可(kě)用(yòng)的意義在于當有(yǒu)一些東西出錯了,可(kě)以在一定時間内自我修複。高可(kě)用(yòng)是在硬件出問題的時候保證虛拟機的正常個工(gōng)作(zuò),如果真的出錯了,那麽隻能(néng)在不同的ESX(i)主機上啓動虛拟機,這也可(kě)能(néng)造成服務(wù)的中(zhōng)斷。
OpenStack High Availability(高可(kě)用(yòng))
目前并沒有(yǒu)官方聲明OpenStack支持虛拟機級别的高可(kě)用(yòng)性,這個特性在Folsom版本被提出,但是後續又(yòu)被放棄了。目前OpenStack有(yǒu)一個孵化項目Evacuate, 其作(zuò)用(yòng)是為(wèi)OpenStack提供虛拟機級别高可(kě)用(yòng)支持。
VMware Fault Tolerance(容錯)
VMware容錯機制是通過監控虛拟機的狀态和所有(yǒu)變化,将這些變化同步到第二台備份ESX(i)服務(wù)器之上。容錯的概念在于無論是主還是從宿主機出現問題,隻要一方能(néng)正常工(gōng)作(zuò),那麽宿主機上的虛拟機都保持正常工(gōng)作(zuò)。抛開營銷中(zhōng)的噱頭,這種機制還是無法解決虛拟機中(zhōng)的應用(yòng)程序崩潰,因為(wèi)一旦一方崩潰,則這個變化也會同步到從節點,當你停止虛拟機的服務(wù)去修複它,從節點也會同樣停止服務(wù)。所以這個機制隻能(néng)保證單點失效的問題不再出現,而真正的應用(yòng)層面的容錯則需要MSCS或者WCS來解決。考慮到其他(tā)方面如最高資源使用(yòng)、内存、硬盤、CPU、帶寬的容錯,這些方面都有(yǒu)局限性,并且是使用(yòng)量相對比較小(xiǎo)的功能(néng)。如實現這些則這需要雙倍的内存,由于内存不能(néng)跨主機複制,并且還需要CPU lockstepping去同步每一個CPU指令。這将導緻隻有(yǒu)單獨一個虛拟CPU被容錯機制所監控。
OpenStack Fault Tolerance(容錯)
在OpenStack中(zhōng)沒有(yǒu)針對于容錯的功能(néng),并且截至目前也沒有(yǒu)計劃去完成這些功能(néng)。未來,KVM也不再支持鏡像操作(zuò)功能(néng)。
我們可(kě)以看到,在功能(néng)的支持方面和功能(néng)細節,OpenStack與VMware還是有(yǒu)差距的,但是這對OpenStack還是有(yǒu)優勢的,因為(wèi)較比VMware的昂貴價格,OpenStack免費、開放的優勢顯現出來。VMware高投入帶來的功能(néng),OpenStack大部分(fēn)可(kě)以免費提供給客戶。
從VMware在功能(néng)方面的領先可(kě)以看出,VMware還在繼續研發除了vMotion、高可(kě)用(yòng)、容錯以外其他(tā)的新(xīn)功能(néng)去保護他(tā)們的虛拟機;OpenStack一方面跟随VMware的腳步,另一方面他(tā)們投入精(jīng)力在支持更多(duō)硬件廠商(shāng)解決方案的上面。
第三回合:用(yòng)例
在我們評價上述功能(néng)的價值之前,首先我們需要考慮用(yòng)例問題。在雲計算生态系統中(zhōng),有(yǒu)兩種類型的用(yòng)戶需要使用(yòng)雲計算資源:傳統型和雲計算應用(yòng)型。雲計算應用(yòng)型用(yòng)戶将自己處理(lǐ)HA和DR策略,而傳統型用(yòng)戶将依賴于雲平台提供的HA和DR。看下面出自VMware雲計算架構文(wén)章的圖表。
雲計算型應用(yòng)共同特點
分(fēn)布式無狀态、軟狀态失效切換在應用(yòng)端擴展性在應用(yòng)端
傳統型應用(yòng)共同特點
客戶端-服務(wù)器架構難以橫向擴展失效切換在服務(wù)端擴展性在服務(wù)端
傳統型應用(yòng)将需要如FT、VM級别的高可(kě)用(yòng)性、自動病毒掃描等功能(néng),而雲計算型應用(yòng)則不需要,當一台虛拟機出問題後,新(xīn)的一台虛拟機将替代它。
Pet vs. Cattle
換一種思路去想這件事,那就可(kě)以從微軟 William Baker的出名(míng)文(wén)章 Pets vs. Cattle 的比喻看出OpenStack和Vmware的關系。
比喻是這樣說的:在傳統服務(wù)模式下,你可(kě)以想象你的主機就是你的寵物(wù),你給他(tā)們取名(míng)字,比如dusty、cern等等,他(tā)們被精(jīng)心撫養長(cháng)大。當他(tā)們生病了,你得修複他(tā)們。在雲計算型應用(yòng)服務(wù)模型中(zhōng),虛拟機被看做是農場中(zhōng)的公(gōng)牛,他(tā)們的名(míng)字通常都是編号,牛和牛長(cháng)得也差不多(duō),當他(tā)們生病了,你就殺掉他(tā),用(yòng)一頭新(xīn)牛代替。
未來的雲應用(yòng)架構應該像對待農場中(zhōng)的公(gōng)牛一樣。VMware的保養、保護虛拟機的各種功能(néng)較比雲計算型應用(yòng)模式變得越來越不那麽重要了。
在這輪比賽中(zhōng),OpenStack追了上來,雖然VMware有(yǒu)很(hěn)多(duō)OpenStack所不具(jù)有(yǒu)的功能(néng),但是針對雲計算型應用(yòng),這些功能(néng)變得不那麽重要。未來,你很(hěn)可(kě)能(néng)為(wèi)那些你用(yòng)不上的、不可(kě)控的VMware添加功能(néng)買單。
第四回合:價值
現在是最後一回合,我們将決定比賽結果。雖然,OpenStack還是VMware更有(yǒu)價值,這個問題并沒有(yǒu)很(hěn)清晰的答(dá)案,并且答(dá)案也取決于部署規模。雖然OpenStack是免費使用(yòng)的,但是他(tā)需要有(yǒu)大量工(gōng)程資源和領域專家才行,并且他(tā)還需要很(hěn)多(duō)架構和搭建方面的工(gōng)作(zuò),因為(wèi)它支持很(hěn)多(duō)部署場景,并且安(ān)裝(zhuāng)過程都不盡相同。VMware則需要花(huā)費一些經費購(gòu)買權限,并且相對來說更加容易安(ān)裝(zhuāng)和運行,另外較比命令行,VMware則學(xué)習成本更低一些。
總得來說,OpenStack入門門檻較高,但是随着項目規模的擴大,你将從中(zhōng)受益,因為(wèi)不必支付高額的版權費用(yòng)。VMware雖然在小(xiǎo)規模安(ān)裝(zhuāng)時相對容易,但是随着規模擴大,事情就變了。這就是說,随着雲應用(yòng)大規模化,大家也更加熟悉OpenStack,那麽OpenStack的入門門檻就低得多(duō)了。
在雲計算領域,OpenStack和VMware這兩位重量級玩家,VMware在功能(néng)和架構上稍微領先,但是OpenStack作(zuò)為(wèi)一隻弱旅,卻在第三回合迎頭趕上并在最後一回合給予對方毀滅性打擊。