標籤:
動態最佳化(Dynamic Optimization)是在scvmm2012之後引入的一個新特性,簡單來說,這個特性的功能就如字面意義一樣,在群集範圍內使用動態遷移VM的方式最佳化主機的資源,使主機與VM都工作在一個相對良好的資源環境中在VMM2008版本中有一個類似的功能稱為:PRO-tips,那麼動態最佳化(後文簡稱DO)與之相比有哪些改進呢?
對於VMM 2008的使用者來說,解決群集中的VMServer Load Balancer問題比較麻煩,需要使用SCOM中的agent監控主機上的效能指標已經超過閾值之後開始進行VM遷移;到了VMM 2012版本後,DO使用全新的智能放置引擎(Intelligent Placement engine )更主動並且有效掌控群集內的主機資源。
DO 相對於PRO-tips有以下幾項改進:
- DO 的監控和遷移作業由VMM服務本身提供,不再需要SCOM整合
- DO 在VMM伺服器上運行,並不用在叢集節點主機上運行,因為對於整個群集來說做到了集中管理,消除了主機上作業衝突的可能性.
- 用SCOM過同學應該知道,如果對VM進行監控,需要許多不同的管理組件(management packs)對相關指標監控,比如VM的資源、網路使用等等,但DO 本身通過VMM服務就可以瞭解到VM的放置規則、資源需求等,不必再通過SCOM進行複雜的管理組件配置
當然,並不是說使用了DO就不再需要SCOM了,因為他們完成的任務是完全不同的,如果需要更精確的監控還是需要使用SCOM的,我們這裡只針對於“動態最佳化”這薦任務來說,DO已經完全可以滿足需要了.
接著說一下DO規則
DO的規則不是特別麻煩,下面簡單說一下,需要注意的是,DO在運行下面這些規則檢查的時候是按順序進行的:
1: 不要因為DO給群集系統帶來新問題
在DO的遷移動作發生之前,進行的第一項檢查,就是遷移是否會使系統出現警告或者錯誤,如果有,那麼DO就不會進行遷移。不管進行遷移後整個群集系統的資源使用有多平衡,多麼合理,VM也不會進行遷移。這裡特別說明一句,這其中最典型的問題就是系統在遷移後可能會over-commited,導致配置好的DO不能進行動態最佳化,這也是我為什麼要寫over-commited演算法這篇文章的原因。
另外還有一種不遷移VM的情況,就是將VM配置為從動態最佳化中排除,如:
2: 解決VM的錯誤/警告
在進行DO時,最重要的一點就是要優先解決VM的錯誤和警告問題,比如VM配置了Network Optimization (VMQ)但是當前主機上VMQ不可用;無法在當前主機上訪問配置的邏輯網路介面等等
3: 解決主機過載
當我們在給一個主機群組配置DO的時候,會被要求指定主機的最大負載,
當DO檢測到某個主機上的閾值超出了指定範圍,那麼DO會優先將這台主機上的VM遷移出去減輕這台主機上的負載,話說這也是DO的一個最主要功能了。
4: 平衡主機資源使用
當前面提到的三個最佳化規則都滿足的條件下,DO才會在群集內部尋找所有可遷移的VM並且評估遷移後的星級,如果星級增長到滿足主機群組的aggressiveness 順位(見),則開始進行資源動態平衡。(Mdidum以下的星級閾值我又沒有找到,如果誰有相關資料可以告訴我再進行修改)。
關於如何對主機進行評星,請參考MSDN:https://technet.microsoft.com/en-us/library/JJ860428.aspx?f=255&MSPPError=-2147217396
下表是進行星級評估時的閾值:
High 0.1 stars
Medium-High 0.2 stars
Medium 0.3 stars
可以看出,在aggressiveness設定為High後,星級增長只要0.1星就可能會引起VM遷移,一般來說我是把這個設定為low的,沒有必要因為一點點的資源平衡就讓正常啟動並執行VM中斷一次(雖然是動態遷移,但是在遷移的最後階段網路還是會閃斷的,這在重要的生產環境下會引起大問題)
最後,以上提到的所有遷移,都必須不能引發目標主機的錯誤或者警告。
DO的方式- 手動還是自動?
DO預設是工作在手動方式下的,也就是說,不會自動對VM進行動態遷移,你可以通過右鍵群集,選擇 “Optimize Hosts” 的方式進行。在手動模式下進行DO首先會先進行群集的估計,之後會出現一個視窗顯示建議進行遷移的VM/源主機/目標主機。
如果想要開啟自動DO也很簡單,只要在主機群組屬性中開啟就可以,之後選擇DO的運行周期(預設為10分鐘一次),這樣,主機群組內的群集就會在指定的周期對群集自動進行DO,如果自動DO導致了一次遷移,在任務視窗中也可以觀察到遷移的進度。
DO的效能資料
1.在進行大部分的部署工作時(如新VM,遷移VM,建立服務等等),DO會基於一定周期內VM在正常工作條件下的效能資料計算出平均值,用以星級評估。
2.SCVMM從VM和主機每9分鐘擷取一次效能資料(這也是為什麼DO的預設周期是10分鐘的原因),DO會基於滾動周期內效能資料的平均值進行檢查
3.DO不會進行儲存遷移,所以在進行DO時磁碟效能是不計算在主機負載內的,在VMM 2012中, DO只考慮CPU以及記憶體的使用
診斷DO出現的問題
當DO出現某種問題的時候(其實也就是動態最佳化沒有產生你要的效果的時候),我們需要通過哪些手段來確認為什麼不能正常執行的?
其實最主要的工具就是SCVMM的用戶端,你可以手動對你想要遷移的VM進行一次手動遷移,我們會發現出現如下介面:
可以看到,介面上出現了主機的星級,這個星級的計算方法、放置規則是與DO的計算方式完全一致的,可以看到主機1,3是有星級的,但是主機2由於添加了放置規則,且並不滿足,所以是沒有星級的,這點可以從下面的異常資訊看出來。所以DO不會將我選中的VM遷移到主機2上。
同樣,還有一種最常出現的情況就是群體over-commited:
在這種情況下,不管主機的星級多麼高,但是群集整體已經過載,也就是說無論怎麼遷移VM都會有over-committed的警告,違反了DO的第一條規則,所以DO是不會進行動態遷移的。
最後,我們要考慮的就是主機資源的平衡問題,只要沒有達到aggressiveness的層級設定,DO是不會進行平衡遷移的,舉例來說,有一個主機上運行了10個閒置VM,而另一台群集裡的主機上沒有放置VM,DO運行檢查後發現沒有達到aggressiveness的配置值,所以並不會導致VM進行遷移。 但是當主機的使用率上升,換句話說,星級評等與空閑主機相比有下降的超出了aggressiveness閾值,DO才會有遷移的動作進行資源平衡,我們可以通過把aggressiveness的等級設定的高一點,讓群集內主機的資源使用盡量平均。當然我並不建議這麼做……
使用scvmm 2012的動態最佳化管理叢集資源