作者:範軍 (Frank Fan) 新浪微博:@frankfan7
本文介紹DRS設計的指導原則和考慮因素。
一 爲什麼使用DRS
負載均衡
我們希望在一個Cluster中的所有主機上的負荷是均衡的,不至於出現有的主機特別繁忙,而有的又很閒的情況。在一開始啓動VM的時候,DRS會自動選擇合適的主機來運行它。在運行中,DRS也會不斷衡量各種因素,來決定是否移植該VM.
質量控制:
資源池及其控制,比如share、limit、reservation等都要依賴DRS來支持。
策略實施:
如果你希望有些VM運行在同一臺主機,或者有些VM分別運行在不同的主機,,可以通過DRSAffinity/Non-Affinity 可以實現
維護管理:
在主機進入維護模式後,DRS自動移植VM到其他可用的主機。
二基本設計原則
不要過度設置Affinity/Anti-Affinity Rule, 可能會很大得制約DRS可以分配的主機資源。
在Cluster內主機數目較多時,考慮採用Affinity Rule僅允許vCenter運行在一個或幾個指定的主機上。這樣在vCenter宕機時,可以很容易在特定的主機上的找到它。否則vCenter有可能運行在任何一臺主機上。另外一個辦法是,無需指定vCenter運行的主機,但是指定存儲vCenter的DataStore。在vCenter宕機後可以隨機在任何一臺主機上註冊該vCenter並啓動。
根據VM的目前和近期需要來設置vCPU和內存的初始值。不要過度爲VM分配資源,如果Configured Size大大超過實際的需要,可能DRS要很費事的把負載均衡到各個主機上。
儘量保證有足夠的帶寬供vMotion使用,避免vMotion所需的時間過長
三考慮因素
什麼情況下DRS被激活?
缺省情況每300秒,DRS被激活。這個值可能更改爲60秒-3600秒之間。不建議更改這個設置。下面的情況會讓DRS來計算是否需要移植VM
當主機加入Cluster或者主機進入維護模式
當虛擬機從Powered-on切換到Powered-off
資源池的設置改動
VM移入或移出資源池
影響DRS的決定因素
DRS有一套複雜的方法,先考慮各項限制條件,然後來比較vMotion之後的好處和可能帶來的移植成本及風險,最後再作出決定。
限制條件
比如某主機進入維護模式,Affinity/anti-affinity Rule等
vMotion的成本
vMotion需要CPU和內存來支持,有可能會對VM性能有負面影響。vMotion如果不能獲得該VM上每個Core30%的資源,可能執行的速度會很慢。
儘量避免必要的vMotion。對於響應時間特別敏感的VM,以及使用vFlashCache的VM,DRS在作vMotion決定的時候會相對保守,儘量避免vMotion
好處
VM移植後所釋放的資源可供源主機使用,同時因爲目標主機資源更充足,VM的性能可能會提高。整個Cluster的負載會更均衡得分配給所有主機。
DRS Migration Threshold
可以調整slide bar來調整DRS aggressive的程度。Aggressive的程度越高,對各個主機負載均衡的程度更敏感,更傾向於啓動DRS來移植VM
如果調整Threshold之後,你仍然不滿意結果的話,考慮條整下面的參數。
如果你認爲DRS的移植VM的頻率太頻繁,可以增加PercentIdleMBInMemDemand的值到100%。初始值是25%
另外,DRS算法的設計原則是滿足VM的性能需要,而不是在主機之間均衡VM的個數。如果你不希望在一臺主機上運行過多的VM,考慮設置LimitVMsPerESXHost
Affinity/Anti-affinity Rule
設置Rule的原因可能有:
我們往往採用多個VM來實現某些關鍵應用。爲了避免由於主機宕機產生的單點故障,儘量採用Anti-affinityRule在不同的主機上運行這些VM
軟件許可的要求
性能優化的要求
比如需要頻繁通訊的VM,可以考慮在同一臺主機上運行
Stretch Cluster.不希望VM異地訪問存儲,從而造成延時和性能下降。詳細分析見【虛擬化實戰】容災設計之三Stretched Cluster
Should(not) run on: DRS儘可能會滿足設定條件,但必要時也會突破規則限制。
Must(not) run on: 該設定條件是強制性的,是必須要遵循的。設置強制性條件時要慎重,過多的條件限制可能很大制約DRS可以分配的主機資源。
Automation Level
設置爲Disabled可能會後期的維護有一定的影響,但DRS仍然會提供移植的建議,供用戶來考慮。而且用戶完全可以在開始的時候決定哪臺主機運行哪些VM。
設置爲Fully Automated可以最大化的保證各個主機負載的均衡。
參考:
VMware vSphere 5.1 ClusteringDeepdive by Duncan Epping
VMwareDistributed Resource Management: Design, Implementation and Lessons Learned
VMworld2013 Session:Performance and Capacity Management of DRSClusters