虛擬化環境的主要好處之一是合理使用資源。當特定的虛擬機器不需要時,它們可以被關閉;這使得釋放的計算資源可以被分配給需要的虛擬機器。Hyper-V故障轉移叢集允許您減少虛擬機器的停機時間;從Windows Server 2016開始的版本開始,Hyper-V可以在Hyper-V主機(在此情況下稱為叢集節點)之間提供VM負載平衡。
本篇博客文章介紹了Hyper-V故障轉移叢集的VM負載平衡功能,並探討了其工作原理、配置參數以及在Hyper-V虛擬環境中使用負載平衡的優點。
什麼是Hyper-V VM負載平衡以及如何使用這個功能?
負載平衡是一個功能,它確保在叢集中充分利用Hyper-V主機的資源。隨著時間的推移,VM負載可能會變得不均勻;結果,Hyper-V主機可能變得更加負載或更少負載。這可能導致一些節點在打補丁或其他維護過程中暫時無法使用。Hyper-V叢集可以通過負載平衡功能為具有負載平衡功能的VM提供足夠的計算資源,在此功能中,當一個節點過載時,VM將從一個節點遷移到另一個節點,而另一個節點則具有空閒的計算資源。此功能用於為Hyper-V叢集內的VM提供足夠的性能,從而有助於保持運行在VM上的提供服務的高質量。
負載平衡是如何工作的?
自動負載平衡會自動檢查 Hyper-V 叢集狀態,然後根據找到的結果和設置,啟動虛擬機器從負載過重節點遷移至負載較輕節點,以在 Hyper-V 主機之間重新分配負載。
有兩種方法可以用來檢查主機負載:
- 檢查 RAM(隨機存取記憶體)利用率。Hyper-V 主機內存不足是最常見的問題之一,可能導致延遲。
- 檢查 CPU(中央處理器單元)利用率。處理器容量不足也可能導致延遲。
主機使用的 CPU 和 RAM 資源越多,就會被 Hyper-V 視為負載越重。如果叢集已配置為定期負載平衡,則每 30 分鐘評估主機的負載。您也可以根據需要評估主機的負載。系統識別負載超過定義閾值的主機,以及負載低於閾值的主機。如果叢集節點的當前負載不均勻且滿足上述條件,Hyper-V 將在節點之間啟動 VM 即時遷移。Hyper-V 即時遷移允許您在不引起顯著停機的情況下進行 VM 遷移。
提供了負載平衡與 Hyper-V 故障轉移叢集的整合。負載平衡遵循以下叢集規則:可能的所有者、反親和性(這兩個規則存在於 Windows Server 2016 之前)、以及錯誤域(新規則)。
可能的擁有者規則定義了可以進行遷移的 Hyper-V 主機。此規則僅定義了可能的虛擬機擁有者,並可防止虛擬機遷移到不需要的主機。
反親和性規則允許您防止在同一主機上運行兩個已定義的虛擬機。例如,如果您有兩個具有主要和次要域控制器的虛擬機,則這兩個虛擬機不能在同一主機上運行。這種方法在某一域控制器所在的主機失敗的情況下增加了可靠性。
故障域是一個功能,它定義了一組可能因某些類型的物理故障(例如網絡故障、電源故障等)而受影響的 Hyper-V 主機。具有相同故障域虛擬機的 Hyper-V 主機通常連接到同一電源和網絡交換機,因此它們可以安裝到同一機架上。如果發生任何故障,則同一故障域的所有虛擬機都將受到影響。集群可以在邏輯上分為多個故障域,並且一個域的故障不應影響其他域。
配置參數
在 Hyper-V 2016 中,故障轉移叢集的負載平衡默認為啟用狀態。有兩種行為類型:“只有在叢集添加新節點時使用” 和 “定期檢查”。
僅在向叢集新增節點時使用。在這種情況下,叢集會獲得更多的 CPU 和 RAM 資源,並擴展整體的運算能力。系統會評估每個節點的負載。如果任何節點超載(超過配置中設定的閾值值),則適當的虛擬機將從超載的節點遷移到最近添加的具有空閒資源的節點上。如果您經常向您的 Hyper-V 故障轉移叢集添加容量,則此選項很有用,對於基於儲存空間技術的叢集也可能很有用。如果先前從叢集中斷連接的節點(例如,進行維護)重新連接到叢集,則此選項不會對叢集產生影響。
定期檢查。此選項每 30 分鐘啟動一次檢查叢集節點的負載。如果任何節點超載(超過配置中設定的閾值值),則適當的虛擬機將從超載的節點遷移到具有空閒資源的節點。
侵略性閾值是一個參數,定義了基於節點的 RAM 和 CPU 利用率的平衡的侵略性。侵略性閾值可以是三個值之一:低(1)、中(2)和高(3)。您可以在下面的部分中查看有關配置的更多詳細信息。
配置
可以使用 GUI(圖形用戶界面)或 PowerShell 來配置 Hyper-V 負載平衡。要配置 Hyper-V 負載平衡,請首先打開故障轉移叢集管理器,右鍵單擊您的叢集名稱,然後在上下文菜單中選擇“屬性”。
在「屬性」視窗中,選擇「平衡器」標籤。勾選/取消勾選方塊以啟用/停用負載平衡。您可以選擇平衡模式和侵略性。
您也可以在 PowerShell 中設定平衡模式或停用自動平衡:
(Get-Cluster).AutoBalancerMode = <value>
其中 <value> 可以是 0、1 或 2(見下表)。
AutoBalancerMode | 描述 |
0 | 已停用 |
1 | 加入節點時進行負載平衡 |
2(默認值) | 始終進行負載平衡 |
為了設定侵略性閾值,在 PowerShell 中輸入以下命令:
(Get-Cluster).AutoBalancerLevel = <value>
其中 <value> 可以是 1、2 或 3(見下表)。
AutoBalancerLevel | 侵略性 | 描述 |
1(默認值) | 低 | 當主機負載超過 80% 時移動 VM |
2 | 中等 | 當主機負載超過 70% 時移動 VM |
3 | 高 | 當主機負載超過 60% 時移動 VM |
System Center Virtual Machine Manager (SCVMM) 也可以用作集群管理的替代方案,而不是使用故障转移集群管理器。SCVMM 包括自 Windows Server 2012 起可用的动态优化功能,该功能还可在集群节点之间重新分配虚拟机。如果您启用了 Hyper-V 负载平衡并使用了 SCVMM 的动态优化,则一旦在 SCVMM 中启用动态优化,负载平衡将自动禁用。在这种情况下,负载平衡管理由 SCVMM 接管,以防止可能由两个功能同时工作及相关问题引起的冲突。微软建议您使用带有动态优化的 SCVMM。
Hyper-V 负载平衡的优势
负载平衡是一个有用的功能。使用 Hyper-V 故障转移集群的负载平衡的优势包括:
- 物理服务器不会过载
- 虚拟机不会过载
- 改善了应用程序的响应速度
- 提高了提供的服务质量
- 提高了服务和应用程序的可扩展性
- 减轻了故障
NAKIVO 备份与复制及备份集群虚拟机
Hyper-V Failover Cluster 是一個有效的解決方案,既可以提高運行虛擬機的可用性,又可以保護它們免受節點可能的硬件故障的影響。為了保護您的數據免受其他類型的災害,應該使用虛擬機備份和複製。在叢集化的 Hyper-V 主機上運行的虛擬機可以在故障轉移或負載平衡等事件期間在主機之間遷移。因此,由於需要檢測虛擬機所在的主機(被視為主機級別的虛擬機備份),因此進行所需虛擬機備份可能會變得困難。
NAKIVO 備份和複製是一個快速、可靠且價格合理的虛擬機數據保護解決方案,支持 Hyper-V 叢集。一旦將整個叢集添加到清單中,NAKIVO 備份和複製可以自動跟踪虛擬機所在的主機,因此從 Hyper-V 叢集進行虛擬機備份或複製的過程就像從獨立的 Hyper-V 主機進行虛擬機備份一樣簡單。
結論
Hyper-V 負載平衡是一個有用的叢集功能,包含在Windows Server 2016的Hyper-V中。這個功能幫助您更合理地使用硬件資源,從而提高所提供服務的質量。CPU和RAM指標用於做出重新分配負載的決策。當超過配置中設定的閾值時,負載平衡會自動啟動從過載節點到具有自由資源的節點的VM遷移。由於使用了Live Migration,因此沒有明顯的停機時間。具有負載平衡的Hyper-V故障轉移叢集除了為VM提供高可用性和足夠的計算資源外,還保護您的VM免受節點故障的影響。
Source:
https://www.nakivo.com/blog/hyper-v-virtual-machine-load-balancing/