为 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 来创建基本的相关性和反相关性规则。

虚拟机屏幕

  1. 在 Windows Admin Center 主页的“所有连接”下,选择要为其创建 VM 规则的计算机或系统。
  2. 在“工具”下,选择“设置” 。
  3. 在“设置”下选择“相关性规则”,然后在“相关性规则”下选择“创建规则”。
  4. 在“规则名称”下,输入规则的名称。
  5. 在“规则类型”下,选择“一起” (同一台计算机)“分离”(不同计算机), 将 VM 放置在同一台计算机或不同计算机上。
  6. 在“适用于”下,选择要应用此规则的 VM。 使用“添加”按钮将更多 VM 添加到规则。
  7. 完成后,选择“创建规则”
  8. 若要删除规则,请选择该规则,然后选择“ 删除规则”。

使用 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。