排查 Azure Stack HCI 版本 23H2 的Azure 门户部署验证问题

适用于:运行 2405 或更高版本的 Azure Stack HCI 版本 23H2

本文提供有关如何通过 Azure 门户 部署 Azure Stack HCI 群集期间遇到的部署验证问题进行故障排除的指导。

错误 - 部署验证失败

通过 Azure 门户 部署 Azure Stack HCI 版本 23H2 时,可能会遇到部署验证失败。 “Azure Stack HCI 网络 - 检查网络要求”验证任务失败,并出现以下错误:

Could not complete the operation. 400: Resource creation validation failed. Details:
[{"Code":"AnswerFileValidationFailed","Message":"Errors in Value Validation:\r\nPhysicalNodesValidator
found error at deploymentdata.physicalnodes[0].ipv4address: The specified  for 
\u0027deploymentdata.physicalnodes[0].ipv4address\u0027 is not a valid IPv4 address.
Example: 192.168.0.1 or 192.168.0.1","Target":null,"Details":null}].

如果转到Azure 门户部署中的“网络”选项卡,在“网络意向”配置中,可能会看到以下错误:

The selected physical network adapter is not binded to the management virtual switch.

原因

此问题发生在 8 月 6 日之后触发的部署上。 如果在群集上触发部署验证并且验证结果为失败,随后会重试验证,则会出现此问题。

出现此问题的原因如下:

  • 设备上的验证为网络相关测试创建 VM 交换机,并在测试结束时被删除。
  • DeviceManagementExtension 扩展未检测 VM 交换机的删除。

多步骤解决过程包括以下步骤:

注意

本文中的所有步骤都需要在种子节点上执行。

从种子节点中删除锁

按照以下步骤从种子节点中删除锁:

  1. 若要删除锁,在Azure 门户中,请通过资源组或计算机 - Azure Arc 转到该对象。
  2. 在左窗格中,转到 “设置 > 锁定”。 应会看到名为 DoNotDelete锁。 这是在载入节点时创建的自动资源锁。
  3. 针对锁选择“ 删除 ”。

如果在不删除锁的情况下尝试下一部分中的步骤,“ 删除 ”命令将失败,并出现以下错误:

Some resources failed to be deleted (run with `--verbose` for more information):
/subscriptions/<subid>/resourceGroups/<rgname>/providers/Microsoft.HybridCompute/machines/<Machine Name>/providers/Microsoft.AzureStackHCI/edgeDevices/default

下面是使用开关运行时 --verbose 的示例输出:

(ScopeLocked) The scope '/subscriptions/<Subscription ID>/resourceGroups/<Resource Group Name>/providers/Microsoft.HybridCompute/machines/<Machine Name>/providers/Microsoft.AzureStackHCI/edgeDevices/default' cannot perform delete operation because following scope(s) are locked: '/subscriptions/<subid>/resourceGroups/<rgname>/providers/Microsoft.HybridCompute/machines/<Machine Name>'. Please remove the lock and try again.
Code: ScopeLocked
Message: The scope '/subscriptions/<subid>/resourceGroups/<rgname>/providers/Microsoft.HybridCompute/machines/<Machine Name>/providers/Microsoft.AzureStackHCI/edgeDevices/default' cannot perform delete operation because following scope(s) are locked: '/subscriptions/<subid>/resourceGroups/<rgname>/providers/Microsoft.HybridCompute/machines/<Machine Name>'. Please remove the lock and try again.

删除验证错误

删除锁后,请按照以下步骤删除验证错误。

  1. 连接到种子节点。 运行以下 PowerShell 命令:

    Get-VMSwitch
    
  2. 检查命令的输出中是否有任何意外的 Get-VMSwitch VM 交换机,例如,在网络验证步骤中创建的交换机,其名称类似于: "ConvergedSwitch(compute_management)" 交换机的确切名称取决于所选的网络意向配置。

  3. 如果未有意创建的 VM 交换机存在,请删除该交换机。 运行以下 PowerShell 命令:

    Remove-VMSwitch -Name "<VM Switch Name>" -Force
    

    请确保使用命令中的 Get-VMSwitch VM 交换机名称。 如果未有意创建 VM 交换机,该 Get-VMSwitch 命令没有结果。 失败的原因是网络验证步骤清理了 VM 交换机,但 DeviceManagementExtension 未检测到清理。

继续执行清理步骤。

使用不正确的 VM 交换机信息清理 Edge 设备 Azure 资源

删除设备上的 VM 交换机后,通过 Azure CLI 清理包含不正确 VM 交换机信息的边缘设备 ARM 资源。

  1. 在可访问 Azure 的客户端上,验证安装或安装 AZ CLI: 在 Windows 上安装 Azure CLI

    • 可以通过运行以下方法验证安装: az
    • 如果已安装,则输出包含 "Welcome to Azure CLI!" 可用命令的消息。
  2. 使用 Azure CLI 登录到 Azure。 运行以下命令:

    az login --tenant <tenant ID> --use-device-code
    

    有关详细信息, 请使用 Azure CLI 以交互方式登录

  3. 若要设置特定订阅,请运行以下命令:

    az account set --subscription "<Subscription ID>"
    

    将上述示例命令中的值替换为相应的值 <Subscription ID>

  4. 输出资源中 edgeDevices 存储的数据,该数据存储错误存储的 VM 交换机信息。 运行以下命令:

    az resource show --ids "/subscriptions/<Subscription ID>/resourceGroups/<Resource Group Name>/providers/Microsoft.HybridCompute/machines/<Machine Name>/providers/Microsoft.AzureStackHCI/edgeDevices/default"
    

    将上述示例命令中的值替换为相应的值:<Subscription ID><Resource Group Name><Machine Name>

    下面是示例输出:

    az resource show --ids "/subscriptions/<Subscription ID>/resourceGroups/<Resource Group Name>/providers/Microsoft.HybridCompute/machines/ASRR1N26R15U33/providers/Microsoft.AzureStackHCI/edgeDevices/default"
    

    此命令的输出显示有关 <命令中使用的计算机名称> 的相当详细的信息。 在输出底部附近,有一个部分 "switchDetails"可能显示以下内容(这是在设备上创建和清理的验证 VM 交换机),但 DeviceManagementExtension 未检测到并更新了云端): "switchName": "ConvergedSwitch(managementcompute)","switchType": "External"

  5. 确认 show 通过输出 edgeDevices 数据并确认 "switchDetails"命令后,可能需要从 ARM 获取资源, delete 以便从种子节点适当地刷新该命令。

    注意

    edgeDevices删除数据是一项安全操作,但只能在显式声明时执行。 除非建议执行此操作,否则不要执行此操作。

  6. edgeDevices删除资源,该资源存储的 VM 交换机信息不正确。 运行以下命令:

    az resource delete --ids "/subscriptions/<Subscription ID>/resourceGroups/<Resource Group Name>/providers/Microsoft.HybridCompute/machines/<Machine Name>/providers/Microsoft.AzureStackHCI/edgeDevices/default"
    

    将值(还记得删除 <> 字符)替换为以下项的相应值: <subGUID><resourceGROUPNAME><Machine Name>

    这是同一资源--idsshow,因此只能使用相同的字符串。 事实上,你只需在控制台中“向上箭头”并替换为 show delete

    下面是示例输出:

    `az resource delete --ids "/subscriptions/<Subscription ID>/resourceGroups/<Resource Group Name>/providers/Microsoft.HybridCompute/machines/<Machine Name>/providers/Microsoft.AzureStackHCI/edgeDevices/default"
    

    运行时,此命令没有输出。 该命令正常工作并返回命令提示符,或显示错误。 它不应显示错误,但如果出现错误,则需要进行更多故障排除。

  7. 再次运行 show 命令,验证是否删除了资源。 下面是示例输出:

    (ResourceNotFound) The resource 'Microsoft.HybridCompute/machines/<Machine Name>/providers/Microsoft.AzureStackHCI/edgeDevices/default' could not be found.
    Code: ResourceNotFound
    Message: The resource 'Microsoft.HybridCompute/machines/<Machine Name>/providers/Microsoft.AzureStackHCI/edgeDevices/default' could not be found.
    

刷新云 edgeDevices 数据

删除 ARM 资源并删除所有意外的 VM 交换机后,请再次刷新云端 edgeDevices 数据。

按照以下步骤刷新云数据:

  1. DeviceManagementService重启种子节点上。 运行以下 PowerShell 命令:

     Restart-Service DeviceManagementService
    
  2. 等待几分钟,然后验证云 edgeDevices 数据是否已更新并反映当前状态。 show再次运行该命令并查看输出。 确保输出不再包含任何意外的 VM 开关,即:

    "switchName": "ConvergedSwitch(managementcompute)", "switchType": "External"

通过Azure 门户重启部署

现在,使用设备和云数据重新同步,可以转到Azure 门户并提供部署输入。 上一步阻止先前尝试的任何缓存信息。

在 Azure 门户中执行以下步骤:

  1. 在“基本信息”选项卡上,提供输入(通过再次从下拉列表中选择)到顶部的字段。

  2. 取消选中页面底部的节点。

  3. 重新验证重新选择的节点。

  4. 确认后续页面上的信息。 应会看到以下更改:

    • “网络 ”页上,不应再看到 The selected physical network adapter is not binded to the management virtual Switch 以前可能看到的错误。
    • 在末尾的 “验证 ”页上,如果超过原始问题, deploymentdata.physicalnodes[0].ipv4address is not a valid IPv4 address 则不会显示错误。
  5. 如果未出现其他验证问题,请启动部署。

在种子节点资源上重新创建锁

缓解完成后,强烈建议在资源上重新创建锁。

按照以下步骤重新创建锁:

  1. 在Azure 门户中,通过资源组或计算机 - Azure Arc 转到对象。
  2. 转到 “设置 > 锁定”。
  3. 选择页面顶部的“ + 添加 ”。
    1. 对于 锁定名称,请输入 DoNotDelete
    2. 对于 “锁定类型”,请从下拉列表中选择“ 删除 ”。
  4. 选择“确定”保存锁。