服務(wù)器負(fù)載均衡:VMware DRS vs.微軟SCVMM
在集群主機間虛擬服務(wù)器的負(fù)載均衡功能說穿了就是一個數(shù)學(xué)問題。服務(wù)器負(fù)載均衡服務(wù)自動計算資源的利用率,然后把某臺主機跟其它主機的可用資源進行比較來決定該集群是否需要進行負(fù)載均衡。
但是這些都沒有精確的公式化約定。每種負(fù)載均衡服務(wù)都是用不同的計算模型來決定集群是否需要。例如,VMware vSphere的DRS(Distributed Resource Scheduler)功能跟微軟SCVMM(System Center Virtual Machine Manager)的PRO(Performance and Resource Optimization)就采用了不同的機制。然而,管理員在決定在線遷移虛擬機達到負(fù)載均衡目的之前,需要綜合考慮性能監(jiān)控和計算結(jié)果。
多數(shù)人把負(fù)載均衡拋給相關(guān)的自動化服務(wù)來完成,但理解它們的計算方法很重要??梢詭椭覀兞私馐裁磿r候需要對負(fù)載均衡服務(wù)做調(diào)整來達到最佳效果。另外,您還可以識別出什么時候廠商提供的負(fù)載均衡功能是真正所需的。
VMware的負(fù)載均衡服務(wù):DRS
DRS服務(wù)通過兩種邏輯關(guān)系來判斷集群是否失去平衡。如果當(dāng)前主機負(fù)載的標(biāo)準(zhǔn)偏差超過目標(biāo)主機的標(biāo)準(zhǔn)差,DRS認(rèn)為該主機跟集群中的其它主機相比是失衡的。為了達到平衡,DRS借助vMotion把虛擬機從超負(fù)荷的主機中遷移出來。
這些服務(wù)器負(fù)載均衡數(shù)據(jù)位于vSphere Client內(nèi)的VMware DRS界面中。DRS通過分析每臺宿主機的CPU和內(nèi)存資源來衡量負(fù)載情況。然后,負(fù)載均衡服務(wù)算出平均的負(fù)載水平并基于此計算出標(biāo)準(zhǔn)偏差值。一旦vSphere開始運行,DRS會每隔五分鐘重新計算一次集群的負(fù)載標(biāo)準(zhǔn)差值。
如果負(fù)載均衡服務(wù)檢測到需要進行均衡,DRS會對集群內(nèi)有這種的需要虛擬機進行基于優(yōu)先級的分級。使用如下的公式,可以計算出該宿主機跟集群內(nèi)其它主機相比的平衡情況。
圖1:用這個公式來判斷集群的負(fù)載均衡
理想的集群環(huán)境中當(dāng)前主機的標(biāo)準(zhǔn)差值應(yīng)該為零,也就是說該主機跟集群內(nèi)其它主機的負(fù)載完全平衡的。如果數(shù)值增加,意味著相比其它服務(wù)器某臺主機上的虛擬機需要更多的額外資源,因此資源需要被重新分配。
DRS然后給出優(yōu)先級建議來達到均衡。優(yōu)先級一的應(yīng)該被立刻處理,相比而言優(yōu)先級五的建議可能對修復(fù)問題的作用會小一些。
通過微軟的PRO實現(xiàn)負(fù)載均衡
微軟的SCVMM采用了不同的負(fù)載均衡機制。本質(zhì)上看,它計算資源利用率時并不對整個集群的環(huán)境進行統(tǒng)計。它的負(fù)載均衡服務(wù),即PRO考慮的是單個宿主機資源過度使用的情況。
您可能還注意到一點SCVMM的重要情況。無論是Hyper-V還是SCVMM都不能根據(jù)性能情況單獨完成虛擬機的重新分配。SCVMM只有在跟SCOM(System Center Operations Manager)集成到一起并且啟用了PRO之后才可以調(diào)配虛擬機。因為SCVMM需要借助SCOM實現(xiàn)對虛擬機的監(jiān)控。
在SCVMM 2008 R2中,如果主機資源過載,虛擬機可以從集群的某臺主機在線遷移出來。根據(jù)“Microsoft TechNet article”的描述,當(dāng)內(nèi)存使用率超過“物理內(nèi)存總量減去宿主機預(yù)留的內(nèi)存量”時,SCVMM就認(rèn)為主機過載。當(dāng)CPU利用率大于“100%減去宿主機占用的CPU資源”后也會有同樣判斷。
任何一臺服務(wù)器都不會去計算整個集群的負(fù)載情況決定資源的分配。但是SCVMM通過單臺宿主機的資源使用率來決定主機過載后是否需要對虛擬機做在線遷移。系統(tǒng)會對四個資源使用做監(jiān)控:CPU、內(nèi)存、磁盤IO和網(wǎng)絡(luò)。通過在SCVMM控制面板內(nèi)拖動滑塊可以設(shè)置這些資源的優(yōu)先級。
還有一種可選方案是通過PowerShell腳本來分析集群情況幫助完成負(fù)載均衡。通過運行腳本比對集群內(nèi)宿主機內(nèi)存和虛擬機使用情況來執(zhí)行虛擬機的負(fù)載均衡。
負(fù)載均衡服務(wù)借助各種計算方法來檢測集群中虛擬機是否需要。但是如果您不能理解各個服務(wù)的計算公式,那么就很難真正實現(xiàn)有效的調(diào)度。即使您不是數(shù)學(xué)天才,這些方法也可以幫助我們避免問題。