建立 VM 的電腦和月臺親和性規則
適用於:Azure Local 2311.2 和更新版本
使用 Windows Admin Center 或 Windows PowerShell,您可以輕鬆地在 Azure 本機實例中建立虛擬機 (VM) 的親和性和反親和性規則。
注意
在 Azure 本機上建立和管理虛擬機器的建議方式,是使用 Azure Arc 控制平面。 只有在您需要 Azure Arc VM 中未提供的功能時,才能使用以下所述的機制來管理 VM。
親和性是一項規則,可建立兩個或多個資源群組或角色之間的關聯性,例如 VM,以將它們放在相同的機器、系統或站臺上。 反親和性相反,因為它用來讓指定的 VM 或資源群組彼此分開,例如放在不同機器上的兩個域控制器,或位於不同的月台進行災害復原。
親和性和反親和性規則的使用方式與 Azure 使用 可用性區域 的方式類似。 在 Azure 中,您可以設定 可用性區域,讓 VM 保持位於不同的區域,彼此之間或彼此位於相同的區域中。
使用同質和反同構型規則時,任何叢集 VM 都會留在同一部電腦上,或無法在同一部電腦上同在一起。 如此一來,將 VM 移出電腦的唯一方式就是手動執行。 您也可以將 VM 與其自己的記憶體一起保留,例如其 VHDX 所在的叢集共用磁碟區(CSV)。
使用 Windows Admin Center
您可以使用 Windows Admin Center 建立基本親和性和反親和性規則。
- 在 Windows Admin Center 首頁的 [所有連線] 下,選取您要為其建立 VM 規則的電腦或系統。
- 在 [工具] 底下,選取 [設定]。
- 在 [設定] 底下,選取 [親和性規則],然後選取 [親和性規則] 底下的 [建立規則]。
- 在 [規則名稱] 底下,輸入規則的名稱。
- 在 [規則類型] 底下,選取 [ 一起][相同計算機] 或 [不同計算機] 以將 VM 放在同一部機器或不同的計算機上。
- 在 [套用至] 下,選取此規則適用的 VM。 使用 [ 新增 ] 按鈕,將更多 VM 新增至規則。
- 完成後,選取 [ 建立規則]。
- 若要刪除規則,請選取規則,然後選取 [ 刪除規則]。
使用 Windows PowerShell
您可以使用 Windows PowerShell 建立比使用 Windows Admin Center 更複雜的規則。 一般而言,您會從遠端電腦設定規則,而不是在系統中的主計算機上設定規則。 此遠端電腦稱為管理電腦。
從管理電腦執行 Windows PowerShell 命令時,請將 -Name
或 -Cluster
參數包含您管理的系統名稱。 如果適用,當您針對計算機使用 -ComputerName
參數時,也需要指定完整功能變數名稱 (FQDN)。
新的 PowerShell Cmdlet
若要建立叢集的親和性規則,請使用下列新的PowerShell Cmdlet:
New-ClusterAffinityRule
Cmdlet New-ClusterAffinityRule
可用來建立新的規則。 使用此指令,您可以指定規則的名稱及其規則類型,其中:
-Name
是規則的名稱
-RuleType
值為 SameFaultDomain
| SameNode
| DifferentFaultDomain
| DifferentNode
範例:
New-ClusterAffinityRule -Name Rule1 -RuleType SameFaultDomain
Set-ClusterAffinityRule
Cmdlet Set-ClusterAffinityRule
可用來啟用或停用規則,其中:
-Name
是要啟用或停用的規則名稱
-Enabled
|
Disabled
啟用或停用規則
範例:
Set-ClusterAffinityRule -Name Rule1 -Enabled
Get-ClusterAffinityRule
Get-ClusterAffinityRule
Cmdlet 可用來顯示指定的規則及其類型。 如果未 -Name
指定,則會列出所有規則。
範例:
Get-ClusterAffinityRule -Name Rule1
Add-ClusterGroupToAffinityRule
Cmdlet Add-ClusterGroupToAffinityRule
是用來將 VM 角色或組名新增至特定同質規則,其中:
-Groups
是要新增至規則的群組或角色名稱。
-Name
是要加入的規則名稱。
範例:
Add-ClusterGroupToAffinityRule -Groups Group1 -Name Rule1
Add-ClusterSharedVolumeToAffinityRule
Add-ClusterSharedVolumeToAffinityRule
可讓您的 VM 與 VHDX 所在的叢集共用磁碟區保持一起,其中:
-ClusterSharedVolumes
是您想要新增至規則的 CSV 磁碟
-Name
是要新增至的規則名稱
範例:
Add-ClusterSharedVolumeToAffinityRule -ClusterSharedVolumes CSV1 -Name Rule1
Remove-ClusterAffinityRule
會 Remove-ClusterAffinityRule
刪除指定的規則,其中 -Name
是規則的名稱。
範例:
Remove-ClusterAffinityRule -Name Rule1
Remove-ClusterGroupFromAffinityRule
會 Remove-ClusterGroupFromAffinityRule
從特定規則移除 VM 群組或角色,但不會停用或刪除規則,其中:
-Name
是規則的名稱
-Groups
是您想要從規則中移除的群組或角色
範例:
Remove-ClusterGroupFromAffinityRule -Name Rule1 -Groups Group1
Remove-ClusterSharedVolumeFromAffinityRule
Cmdlet Remove-ClusterSharedVolumeFromAffinityRule
用來從特定規則中移除叢集共用磁碟區,但不會停用或刪除規則,其中:
-ClusterSharedVolumes
是您想要從規則中移除的 CSV 磁碟。
-Name
是要加入的規則名稱。
範例:
Remove-ClusterSharedVolumeFromAffinityRule -ClusterSharedVolumes CSV1 -Name Rule1
現有的PowerShell Cmdlet
隨著新 Cmdlet 的出現,我們也將額外的新參數新增至一些現有的 Cmdlet。
Move-ClusterGroup
新的 -IgnoreAffinityRule
參數會忽略規則,並將叢集資源群組移至另一部計算機。 如需此 Cmdlet 的詳細資訊,請參閱 Move-ClusterGroup。
範例:
Move-ClusterGroup -IgnoreAffinityRule -Cluster Cluster1
注意
如果移動規則有效(支援),所有受影響的群組和角色也會移動。 如果 VM 放在行動會故意違反規則,但需要一次性暫時性的規則,請使用 -IgnoreAffinityRule
參數來允許行動發生。 在此情況下,將會顯示 VM 的違規警告。 然後,您可以視需要啟用規則返回。
Start-ClusterGroup
新的 -IgnoreAffinityRule
參數會忽略規則,並讓叢集資源群組在其目前位置上線。 如需此 Cmdlet 的詳細資訊,請參閱 Start-ClusterGroup。
範例:
Start-ClusterGroup -IgnoreAffinityRule -Cluster Cluster1
親和性規則範例
同質規則是「一起」規則,可讓資源保留在相同計算機、系統或站臺上。 以下是設定親和性規則的一些常見案例。
案例 1
假設您有 SQL Server VM 和 Web Server VM。 這兩部 VM 必須一律保留在相同的月臺,但不一定需要位於相同的電腦上。 您可以使用 SameFaultDomain
,如下所示:
New-ClusterAffinityRule -Name WebData -Ruletype SameFaultDomain -Cluster Cluster1
Add-ClusterGroupToAffinityRule -Groups SQL1,WEB1 –Name WebData -Cluster Cluster1
Set-ClusterAffinityRule -Name WebData -Enabled 1 -Cluster Cluster1
若要查看此規則及其設定方式,請使用 Get-ClusterAffinityRule
Cmdlet 來查看輸出:
Get-ClusterAffinityRule -Name WebData -Cluster Cluster1
Name RuleType Groups Enabled
---- --------- ------ -------
WebData SameFaultDomain {SQL1, WEB1} 1
案例 2
除了指定 VM 必須位於同一部電腦上之外,讓我們使用相同的案例。 使用 SameNode
,將它設定如下:
New-ClusterAffinityRule -Name WebData1 -Ruletype SameNode -Cluster Cluster1
Add-ClusterGroupToAffinityRule -Groups SQL1,WEB1 –Name WebData1 -Cluster Cluster1
Set-ClusterAffinityRule -Name WebData1 -Enabled 1 -Cluster Cluster1
若要查看規則及其設定方式,請使用 Get-ClusterAffinityRule
Cmdlet 來檢視輸出:
Get-ClusterAffinityRule -Name WebData1 -Cluster Cluster1
Name RuleType Groups Enabled
---- -------- ------ -------
DC SameNode {SQL1, WEB1} 1
反親和性規則範例
反親和性規則是「分開」規則,可分隔資源,並將其放在不同的機器、系統或站臺上。
案例 1
您在相同的 Azure 本機多站台系統上,每個 VM 各有兩部執行 SQL Server。 每個 VM 都會使用大量的記憶體、CPU 和記憶體資源。 如果兩者最終位於同一部計算機上,這可能會導致一或兩者競爭記憶體、CPU 和記憶體週期的效能問題。 使用這些反親和性規則做 DifferentNode
為規則類型,這些 VM 一律會留在不同的電腦上。
範例命令會是:
New-ClusterAffinityRule -Name SQL -Ruletype DifferentNode -Cluster Cluster1
Add-ClusterGroupToAffinityRule -Groups SQL1,SQL2 –Name SQL -Cluster Cluster1
Set-ClusterAffinityRule -Name SQL -Enabled 1 -Cluster Cluster1
若要查看規則及其設定方式,請使用 Get-ClusterAffinityRule
Cmdlet 來檢視輸出:
Get-ClusterAffinityRule -Name SQL -Cluster Cluster1
Name RuleType Groups Enabled
---- ----------- ------- -------
SQL DifferentNode {SQL1, SQL2} 1
記憶體親和性規則
您也可以在相同電腦上的叢集共用磁碟區上保留 VM 及其 VHDX。 這樣做會防止 CSV 重新導向發生,這可能會讓 VM 的啟動或停止變慢。 考慮到先前的合併同構型和反親和性案例,您可以將 SQL VM 和叢集共用磁碟區保留在相同的電腦上。 若要這樣做,請使用下列命令:
New-ClusterAffinityRule -Name SQL1CSV1 -Ruletype SameNode -Cluster Cluster1
New-ClusterAffinityRule -Name SQL2CSV2 -Ruletype SameNode -Cluster Cluster1
Add-ClusterGroupToAffinityRule -Groups SQL1 –Name SQL1CSV1 -Cluster Cluster1
Add-ClusterGroupToAffinityRule -Groups SQL2 –Name SQL2CSV2 -Cluster Cluster1
Add-ClusterSharedVolumeToAffinityRule -ClusterSharedVolumes CSV1 -Name SQL1CSV1 -Cluster Cluster1
Add-ClusterSharedVolumeToAffinityRule -ClusterSharedVolumes CSV2 -Name SQL2CSV2 -Cluster Cluster1
Set-ClusterAffinityRule -Name SQL1CSV1 -Enabled 1 -Cluster Cluster1
Set-ClusterAffinityRule -Name SQL2CSV2 -Enabled 1 -Cluster Cluster1
若要查看這些規則及其設定方式,請使用 Get-ClusterAffinityRule
不含 參數的 -Name
Cmdlet 並檢視輸出。
Get-ClusterAffinityRule -Cluster Cluster1
Name RuleType Groups Enabled
---- -------- ------ -------
Site1Trio SameFaultDomain {SQL1, WEB1, DC1} 1
Site2Trio SameFaultDomain {SQL2, WEB2, DC2} 1
TrioApart DifferentFaultDomain {DC1, DC2} 1
SQL1CSV1 SameNode {SQL1, <CSV1-GUID>} 1
SQL2CSV2 SameNode {SQL2, <CSV2-GUID>} 1
下一步
瞭解如何管理 VM。 請參閱 使用 Windows Admin Center 管理 Azure 本機上的 VM。