管理 Azure Stack HCI 群集注册

适用于:Azure Stack HCI 版本 22H2

根据你的群集配置和要求,可能需要在将群集注册到 Azure 后执行附加的步骤。 本文介绍如何使用 Windows Admin Center、PowerShell 或 Azure 门户管理群集注册。 其中还提供了有关群集注册的常见问题解答。

将群集注册到 Azure 时,会创建一个 Azure 资源管理器资源来代表本地 Azure Stack HCI 群集。 从 Azure Stack HCI 版本 21H2 开始,注册群集会自动为 Azure Stack HCI 群集中的每个服务器创建服务器资源的 Azure Arc。 此 Azure Arc 集成将 Azure 管理平面扩展到了 Azure Stack HCI。 通过 Azure Arc 集成,可以在 Azure 资源与本地群集之间定期同步信息。

查看注册和已启用 Arc 的服务器状态

使用 Windows Admin Center 连接到群集时,你将看到仪表板,其中显示了 Azure Stack HCI 注册和已启用 Arc 的服务器状态。

  • 对于 Azure Stack HCI 注册,“已连接”表示群集已注册到 Azure 并在过去一天内成功同步到云。

  • 对于已启用 Arc 的服务器,“已连接”表示所有物理服务器都已启用 Arc,并且可以从 Azure 门户对其进行管理。

    显示 Windows Admin Center 仪表板上群集连接状态的屏幕截图。

可以通过在左侧的“工具”菜单中选择“Azure Arc”来获取详细信息。

注意

Azure Arc 仪表板目前为公共预览版。

显示用于获取 Azure Stack HCI 注册信息的选项的屏幕截图。

在“概述”页上,可以找到有关 Azure Stack HCI 注册和已启用 Arc 的服务器的概要状态信息。 可以单击任一磁贴转到各个页面。

有关注册的状态信息的屏幕截图。

在“Azure Stack HCI 注册”页上,可以查看 Azure Stack HCI 系统和服务器的状态。 这包括 Azure 连接状态和上次 Azure 同步状态。可以找到故障排除文档和群集扩展的“有用链接”。 如果需要,可以取消注册。

服务器状态的屏幕截图。

如果群集已注册到 Azure,但物理服务器尚未启用 Arc,你可以从“已启用 Arc 的服务器”页启用 Arc。 如果物理服务器已启用 Arc,你可以查看每个服务器的 Azure Arc 状态和版本 ID。 还可以找到故障排除信息的“有用链接”。

启用 Azure Arc 集成

从 Azure Stack HCI 版本 21H2 开始,在注册时会自动为群集启用 Arc。 Azure Arc 集成在 Azure Stack HCI 版本 20H2 上不可用。

对于以下情况,需要手动启用 Azure Arc 集成:

  • 已将群集服务器(之前未手动启用 Arc)从 Azure Stack HCI 版本 20H2 更新到版本 21H2。
  • 如果你以前为 20H2 群集启用过 Arc,并且在升级到 21H2 之后,Arc 启用仍然失败,请参阅此处的指南进行故障排除
  • 你以前禁用了 Arc 启用,现在你打算为 21H2 或更高版本的 Azure Stack HCI 群集启用 Arc。

按照以下步骤启用 Azure Arc 集成:

  1. 在管理电脑上安装最新版本的 Az.Resources 模块:

    Install-Module -Name Az.Resources
    
  2. 在管理电脑上安装最新版本的 Az.StackHCI 模块:

    Install-Module -Name Az.StackHCI
    
  3. 重新运行 Register-AzStackHCI cmdlet 并指定 Azure 订阅 ID,该 ID 必须与群集最初注册到的 ID 相同。 -ComputerName 参数可以是群集中任一服务器的名称。 此步骤将在群集中的每个服务器启用 Azure Arc 集成。 这不会影响 Azure 中的当前群集注册,并且不需要先取消注册群集:

    Register-AzStackHCI  -SubscriptionId "<subscription_ID>" -ComputerName Server1 -Region <region> -TenantId "<tenant_id>"
    

    重要

    如果群集最初是使用不同于默认设置的 -Region-ResourceName-ResourceGroupName 注册的,则必须在此处指定相同的参数和值。 运行 Get-AzureStackHCI 将显示这些值。

如果在启用 Arc 时发生失败,请参阅此处的故障排除指导

升级群集服务器上的 Arc 代理

从 Azure Stack HCI 版本 21H2 开始,若要在新版本可用时自动更新 Arc 代理,请确保在群集服务器上配置了 Microsoft 更新。 有关详细信息,请参阅 Microsoft 更新配置

按照以下步骤升级群集服务器上的 Arc 代理:

  1. 服务器配置工具 (SConfig) 中,选择“安装更新”选项(选项 6):

    显示用于安装更新的选项的 SConfig 屏幕截图。

  2. 选择“所有质量更新”选项(选项 1)。

  3. 可以选择专门更新 Arc 代理,或安装所有可用的更新:

    Sconfig 选项。

  4. 在每个节点上从 PowerShell 运行 azcmagent version 以验证 Arc 代理版本。

注销 Azure Stack HCI 群集

可以使用 Windows Admin Center 或使用 PowerShell 注销 Azure Stack HCI。

注销过程会自动清理表示群集的 Azure 资源、Azure 资源组(如果组是在注册期间创建的,并且不包含任何其他资源)和 Microsoft Entra 应用标识。 此清理过程会停止通过 Azure Arc 进行的所有监视、支持和计费功能。

按照以下步骤通过 Windows Admin Center 取消注册 Azure Stack HCI 群集:

  1. 使用 Windows Admin Center 连接到群集。

  2. 在左侧菜单中选择“Azure Arc”。

  3. 选择“Azure Stack HCI 注册”,选择“注销”按钮,然后再次选择“注销”。

注意

如果 Windows Admin Center 网关注册到的 Microsoft Entra 租户 ID 与最初用于注册群集的 ID 不同,则在尝试使用 Windows Admin Center 注销群集时可能会遇到问题。 如果发生这种情况,可以使用下一节中的 PowerShell 说明。

清理未正确注销的群集

如果用户在未注销的情况下销毁 Azure Stack HCI 群集(例如通过重新映像主机服务器或删除虚拟群集节点),则项目会保留在 Azure 中。 这些项目无害,且不会产生账单或使用资源,但会使 Azure 门户杂乱无章。 若要清理它们,可以手动删除。

若要删除 Azure Stack HCI 资源,请在 Azure 门户中导航到该资源,然后从操作栏中选择“删除”。 可以通过运行 Get-AzureStackHCI cmdlet 获取资源详细信息。

Azure Stack HCI 会在注册过程中创建两个 Microsoft Entra 应用程序:resourceNameresourceName.arc。若要删除这些应用程序,请转到“Microsoft Entra ID”>“应用注册”>“所有应用程序”。 选择“删除”并确认。

还可使用 PowerShell 删除 Azure Stack HCI 资源:

Remove-AzResource -ResourceId "<resource_name>"

可能需要安装 Az.Resources 模块:

Install-Module -Name Az.Resources

如果资源组是在注册期间创建的,而且不包含任何其他资源,则也可将它删除:

Remove-AzResourceGroup -Name "<resourceGroupName>"

故障排除

有关解决常见错误和缓解步骤的信息,请参阅排查 Azure Stack HCI 注册问题

常见问题解答

查看一些常见问题的解答:

如何使用受限程度更高的自定义权限角色?

可以按照使用 PowerShell 分配 Azure 权限中所述进一步降低执行 Azure Stack HCI 注册所需的权限,前提是具有参与者和用户访问管理员角色的用户已在带外执行下述某些操作。

  1. 注册所需的资源提供程序。 登录你将用于注册群集的订阅。 在“设置”>“资源提供程序”下,选择以下资源提供程序,然后选择“注册”:

    • Microsoft.AzureStackHCI
    • Microsoft.HybridCompute
    • Microsoft.GuestConfiguration
    • Microsoft.HybridConnectivity
  2. 创建资源组。 确保 Azure Stack HCI 资源所要投影到的资源组已由特权用户预先创建。 有关更多详细信息,请参阅先决条件部分。

    设置这两个先决条件后,如下所述创建一个自定义角色并将其用于注册。 首先,创建包含以下内容的名为 customHCIRole.json 的 JSON 文件。 确保将 <subscriptionID> 更改为 Azure 订阅的 ID。 若要获取你的订阅 ID,请访问 Azure 门户,转到“订阅”,然后从列表中复制/粘贴你的 ID:

    {
      "Name": "Azure Stack HCI registration role",
      "Id": null,
      "IsCustom": true,
      "Description": "Custom Azure role to allow subscription-level access to register Azure Stack HCI",
      "Actions": [
        "Microsoft.Resources/subscriptions/resourceGroups/read",
        "Microsoft.AzureStackHCI/clusters/*",
        "Microsoft.Authorization/roleAssignments/write",
        "Microsoft.Authorization/roleAssignments/read"
       ],
       "NotActions": [
       ],
       "AssignableScopes": [
          "/subscriptions/<subscriptionId>"
       ]
    }
    
  3. 创建自定义角色:

    New-AzRoleDefinition -InputFile <path to customHCIRole.json>
    
  4. 向用户分配自定义角色:

    $user = get-AzAdUser -DisplayName <userdisplayname>
    $role = Get-AzRoleDefinition -Name "Azure Stack HCI registration role"
    New-AzRoleAssignment -ObjectId $user.Id -RoleDefinitionId $role.Id -Scope /subscriptions/<subscriptionid>
    

    现在可以使用 Register-AzStackHCI 注册群集。

    如果需要注销此群集,请在创建自定义角色时添加 JSON 文件的 Microsoft.Resources/subscriptions/resourceGroups/delete 权限。

如何使用 ArmAccessToken/SPN 注册群集?

在注册之前,请确保满足先决条件

注意

这些 SPN 凭据用于初始加入 Azure Stack HCI。 Azure Stack HCI 仍将为 Arc 加入创建单独的 SPN 凭据。 若要使用自定义 SPN 进行 Arc 加入,请参阅如何使用用于 Arc 加入的 SPN 注册群集?

  1. 运行 “Connect-AzAccount” 以连接到 Azure。 若要使用 SPN 进行连接,可以使用:

    • 基于设备代码的身份验证。 在 cmdlet 中使用 -DeviceCode
    • 基于证书的身份验证。 请参阅此文为基于证书的身份验证配置 SPN。 然后在接受证书信息的 Connect-AzAccount cmdlet 中使用适当的参数。 使用的 SPN 应该对订阅拥有此处列出的所有必需权限。
  2. 分配 $token = Get-AzAccessToken

  3. 如下所示,结合 TenantIdSubscriptionIdArmAccessTokenAccountId 参数使用 Register-AzStackHCI

    Register-AzStackHCI -TenantId "<tenant_ID>" -SubscriptionId "<subscription_ID>" -ComputerName Server1 -Region <region> -ArmAccessToken $token.Token -AccountId $token.UserId
    

如何使用 SPN 注册要加入 Arc 的群集?

以下指南适用于运行注册 cmdlet 但无法获得分配的 Microsoft.Authorization/roleAssignments/write 权限的用户。 在这种情况下,他们可以结合使用预先创建的 SPN 和分配给该 SPN 的 Arc 加入角色(Azure Connected Machine Onboarding 和 Azure Connected Machine Resource Administrator),并使用 -ArcSpnCredential 选项指定注册 cmdlet 的凭据。

注意

Azure Stack HCI 不会更新以这种方式创建的 SPN 凭据。 当 SPN 凭证即将到期时,你必须重新生成凭证并运行“修复注册”流程以更新群集上的 SPN 凭证。

注意

如果无法为注册角色分配 Microsoft.Authorization/roleAssignments /write 权限,请使用 PowerShell 模块版本 1.4.1 或更低版本将 SPN 凭据用于 Arc 加入。

在注册之前,请确保满足先决条件和预先检查要求。 注册群集的用户必须对用于群集注册的订阅具有“参与者”角色;如果为其分配了自定义角色,则其必须拥有下面列出的权限:

  • "Microsoft.Resources/subscriptions/resourceGroups/read",
  • "Microsoft.Resources/subscriptions/resourceGroups/write",
  • “Microsoft.AzureStackHCI/register/action”,
  • “Microsoft.AzureStackHCI/Unregister/Action”,
  • “Microsoft.AzureStackHCI/clusters/*”,
  • "Microsoft.Authorization/roleAssignments/read",
  • “Microsoft.HybridCompute/register/action”,
  • “Microsoft.GuestConfiguration/register/action”,
  • “Microsoft.HybridConnectivity/register/action”

要进行注销,请确保你还拥有 Microsoft.Resources/subscriptions/resourceGroups/delete 权限。

若要注册群集和启用了 Arc 的服务器,请在使用环境信息更新这些服务器后运行以下 PowerShell 命令。 以下命令需要 Az.Resources(最低版本 5.6.0)和 Az.Accounts(最低版本 2.7.6)。 可以使用 get-installedModule <module name> cmdlet 检查 PowerShell 模块的已安装版本。

#Connect to subscription
Connect-AzAccount -TenantId <tenant_id> -SubscriptionId <Subscription_ID> -Scope Process

#Create a new application registration
$app = New-AzADApplication -DisplayName "<unique_name>"

#Create a new SPN corresponding to the application registration
$sp = New-AzADServicePrincipal -ApplicationId  $app.AppId -Role "Reader" 

#Roles required on SPN for Arc onboarding
$AzureConnectedMachineOnboardingRole = "Azure Connected Machine Onboarding"
$AzureConnectedMachineResourceAdministratorRole = "Azure Connected Machine Resource Administrator"

#Assign roles to the created SPN
New-AzRoleAssignment -ObjectId $sp.Id -RoleDefinitionName $AzureConnectedMachineOnboardingRole | Out-Null
New-AzRoleAssignment -ObjectId $sp.Id -RoleDefinitionName $AzureConnectedMachineResourceAdministratorRole | Out-Null

# Set password validity time. SPN must be updated on the HCI cluster after this timeframe.
$pwdExpiryInYears = 300
$start = Get-Date
$end = $start.AddYears($pwdExpiryInYears)
$pw = New-AzADSpCredential -ObjectId $sp.Id -StartDate $start -EndDate $end
$password = ConvertTo-SecureString $pw.SecretText -AsPlainText -Force  

# Create SPN credentials object to be used in the register-azstackhci cmdlet
$spnCred = New-Object System.Management.Automation.PSCredential ($app.AppId, $password)
Disconnect-AzAccount -ErrorAction Ignore | Out-Null

# Use the SPN credentials created previously in the register-azstackhci cmdlet
Register-AzStackHCI -SubscriptionId < Subscription_ID> -Region <region> -ArcSpnCredential:$spnCred

Azure Stack HCI 资源是否支持资源移动?

不支持对任何 Azure Stack HCI 资源执行资源移动操作。 若要更改资源的位置,必须先注销群集,然后在 Register-AzStackHCI cmdlet 中传递相应的参数,以将其重新注册到新位置。

有哪些更常用的注册和 Arc cmdlet?

  • 有关 Az.StackHCI PowerShell 模块 cmdlet,请参阅 HCI PowerShell 文档
  • Get-AzureStackHCI:返回 Azure Stack HCI 的当前节点连接和策略信息。
  • Get-AzureStackHCIArcIntegration:返回节点 Arc 集成的状态。
  • Sync-AzureStackHCI:
    • 执行与 Azure 的计费、许可和人口普查同步。
    • 系统每隔 12 小时自动运行此 cmdlet。
    • 仅当群集的 Internet 连接在较长时间内不可用时,才应使用此 cmdlet。
    • 请勿在服务器重新启动后立即运行此 cmdlet;而让自动同步进行。 否则,可能会导致状态不佳。

后续步骤

有关更详细的信息,另请参阅: