WSFC 資源計量與資源池
資源計量是Hyper-V 2012開始原生自帶的虛擬化資源使用收集技術,默認處於關閉狀態,開啟後可以幫助我們收集各個虛擬機的CPU,內存,硬盤,網絡消耗
Hyper-V資源計量典型的應用場景
1.宿主機上面的托管了很多虛擬機,這些虛擬機可能被不同的部門所使用,管理員需要確保每個虛擬機使用符合的資源,不要影響到其他虛擬機,一方面可以通過資源計量監視,一方面可以通過QOS策略限制調整
2.提供數據和接口,供計費系統調度,可以是Chargeback 或 Showback,在沒有SCOM和SCSM的情況下也能夠實現簡單的計費管理
Hyper-V資源計量的技術特點
1.無圖形化界面,可以通過powershell或API調用管理
2.使用全新的調用方式,相比以前使用性能計數器輪詢的方式更節省資源
3.可以被用於統計單個虛擬機或資源池
4.資源計量將會跟隨虛擬機,不論虛擬機被遷移到那個主機,計量數據存儲在虛擬機配置XML文件
5.支持對於虛擬機或資源池執行reset重新計量
6.對於性能消耗低,僅在輸出報告時會有一些磁盤和CPU活動
7.不是虛擬化監控解決方案,只會收集有限的參數用於計量,監控仍需配合WMI性能計數器與事件日誌使用,如希望執行更深入的虛擬化監控,建議使用SCVMM,SCOM
Hyper-V資源計量可以收集的數據
1.平均 CPU 使用率,在一定時間內以兆赫為單位進行測量。
2. 平均物理內存使用量,以兆字節為單位進行測量。
3. 最小內存使用量(物理內存的最低數量)。
4. 最大內存使用量(物理內存的最高數量)。
5. 分配給虛擬機的最大磁盤空間容量。
6. 針對虛擬網絡適配器的傳入網絡總流量,以兆字節為單位進行測量。
7. 針對虛擬網絡適配器的傳出網絡總流量,以兆字節為單位進行測量。
其中需要註意的地方
最小內存使用量僅記錄VM開機狀態的數據
平均內存使用量記錄VM開機以及VM關機的數據,以提供虛擬機在計費周期內使用內存的準確視圖
CPU使用量使用轉換後的MHZ計量 ,不使用%,微軟認為如果報告百分比,虛擬機移動到具有不同處理能力的主機將失去意義
磁盤計量總值將顯示當前分配的容量,而非當前實際使用,因此對於動態磁盤,會顯示分配的磁盤最大數值
磁盤計量總值部分會包括快照大小
磁盤計量不包括直通磁盤,DAS磁盤,ISCSI,虛擬光纖通道磁盤
網絡計量通過在虛擬機網絡適配器上設置ACL進行計量,ACL包括方向,IP,動作,開啟資源計量後動作為計量
Hyper-V資源計量自帶Command
啟用/禁用資源計量
Get-VMResourceMetering
Disable-VMResourceMetering
配置用於計量的VM資源
Set-VMProcessor
Set-VMHardDiskDrive
Set-VMMemory
Set -VMNetworkAdapter
Add-VMNetworkAdapterAcl
Remove-VMNetworkAdapterAcl
創建/刪除資源池
New-VMResourcePool
Set-VMResourcePool
Remove-VMResourcePool
測量VM和池
Measure-VM
Measure-VMResourcePool
Reset-VMResourceMetering
以上為大家簡單介紹了下Hyper-V資源計量的功能,幫助大家復習或了解下這個概念,關於Hyper-V資源計量我的好朋友徐庭寫了很好的單機實踐博客,這方面老王不再重復,我們將主要實踐後面資源計量,資源池與群集的整合
接下來我們再看下Hyper-V資源池的概念,此資源池非彼資源池,在目前微軟的企業級生態圈中hyper-v資源池的概念主要被用於集合收集資源計量,或資源的冗余與負載均衡,針對於資源的冗余與負載均衡主要體現於虛擬交換機
根資源池
默認情況下在hyper-v中,所有資源都屬於一個根資源池,圖形界面無法看到,如單獨創建資源池,根資源池則會顯示出來。
根資源池默認處於禁用狀態,即不會發揮作用
當我們針對於虛擬機啟用資源計量時,根資源池被啟用
根資源池是默認的集合,所有主機托管的虛擬機資源都在裏面,用於匯總顯示資源計量數據
資源池
創建資源池後可以通過資源計量匯總顯示某個資源池的整體使用情況
用戶自定義創建的池將會以根資源池的子集存在,但可以有獨立的配置
提供虛擬交換機資源池的冗余及負載均衡,實現虛擬機接入資源池,而非單個虛擬交換機,單個虛擬交換機故障,不會影響虛擬機通信
虛擬交換機資源池可以實現跨主機,如果不同主機資源池名稱一致,則可以執行遷移
默認情況下虛擬機屬於根資源池,如果需要加入自定義資源池需關機後加入
同一主機不同資源類型資源池名稱可以一致
針對於VHD資源池可以通過在不同主機創建不同路徑,但相同名稱的VHD資源池,以實現虛擬機遷移過去自動更新存儲路徑
資源計量,資源池,與WSFC的整合
基礎打好後接下來該來到我們的主戲了,如果這兩項功能和群集在一起會怎麽樣?
事實上老王相信如果企業部署了多臺虛擬化主機,則一定會考慮部署高可用群集,以實現業務連續性,避免單機故障影響上面的虛擬機,那麽如果這時候如果我們需要資源計量應該如何去使用,恰好,群集虛擬機配置文件是存放共享區域,而我們虛擬機資源計量的數據也是存在虛擬機配置文件,因此對於一個群集的虛擬機,我們僅需要在群集層面開啟資源計量,不論虛擬機遷移到任何一個節點,都不會影響到資源計量,針對於資源計量的層面也從單機上升至整個群集
實驗環境介紹
AD&北京ISCSI
Lan:10.0.0.2 255.0.0.0
ISCSI:30.0.0.2 255.0.0.0
12HV01
MGMT: 10.0.0.50 255.0.0.0 DNS 10.0.0.2
ISCSI:30.0.0.50 255.0.0.0
Heart:18.0.0.50 255.0.0.0
12HV02
MGMT: 10.0.0.51 255.0.0.0 DNS 10.0.0.100
ISCSI:30.0.0.51 255.0.0.0
Heart:18.0.0.51 255.0.0.0
當前群集承載虛擬機三臺,虛擬機處於關機狀態,本文使用12R2群集為例,該功能在16上面並無變化
實驗1.演示群集下開啟管理資源計量
群集本身並沒有提供資源計量的功能,老王這裏找到一個通過Powershell function實現的方法,下載地址如下
ClusterResourcePoolFunctions.PS1
打開之後可以在ISE中看到function的實現,加載function後才可以使用ClusterResourcePool命令
#獲取群集計量狀態
Get-ClusterResourcePool -Cluster hvcluster
#開啟群集虛擬機資源計量
這裏我們可以通過VMFilter配合命令來控制資源計量,例如我們可以針對於虛擬機以國家,部門,用途命名,開啟資源計量僅針對一個命名範圍內開啟
Enable-ClusterResourcePoolVM -Cluster hvcluster -VMFilter OGIT*
#開啟虛擬機
Start-VM -ComputerName 12HV01 -Name OGIT-SPDB
#獲取群集資源池計量狀態,可以看到當前部分已經為True,所有資源屬於根存儲池,由根資源池負責匯總數據
#獲取群集資源計量報告
Measure-ClusterResourcePoolVM -Cluster hvcluster -VMFilter OGIT*
這裏我們同樣可以利用VMFilter命令僅獲取群集某一個邏輯範圍內的計量數據,可以看到這裏只有SPDB的數據,因為開啟資源計量後其它虛擬機還沒開機過一次,一旦其它虛擬機開機後也會產生數據
如果我們在命令後面加上format-list參數,則可以顯示出資源計量所收集的所有數據,可以看到,由於我們使用了function,因此會顯示出群集所有節點開啟資源計量虛擬機的數據
實驗2.演示群集下創建資源池,以配合資源計量使用
#創建群集資源池
New-ClusterResourcePool -Cluster hvcluster -ResourcePool OGITPOOL
#獲取虛擬機所屬資源池狀態
Get-ClusterResourcePoolVM -Cluster hvcluster -VMFilter OGIT* | Format-Table
#設置虛擬機資源池為新創建群集資源池,需在虛擬機關機狀態下執行
Set-ClusterResourcePoolVM -Cluster hvcluster -ResourcePool OGITPOOL -VMFilter OGIT*
#再次獲取群集虛擬機資源池狀態
Get-ClusterResourcePoolVM -Cluster hvcluster -VMFilter OGIT* | Format-Table
#開啟資源池內範圍內虛擬機
Start-VM -ComputerName (Get-ClusterNode -Cluster hvcluster).name -Name OGIT*
#獲取群集資源池資源計量報告,現在我們可以通過資源池來匯總顯示群集裏面一定範圍內虛擬機的計量數據,如果群集各節點中有很多虛擬機,現在我們可以通過這種方式匯總出來我們需要的計量數據
Measure-ClusterResourcePool -Cluster hvcluster -poolname -OGITPOOL
實驗3. 重置虛擬機,資源池資源計量數據
#關閉資源池範圍內虛擬機,事實上如果不關機也可以執行重置操作,但是在線重置之後數據會立刻增加,如果為了重新初始化數據,建議還是關機執行操作
Stop-VM -ComputerName (Get-ClusterNode -Cluster hvcluster).name -Name OGIT*
#獲取群集資源池計量報告
measure-ClusterResourcePoolVM -Cluster hvcluster -VMFilter OGIT*
#重置單臺虛擬機計量數據
Reset-ClusterResourcePoolVM -Cluster hvcluster -VMFilter OGIT-SPDB
#重置整個群集資源池計量數據,重置完成後再次開機時虛擬機將重新計量
Reset-ClusterResourcePool -Cluster hvcluster -ResourcePool OGITPOOL
實驗4.關閉群集虛擬機資源計量,群集資源池
#將虛擬機從自定義資源池移除,返回根資源池(需在虛擬機關機狀態下執行)
Set-ClusterResourcePoolVM -Cluster hvcluster -ResourcePool "Primordial" -VMFilter OGIT*
#關閉群集虛擬機資源計量
Disable-ClusterResourcePoolVM -Cluster hvcluster -VMFilter OGIT*
#刪除自定義資源池(需確保資源池下無內容後執行)
Remove-ClusterResourcePool -Cluster hvcluster -ResourcePool OGITPOOL
#獲取群集虛擬機計量開啟狀態
Get-ClusterResourcePool -Cluster hvcluster
#獲取虛擬機資源池狀態
Get-ClusterResourcePoolVM -Cluster hvcluster -VMFilter OGIT*| Format-Table * -AutoSize
參考內容:http://www.hypervrockstar.com/dd_resource-metering/
到這裏我們完成了本章的全部實驗,通過老王的介紹相信大家對於資源計量,資源池,以及與群集的配合會有新的思考,嚴格來說這是三個不同的功能,但是結合在一起就能發揮出更好的效果,資源計量可以針對於單機,主機全部,資源池虛擬機進行使用計量,資源池可以針對虛擬資源進行匯總分析,實現冗余和負載均衡,配合群集,可以實現資源計量群集裏面的指定範圍虛擬機,通過資源池匯總群集裏面指定範圍虛擬機的計量,希望未來這項功能可以越來越實用,有更多的場景可以用上,希望看到的朋友都能有自己的收獲
WSFC 資源計量與資源池