一、商業(yè)價值和技術(shù)原理
群集的意義何在?這就要從虛擬化的應(yīng)用場景來說起。Hyper-V屬于服務(wù)器虛擬化技術(shù),這和我們熟悉的Virtual Server是同一類型的,而服務(wù)器整合則是其主要的應(yīng)用場景之一。服務(wù)器整合可以極大地提升服務(wù)器的利用率(從原本的10~20%提升到60~70%)、可以很好地節(jié)省服務(wù)器采購的費(fèi)用、可以大大節(jié)省電費(fèi)和降溫費(fèi)用(每臺服務(wù)器每年的電費(fèi)和降溫費(fèi)用,超過服務(wù)器投資的1/3),更重要的是,服務(wù)器整合還可以大大提高服務(wù)響應(yīng)的速度。
然而服務(wù)器整合也會帶來一個潛在的問題。
在傳統(tǒng)IT架構(gòu)中,為了安全和穩(wěn)定性,物理服務(wù)器通常是專機(jī)專用,也就是說,一臺物理計算機(jī)只安裝一個關(guān)鍵業(yè)務(wù)程序。一旦物理硬件損壞,只會影響到該服務(wù)器上的關(guān)鍵業(yè)務(wù)。而采用服務(wù)器整合的虛擬化技術(shù)后,物理主機(jī)上可能同時運(yùn)行多臺虛機(jī)(每臺虛機(jī)里跑一個關(guān)鍵業(yè)務(wù)程序),多個虛機(jī)之間可以實(shí)現(xiàn)安全隔離,如附圖所示。這好比把所有的雞蛋放在一個籃子里,一旦物理主機(jī)硬件損壞,其上的多臺虛機(jī),及其中運(yùn)行的關(guān)鍵業(yè)務(wù)都會同時中斷。(圖1)
而Hyper-V則支持高可用性群集功能,不管是有計劃的主機(jī)維護(hù)、還是突發(fā)的硬件故障,虛機(jī)都可以在另外一臺主機(jī)上快速重啟,而且服務(wù)中斷的時間很短,幾乎可以忽略不計。盆盆自己做了總結(jié),Hyper-V主機(jī)群集有以下一些顯著特點(diǎn):
1. 內(nèi)置支持Hyper-V虛機(jī)
Windows Server 2008群集,現(xiàn)在已經(jīng)內(nèi)置支持Hyper-V虛機(jī),可以把虛機(jī)作為Windows Server 2008群集中的可用服務(wù)。
2. 支持多節(jié)點(diǎn)
到目前為止(Hyper-V Beta),可以最多支持16個節(jié)點(diǎn)的遇故障轉(zhuǎn)移群集(Failover Clustering)!我們既可以手動指定虛機(jī)遷移的目標(biāo)主機(jī),而當(dāng)意外故障發(fā)生時,系統(tǒng)會自動尋找具備充足內(nèi)存的目標(biāo)主機(jī),默認(rèn)是下一個主機(jī)。
3. 操作步驟簡單
Hyper-V基于Windows Server 2008群集功能,相對于Windows Server 2003,其設(shè)置的步驟非常簡單,甚至是不熟悉原理的用戶,也能輕松實(shí)現(xiàn)。
4. 極大減少停機(jī)時間
服務(wù)器停機(jī)有兩種情況:計劃維護(hù)和意外故障。根據(jù)VMware公司的統(tǒng)計,計劃維護(hù)停機(jī)的時間約占日常停機(jī)事件的80~90%,例如我們要對服務(wù)器進(jìn)行升級、打補(bǔ)丁或者進(jìn)行其他維護(hù)。意外故障,例如硬件的突發(fā)故障,斷電等等。
針對80~90%的計劃維護(hù)停機(jī),Hyper-V可以進(jìn)行快速遷移(Quick Migration)。虛機(jī)的磁盤文件(.VHD)存放在共享存儲設(shè)備(iSCSI或者光纖SCSI設(shè)備)上,同時掛載到多臺主機(jī)上,所以快速遷移時,不需要遷移龐大的磁盤文件,如附圖所示。 (圖2)
如果需要對主機(jī)Node1進(jìn)行維護(hù),只需把其上的虛機(jī)保存狀態(tài)(save state),也就是把當(dāng)前虛機(jī)內(nèi)存里的內(nèi)容保存到文件里,保存狀態(tài)所產(chǎn)生的文件也保存在共享存儲上,然后該虛機(jī)就可以在另外一臺主機(jī)Node2上恢復(fù)。
由此可見,快速遷移所需的時間和以下兩大因素有關(guān):
?。?)共享存儲的帶寬
?。?)虛機(jī)內(nèi)存的容量
例如對于一臺1GB內(nèi)存的虛機(jī),如果共享存儲是帶寬為1Gb(125MB)的iSCSI,只需約16秒的停機(jī)時間(1Gb/8≈125MB,1GB/125MB=8秒,8×2=16秒);如果是4Gb的光纖存儲,則只需約4秒!不同虛機(jī)內(nèi)存和存儲帶寬所對應(yīng)的停機(jī)時間,如附圖所示。 (圖3)
如果是突發(fā)性的硬件故障或者斷電,則可以借助高可用性群集功能,該虛機(jī)可以在另外一個節(jié)點(diǎn)上重新啟動。這時候相對快速遷移而言,虛機(jī)里的關(guān)鍵業(yè)務(wù)需要更長的停機(jī)時間。
5. 支持跨區(qū)域故障轉(zhuǎn)移
Hyper-V還支持所謂的stretch clustering(延伸群集),也就是跨越地理位置的故障轉(zhuǎn)移群集功能,一旦某個站點(diǎn)發(fā)生故障,其他地方的另外一個站點(diǎn)可以立刻恢復(fù)工作!
6. 和System Center的完美集成
Hyper-V不僅可以實(shí)現(xiàn)高可用性,還可以實(shí)現(xiàn)負(fù)載平衡。這可以和System Center進(jìn)行完美整合。例如企業(yè)通過兩臺虛機(jī)提供訂單服務(wù)(負(fù)載平衡),當(dāng)三月份業(yè)務(wù)繁忙時,System Center Operation Manager監(jiān)測到兩臺虛機(jī)的性能開始不堪重負(fù),則可以很方便地借助System Center Virtual Machine Manager根據(jù)模板創(chuàng)建一個新的虛機(jī)加入到這個NLB群集,繼續(xù)提供服務(wù),整個過程幾乎不需要人工干預(yù),而且非常有效。
二、Hyper-V/VMware/Xen,孰優(yōu)孰劣?
說老實(shí)話,作為虛擬化市場的先驅(qū),VMware的技術(shù)無疑更加成熟。VMware采用一種所謂的VMotion技術(shù)。VMotion采用內(nèi)存后臺備份的機(jī)制,可以實(shí)現(xiàn)在線遷移,也就是說,幾乎沒有停機(jī)時間。
VMotion也需要共享存儲的支持,虛機(jī)的磁盤文件保存在共享存儲設(shè)備上,但是需要指出的是,VMotion并不是基于群集的。
1. VMotion的原理
假設(shè)虛機(jī)要從主機(jī)A遷移到主機(jī)B上。VMotion的過程簡述如下:
?。?)VMotion首先嘗試把虛機(jī)的內(nèi)存映像從主機(jī)A拷貝到主機(jī)B。在這個過程中,主機(jī)A上的虛機(jī)繼續(xù)對外提供服務(wù)。
?。?)在內(nèi)存映像拷貝過程中。用戶對該虛機(jī)的任何內(nèi)存寫入操作,都會記錄到一張叫做內(nèi)存位圖(Memory Bitmap)的表中。
?。?)內(nèi)存映像拷貝完成后,會把內(nèi)存位圖表拷貝到主機(jī)B上。這段時間虛機(jī)會暫時停止工作(時間極短,如果嘗試Ping的話,通常只有一個數(shù)據(jù)包顯示超時),如附圖所示。 (圖4)
(4)當(dāng)虛機(jī)在主機(jī)B上啟動時,系統(tǒng)會把內(nèi)存位圖表里記錄的已修改頁(Modified Memory Page)繼續(xù)拷貝到主機(jī)B中,直到結(jié)束。
2. VMware VMotion和Hyper-V快速遷移之間的對比
?。?)由于VMotion采用后臺內(nèi)存拷貝的模式,只有在拷貝內(nèi)存位圖表時,才會臨時中止客戶端訪問,用戶幾乎感覺不到服務(wù)中斷(一般最多1~2秒)
而Hyper-V快速遷移則需要有一個內(nèi)存狀態(tài)的保存和恢復(fù)時間,根據(jù)虛機(jī)內(nèi)存和存儲帶寬的大小,有少量的服務(wù)中斷時間(少則1~2秒,多則1~2分鐘)。
從原理上講,Hyper-V采用的是比較簡單的內(nèi)存狀態(tài)保存的技術(shù),以避免在內(nèi)存映像傳輸時,后續(xù)的內(nèi)存寫入同步問題,以增加停機(jī)時間作為代價,但一般來說這點(diǎn)時間還是可以容忍的,通常不會有損SLA。
?。?)VMotion需要相對比較昂貴的費(fèi)用(必須采購更高版本才能獲得)
而Hyper-V快速遷移則包含在Windows Server 2008的授權(quán)費(fèi)用中,不需要額外付費(fèi)。
?。?)VMotion需要兩臺主機(jī)的CPU為同一系列(最好是同一型號),以避免CPU指令集的不同而導(dǎo)致的指令兼容問題。
盡管在UI里沒有體現(xiàn),但是Hyper-V快速遷移也有這個限制。
?。?)VMotion適用于計劃維護(hù)停機(jī)事件,如果是突發(fā)故障,可以借助VMware的HA功能(需要付費(fèi)),讓虛機(jī)在另外一臺主機(jī)上重啟。
而Hyper-V則可以借助主機(jī)群集功能同時實(shí)現(xiàn)快速轉(zhuǎn)移和高可用性。
(5)VMotion是VMware Infrastructure的核心功能之一,它也是DRS(動態(tài)資源調(diào)度)的基礎(chǔ)。系統(tǒng)可以根據(jù)一定的優(yōu)先級和性能監(jiān)控,自動通過VMotion在不同主機(jī)之間在線遷移虛機(jī),以便平衡數(shù)據(jù)中心的可用資源。
相信今后的Hyper-V的正式版本,也有類似的機(jī)制,例如可以借助System Center Operation Manager自動監(jiān)控虛機(jī)和物理主機(jī)的性能,然后借助System Center Virtual Machine Manager進(jìn)行快速遷移。
那么Xen呢,Citrix的XenServer Enterprise可以實(shí)現(xiàn)類似的XenMotion功能,盆盆沒有測試過,估計類似于VMware的功能。今后盆盆會抽空進(jìn)行測試,并給出相應(yīng)的測試報告。
三、實(shí)驗(yàn)環(huán)境簡述
至少需要兩臺物理計算機(jī)(必須滿足Hyper-V的安裝條件),用來安裝Windows Server 2008(Hyper-V),并加入到域。兩個獨(dú)立的網(wǎng)段,一個作為心跳網(wǎng)絡(luò)(Heartbeat Network),還一個連接生產(chǎn)環(huán)境。如果有iSCSI共享存儲設(shè)備,還需要有一個網(wǎng)段專門連接到該存儲網(wǎng)絡(luò)。
盆盆當(dāng)然不可能購置iSCSI/FC共享存儲設(shè)備,所以需要準(zhǔn)備一臺專門的虛機(jī),借助IET或者Openfiler(基于Linux)、WinTarget(基于Windows)等工具虛擬出iSCSI共享存儲設(shè)備。只是性能和真實(shí)的iSCSI設(shè)備相比,自然不可同日而語,而且也遠(yuǎn)不如普通的IDE/SATA硬盤(畢竟是用虛擬磁盤來模擬的)。不過我們這里只是一個實(shí)驗(yàn),看看效果就行了。
所以盆盆這里有三臺物理計算機(jī),其中一臺計算機(jī)安裝虛機(jī)(可以是Virtual Server、Hyper-V或者VMware等虛機(jī)),并把該虛機(jī)提升為域控制器;另外兩臺安裝Hyper-V,并加入到該域中,實(shí)驗(yàn)環(huán)境的網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)如附圖所示。(圖5)
這里不再描述如何借助WinTarget或者IET、Openfiler搭建虛擬iSCSI共享存儲設(shè)備,大家可以參考幫助文檔。
四、配置Hyper-V高可用性
在Windows Server 2008配置Hyper-V高可用性非常方便,只需分為三步走:配置驗(yàn)證、創(chuàng)建群集、設(shè)置高可用性。
1. 配置驗(yàn)證
在Hyper-V主機(jī)上添加"Failover Cluster"角色,然后打開"Failover Cluster Management"管理單元,如附圖所示,并單擊右側(cè)操作窗格里的"Validate a Configuration"。 (圖6)
接下來指定需要添加到群集里的兩個節(jié)點(diǎn)(Hyper-V主機(jī)),然后可以選擇"Run only tests I Select"選項(xiàng),并在接下來的頁面里指定所需驗(yàn)證的選項(xiàng),這里可以略過共享磁盤的相關(guān)驗(yàn)證(虛擬出來的設(shè)備,很難通過驗(yàn)證,但是不影響實(shí)驗(yàn)結(jié)果)。 (圖7)
然后可以開始驗(yàn)證過程,并檢查驗(yàn)證結(jié)果,如果有問題,則需要退回重新檢查。
2. 創(chuàng)建群集
在"Failover Cluster Management"管理單元窗口里單擊"Create a Cluster",然后添加所需加入的Hyper-V主機(jī)節(jié)點(diǎn)。
然后指定群集的訪問IP地址和群集名字,如附圖所示。 (圖8)
接下來確認(rèn)群集設(shè)置,即可開始創(chuàng)建群集,最后在群集創(chuàng)建成功頁面上單擊"Finish"按鈕即可,如附圖所示。 (圖9)
3. 設(shè)置高可用性
接下來就可以把某個Hyper-V虛機(jī)作為Windows Server 2008群集所管理的服務(wù)。這里我們首先需要打開Hyper-V管理單元,新建或者復(fù)制一個虛機(jī),請注意必須把該虛機(jī)的磁盤文件保存在共享磁盤上。
確保關(guān)閉該虛機(jī),然后在"Failover Cluster Management"管理單元上單擊"Configure a Service or Application",然后在"Select a Service or Application"頁面確保選擇"Virtual Machine"選項(xiàng),如附圖所示。(圖10)
然后選中剛才所新建的虛機(jī)(本例是Hyper-VCluster),如附圖所示。(圖11)
確認(rèn)無誤后,即可開始配置該虛機(jī)的高可用性,最后在結(jié)果頁面上單擊"Finish"按鈕,如附圖所示。 (圖12)
五、測試Hyper-V快速遷移
一切就緒后,就可以開始測試Hyper-V的快速遷移功能了。很簡單,只需啟動該Hyper-V虛機(jī),然后在"Failover Cluster Management"管理單元左側(cè)控制臺樹里定位到"Services and Applications"分支,可以看到該虛機(jī)當(dāng)前處于"Online"的狀態(tài)。
鼠標(biāo)右鍵單擊該虛機(jī),并在快捷菜單里單擊"Move this service or application to another node",并選擇另外一臺Hyper-V主機(jī),如附圖所示。(圖13)
然后在"Failover Cluster Management"管理單元左側(cè)控制臺樹里定位到"Services and Applications"分支下方的測試虛機(jī),即可在中間的詳細(xì)窗格里看到該虛機(jī)的當(dāng)前所在的主機(jī)是Node1(本例是TOPHOME主機(jī)),并且可以看到該虛機(jī)正在保存狀態(tài),如附圖所示。 (圖14)
一旦保存狀態(tài)完畢后,即可看到該虛機(jī)已經(jīng)切換到另外一臺主機(jī)(本例是MarkThink),并且可以看到該虛機(jī)正在從保存狀態(tài)中恢復(fù),如附圖所示。(圖15)
整個遷移過程速度非???,盆盆給這臺虛機(jī)配置512MB內(nèi)存,雖然是在模擬的共享存儲上進(jìn)行配置,但是遷移的速度很快,差不多20秒左右即可遷移完畢,這個速度還是完全可以承受的。