WSFC2016 VM順序組與管理組
在我們管理虛擬化場景或群集應用場景時,可能經常會經常碰見一個需求,即依賴性順序,開發人員可能會需要保證一系列聯合工作虛擬機或群集應用的啟動順序,確保最底層需要的資源啟動後,再按照順序陸續啟動其它資源。
針對於依賴性啟動的需求,如果是在沒有群集的單機Hyper-V場景下,我們可以通過設置虛擬機的自動啟動屬性來解決此問題,例如,一套sharepoint環境,有DC,DB,AP,WEB,我們可以依次設置各虛擬機自動啟動的延遲時間,0,30,50,80。這樣做了之後,在單機情況下,當宿主機重新啟動,可以按照延遲順序逐步啟動虛擬機以達到依賴性啟動的需求,但這項設置僅限單機使用,當我們將虛擬機移動至其它節點,則自動啟動延遲設置失效,需要每次重新設置
虛擬機遷移至其它節點後設置失效
WSFC2012時代優化了群集優先級功能,我們在2012時代,通過群集優先級也可以完成控制群集應用的依賴性啟動,針對於群集優先級老王在日常管理操作篇博客做了詳細介紹,大家感興趣可以去看,在群集中點擊VM或其它群集角色,可以看到更改啟動優先級的選項,設置之後,群集角色會按照高中低順序啟動,針對於不自動啟動,則在故障轉移後需要管理員手動啟動。
優先級設置在節點冷啟動,移動至最佳節點,故障轉移,維護模式下都會生效,優先級設置幫助確定好遷移或啟動順序,群集依據放置規則執行操作,優先級設置是群集級別,不會因為群集角色遷移到其它節點而失效,不僅可以針對虛擬機設置,也可以針對需要聯合工作的群集角色設置
本場景中,我們設置四個虛擬機的優先級別,分別為,高,中,低,低。
直接關閉HV02,可以看到虛擬機已經被遷移至HV01
直接看cluster log可以看到優先級處理過程
通過查看clusterlog我們可以看出,優先級設置是生效的,當故障轉移時,會按照我們給定的優先級順序,進行聯機處理虛擬機虛擬機,這在一些場景下是有作用的。
但是也有它所做不到的地方,例如,當我們的依賴關系達到四層的時候,像我們這種DC,DB,AP,WEB的場景下,就只好設置WEB和AP都為低,這樣兩個應用就會隨機起來,而不能完全滿足我們對於依賴性啟動的需求。
而且在2012時代開始,如果我們對於虛擬機設置為低優先級還是有一定風險的,例如,如果我們發生故障轉移,高優先級的虛擬機如果因為沒有資源而無法被放置啟動,是會關機回收低優先級虛擬機資源的,如果您的環境資源很足夠,當然不會發生這種問題,但如果服務器資源有限就需要註意了。
還有一點,根據老王的觀察,優先級啟動這個功能很好,它在幫助我們編排群集資源的處理順序方面很好,可以幫助我們很好的解決啟動風暴的問題,可以在資源有限的情況下確保高優先級的資源始終優先啟動,這項功能它可以工作的很好,但是對於依賴性啟動,老王認為優先級設置還有待提升,其一是只有三層依賴關系可以設置,其二是依賴性啟動處理的不夠明顯,大家看clusterlog就能看出,各個虛擬機的聯機處理時間挨著很近,即是說可能會發生一種情況,DC可能沒完全啟動起來,只是虛擬機資源聯機了,但是系統沒完全啟動起來,SQL就開始聯機啟動了,這樣依賴性啟動意義也就不大了,因為優先級設置沒辦法控制依賴性啟動的間隔,例如沒辦法控制高優先級啟動多長時間後,再啟動中優先級。
優先級設置這項功能,在老王看來,屬於群集的一種附屬功能,它是在維持群集可用性的情況下的一種策略設置,只是負責確定一個順序,但是當計劃內,計劃外移動轉移發生時,它做的只是快速確定順序,然後群集快速按照它確定好的順序進行放置處理群集資源。
在WSFC2016時代,針對於群集資源管理,推出了順序組的功能,簡單來說,我們現在可以自己定義群集虛擬機或群集角色之間的依賴關系了,想創建多少層依賴關系,就創建多少層,每層依賴關系對應的是一個個的順序組,每個順序組裏面可以有多個虛擬機或群集應用,當我們創建依賴關系,是基於順序組的級別去創建依賴關系,一項重要的改變是,當我們使用新的順序組功能時,每個順序組啟動後,默認會等待20秒的時候,當一個依賴順序組啟動後,等待20秒再啟動下一個順序組,這個等待時間可以更改,此功能為群集級別,不論虛擬機遷移到其它任何節點都會生效,因此我們可以說,這是項真正的依賴性啟動處理解決方案。
整理下思路,我們現在有了順序組功能,我們可以手動去創建順序組,每個組裏面可以包括多個虛擬機或群集角色。構建完成順序組後,我們可以在群集上手動創建依賴關系,指定一層一層的順序組依賴關系,最終,應該當我們要啟動最底層依賴關系的一臺虛擬機,會檢測到上一個依賴順序組虛擬機還沒啟動,上層虛擬機要啟動又需要最上層順序組,結果所有虛擬機按照順序啟動,每一層虛擬機啟動後,默認都會等待20秒再啟動下一層順序組中虛擬機,該時間可控。
VM順序組配置相關Powershell命令
創建管理順序組
New-ClusterGroupSet: 創建一個順序組
Get-ClusterGroupSet: 獲取當前順序組
Set-ClusterGroupSet: 配置順序組設置
Remove-ClusterGroupSet: 刪除一個順序組
Add-ClusterGroupToSet: 添加VM或其它群集角色至順序
Remove-ClusterGroupFromSet: 從順序組中刪除VM或其它群集角色
配置順序組內依賴關系
Add-ClusterGroupDependency: 添加順序組內虛擬機的依賴關系
Get-ClusterGroupDependency: 獲取順序組內虛擬機的依賴關系
Remove-ClusterGroupDependency: 刪除順序組內虛擬機的依賴關系
配置順序組間依賴關系
Add-ClusterGroupSetDependency: 添加跨順序組之間的依賴關系
Get-ClusterGroupSetDependency: 獲取跨順序組之間的依賴關系
Remove-ClusterGroupSetDependency: 刪除跨順序組之間的依賴關系
#創建順序組
$Cluster = "pecluster.oa.com"
New-ClusterGroupSet -CimSession $Cluster -Name "DC"
New-ClusterGroupSet -CimSession $Cluster -Name "SharepointDB"
New-ClusterGroupSet -CimSession $Cluster -Name "SharepointApp"
New-ClusterGroupSet -CimSession $Cluster -Name "SharepointWeb"
可以看到老王之前說過的20秒等待時間,即當前順序組啟動20秒後,再啟動其它順序組,例如,如果您知道,某些順序組啟動時間會很長,例如SharepointDB虛擬機,那麽您就可以單獨設置它的等待時間長一些,例如我們手動設置為30秒,即依賴於SharepointDB的順序組,需要等待30秒,SharepointDB啟動後,再啟動下一層。
其它參數介紹
StartupDelayTrigger 定義了當開始依賴關系處理時,對於順序組的處理方式
Online :不進行等待時間,只要資源狀態變為聯機就啟動下個順序組
Delay:默認設置,等待StartupDeplay設置的時間到了才啟動下個順序組
StartupCount 定義開始處理依賴關系之前,順序組內必須已經經過延遲上線的角色數量
只有組內所有角色都經過延遲上線後才處理後面(默認)
0 只要組中大部分角色都上線就處理後面順序組
N 用戶自行定義順序組中啟動多少角色可以處理後面順序組
IsGlobal :有趣的參數,假設您構建了很多個順序組,您的群集裏面有DHCP,Fileserver,DC虛擬機等基礎架構角色,那麽您可以把它們順序組設置為IsGlobal=1,這樣設置之後,依賴關系將always always 第一聯機IsGlobal=1的順序組,再處理其它的,適用於群集裏面多個基礎架構服務,其它順序組都對它們有所依賴的場景。
#示例:Set-ClusterGroupSet -name ServerInfra -IsGlobal 1
當前我們創建完了順序組,群集知道你有這樣一個規劃了,但是順序組裏面沒有資源,現在是空的,我們需要把對應的虛擬機或其它群集角色添加進去
#添加虛擬機至順序組
#DC
Add-ClusterGroupToSet -CimSession $Cluster -Name DC -Group "DC"
#SharepointDB
Add-ClusterGroupToSet -CimSession $Cluster -Name SharepointDB -Group "SPDB"
#SharepointApp
Add-ClusterGroupToSet -CimSession $Cluster -Name SharepointApp -Group "SPAP"
#SharepointWeb
Add-ClusterGroupToSet -CimSession $Cluster -Name SharepointWeb -Group "SPWEB"
這裏的Name是順序組的名稱,後面Group是虛擬機名稱,如果是其它群集角色則也添加群集角色名稱,這裏每一個順序組中可以添加多個虛擬機或群集角色,老王這裏只添加一臺作為測試,如果您在一個順序組中添加了多臺虛擬機或群集角色,那麽您還可以配置順序組內的依賴關系。
#查看順序組,可以看到順序組中各成員
OK,三步走,創建順序組,添加各順序組成員,接下來該創建順序組之間依賴關系了
#創建順序組之間依賴關系
Add-ClusterGroupSetDependency -CimSession $Cluster -Name SharepointWeb -Provider SharepointApp
Add-ClusterGroupSetDependency -CimSession $Cluster -Name SharepointApp -Provider SharepointDB
Add-ClusterGroupSetDependency -CimSession $Cluster -Name SharepointDB -Provider DC
#獲取群集內順序組之間依賴關系
根據老王的測試,發現順序組依賴功能僅在群集節點冷啟動下生效,即是說,只有在節點關機開機時,我們創建的這套依賴關系才會生效。本例中,我們將虛擬機全部關機,然後啟動SharepointWEB,看看會不會根據依賴關系自動把其它虛擬機都啟動起來
關閉所有虛擬機
啟動SPWEB
可以看到,已經按照我們構建的依賴關系進行逐步喚醒各個依賴順序組,並喚醒各個順序組中虛擬機,每喚醒一個依賴順序組後,都會按照該順序組設定的開機等待時間,等待時間到了才會繼續喚醒下個順序組。
確保所有依賴關系順序組都已經啟動完成,最終SPWEB才會啟動
查看clusterlog可以看到順序組依賴工作過程
設置順序組及依賴關系,群集DM記錄信息進入群集數據庫,並通過GUM同步至所有節點
群集通過RCM操作處理順序組依賴啟動功能
通過以上實驗相信大家可以看出順序組依賴關系這項功能是怎麽回事了,可以說這是一項真正解決群集應用依賴啟動問題的功能,我們自己構建順序組及依賴關系,虛擬機關機再開機時,RCM遵照我們的構建進行操作處理,實質上,RCM處理依賴關系,首先看的是順序組,我們實現這樣一套自己構建的東西後,實際群集操作的依賴關系是按照順序組為單位進行操作,然後幕後順序組再對應到虛擬機或群集角色,我們完成虛擬機到順序組的映射,順序組到依賴關系的映射,最後使本來不具備依賴關系功能的虛擬機應用上依賴關系功能
總結下順序組依賴功能的利與弊
群集級別功能,單臺配置,全群集生效,配置信息記錄至群集數據庫同步至全群集節點及仲裁磁盤
不僅可以應用於虛擬機,還可以應用於其他群集角色
可以任意構建依賴關系模型,支持跨順序組之間構建依賴關系,也支持順序組內構建依賴關系,可以手動調整順序組延遲啟動時間,依賴延遲操作,較為靈活,適用於真正有依賴啟動需求的場景
缺點,只能是節點冷啟動,或虛擬機關機開機時依賴關系才會生效,手動移動至最佳節點,維護模式不會生效,希望以後維護模式,手動移動至最佳節點也可以用上就厲害了,這樣如果跨站點遷移的話,當我們遷移Web,就會也把DB,AP也一起遷移過去
2016裏面除了針對於群集的順序組,還有個針對於虛擬機的管理組功能,老王特定把這兩個功能拿到一起來講,怕大家給它們兩個弄混
首先,兩者最大的一個區別,順序組是2016群集的功能,VM管理組是2016Hyper-V的功能,順序組主要為了解決資源啟動時的依賴關系問題,VM管理組主要是解決虛擬機批量管理的問題。
簡單來講,VM管理組,是我們在Hyper-V 2016上面創建出來的一個邏輯的組,它的主要作用
同一個VM管理組內虛擬機可以一起進行Hyper-V復制
VM管理組支持嵌套管理組進行管理操作
Hyper-V 2016中使用Shared Drive的虛擬機支持Hyper-V復制,但需要依賴於VM管理組功能
#創建VM管理組
New-VMGroup -Name "DC" -GroupType VMCollectionType
New-VMGroup -Name "SPDB" -GroupType VMCollectionType
New-VMGroup -Name "SPWEB" -GroupType VMCollectionType
New-VMGroup -Name "SPAP" -GroupType VMCollectionType
#添加虛擬機進入VM管理組 ,可以添加多個虛擬機進入同一個管理組,()後面逗號隔開繼續輸入即可
Add-VMGroupMember -Name "DC" -VM (Get-VM "DC")
Add-VMGroupMember -Name "SPDB" -VM (Get-VM "SPDB")
Add-VMGroupMember -Name "SPAP" -VM (Get-VM "SPAP")
Add-VMGroupMember -Name "SPWEB" -VM (Get-VM "SPWEB")
#獲取VM管理組中虛擬機
(Get-VMGroup -Name "SPDB").VMMembers
#獲取宿主機所有虛擬機的管理組信息
Get-VM | FT Name, Groups
同一個VM管理組中可以有多個虛擬機,同一個虛擬機可以屬於多個管理組
由於Hyper-V復制不允許群集內,只允許單機對單機,單機對群集,或群集對群集,所以老王暫時把HV02退出群集節點,勾選允許作為復制副本,群集開啟hyper-v replica boker角色,允許作為復制副本
#基於組級別創建VM復制關系
Enable-VMReplication -VM (Get-VMGroup SPDB).VMMembers -ReplicaServerName HV02 -ReplicaServerPort 80 -AuthenticationType Kerberos -CompressionEnabled 1 -ReplicationFrequencySec 30 -AutoResynchronizeEnabled 1
#查看復制狀態
VM管理組除了VMCollectionType這種組類型,還有一種ManagementCollectionType組類型,當我們如果需要嵌套管理組資源則需要創建這種VM管理組類型
#創建VM管理組ManagementCollectionType類型
#嵌套添加VM管理組至新類型管理組中
Add-VMGroupMember -VMgroup (Get-VMGroup "MGroup") -VMGroupMember (Get-VMGroup "DC"),(Get-VMGroup "SPDB"),(Get-VMGroup "SPAP"),(Get-VMGroup "SPWEB")
#獲取嵌套VM管理組架構
#嘗試針對於嵌套VM管理組啟動復制,發現不成功,也在意料之內,Hyper-V復制應該是只支直接組內就是虛擬機的類型,否則獲取不到VM參數即不成功。
至此,老王為大家簡單介紹了下VM管理組功能,這是一項Hyper-V 2016的功能,只不過都是和組相關,特地拿出來說下,可以看到VM管理組的功能,主要定位於Hyper-V層面,可以針對於組級別進行復制操作,可以進行嵌套組管理,目前看來功能還不是很多,老王看來目前為止,主要的意義在於,針對於組級別做Hyper-V復制,可以解決原來share vhdx虛擬機不能復制的問題,期待日後更多Hyper-V的管理操作也可以通過這種管理組的方式批量操作,這項功能英文叫VM Group,老王將它翻譯為VM管理組,因為老王這項功能更側重與管理,如果單說組過於抽象,也和順序組功能區別開,本篇文章就到這裏,希望看到的朋友都會有收獲,後續幾篇還將繼續微軟WSFC 2016管理操作方面的新功能進行講解,一切都是剛剛開始
本文出自 “老王的微軟技術研究樂園” 博客,請務必保留此出處http://wzde2012.blog.51cto.com/6474289/1962372
WSFC2016 VM順序組與管理組