为 VM 创建计算机和站点关联规则
适用于:Azure 本地版本 23H2 和 22H2
使用 Windows Admin Center 或 Windows PowerShell,可以轻松地在 Azure 本地实例中为虚拟机(VM)创建关联和反关联规则。
注意
在 Azure 本地版本 23H2 上创建和管理 VM 的建议方法是使用 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 Admin Center 相比,使用 Windows PowerShell 可以创建更复杂的规则。 通常,从远程计算机而不是在系统中的主机上设置规则。 此远程计算机称为管理计算机。
从管理计算机运行 Windows PowerShell 命令时,请包含 -Name
要管理的系统的名称或 -Cluster
参数。 如果适用,在对计算机使用 -ComputerName
参数时,还需要指定完全限定的域名(FQDN)。
新 PowerShell cmdlet
若要为群集创建相关性规则,请使用下述新的 PowerShell cmdlet:
New-ClusterAffinityRule
New-ClusterAffinityRule
cmdlet 用于创建新规则。 通过此命令,可指定规则的名称和规则类型,其中:
-Name
为规则名称
-RuleType
值为 SameFaultDomain
| SameNode
| DifferentFaultDomain
| DifferentNode
示例:
New-ClusterAffinityRule -Name Rule1 -RuleType SameFaultDomain
Set-ClusterAffinityRule
Set-ClusterAffinityRule
cmdlet 用于启用或禁用规则,其中:
-Name
为要启用或禁用的规则名称
-Enabled
| Disabled
启用或禁用规则
示例:
Set-ClusterAffinityRule -Name Rule1 -Enabled
Get-ClusterAffinityRule
Get-ClusterAffinityRule
cmdlet 用于显示指定的规则及其类型。 如果未指定 -Name
,则会列出所有规则。
示例:
Get-ClusterAffinityRule -Name Rule1
Add-ClusterGroupToAffinityRule
Add-ClusterGroupToAffinityRule
cmdlet 用于将 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
Remove-ClusterSharedVolumeFromAffinityRule
cmdlet 用于从特定规则中移除群集共享卷,但不会禁用或删除该规则,其中:
-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 服务器 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)。 这样做会阻止 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。