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