管理由 Azure Arc 启用的 Azure 本地 VM

适用于:Azure Local 2311.2 及更高版本

本文介绍如何管理由 Azure Arc 启用的 Azure 本地虚拟机(VM)。详细介绍了启用来宾管理、启动、停止、重启、暂停、保存或删除 Azure 本地 VM 的过程。

先决条件

  • 访问已部署和注册的 Azure Local 实例。 Azure Local 实例的部署包括创建 Azure Arc 资源网桥和自定义位置。

    转到 Azure 中的资源组。 显示的信息包括为 Azure Local 创建的自定义位置和 Azure Arc 资源桥。 记下订阅、资源组和自定义位置。 本方案后面会用到它们。

  • 在 Azure 本地实例上运行的一个或多个 Azure 本地虚拟机。 有关详细信息,请参阅 “创建 Azure 本地虚拟机”。

  • Azure 本地 VM 必须有权访问公共网络连接才能启用来宾管理。

启用来宾管理

请务必了解来宾管理上下文中的两个代理:VM 来宾代理和 Azure Connected Machine 代理。 通过 Azure 门户或 Azure CLI 创建的每个 Azure 本地 VM 都使用来宾代理(也称为) mocguestagent对其进行预配。

在 Azure 本地 VM 上启用来宾管理时,来宾代理将安装 Azure Connected Machine 代理。 使用 Azure Connected Machine 代理管理 VM 上的 Azure 本地 VM 扩展。

以下是在为 VM 完成预配后启用来宾管理的一些关键注意事项:

  • 确保 Azure Local 实例运行的是 2311.2 或更高版本。
  • Windows Server 2012 和 Windows Server 2012 R2 不支持在 VM 预配后启用来宾管理。
  • 启用来宾管理的步骤因来宾代理是否在 Azure 本地 VM 上运行而有所不同。

验证来宾代理是否正在运行

验证来宾代理是否在 Azure 本地 VM 上运行:

  1. 连接到计算机。

  2. 运行下面的命令:

    az stack-hci-vm show --name "<VM name>" --resource-group "<Resource group name>"
    

    下面是一个示例输出片段,指示来宾代理正在运行。 请在输出中查找 statuses 下的 vmAgent

    "instanceView": {
      "vmAgent": {
        "statuses": [
          {
            "code": "ProvisioningState/succeeded",
            "displayStatus": "Connected",
            "level": "Info",
            "message": "Successfully established connection with mocguestagent",
            "time": "2024-01-13T00:57:39Z"
          },
          {
            "code": "ProvisioningState/succeeded",
            "displayStatus": "Connected",
            "level": "Info",
            "message": "New mocguestagent version detected 'v0.13.0-3-gd13b4794",
            "time": "2024-01-13T00:57:39Z"
          }
        ],
        "vmConfigAgentVersion": "v0.13.0-3-gd13b4794"
      }
    }
    

    statuses 指示 codeProvisioningState/succeeded,指示 displayStatusConnected 时,来宾代理正在运行。

    如果运行的版本较旧,statuses 指示 codeOK,指示 displayStatusActive.

如果状态与前面的输出不匹配,请按照在来宾代理未运行时启用来宾管理中的步骤进行操作。

当来宾代理运行时,在 VM 上启用来宾管理

若要在运行来宾代理的 Azure 本地 VM 上启用来宾管理,请执行以下作:

  1. 运行以下命令,将 enable-agent 参数设置为 true

    az stack-hci-vm update --name "mylocal-vm" --enable-agent true --resource-group "mylocal-rg"
    

    来宾管理需要几分钟才能启用。

  2. 验证是否已启用来宾管理。 请按照 验证 Azure 门户中是否启用来宾管理 中的步骤进行操作。

当来宾代理未运行时,在 VM 上启用来宾管理

来宾代理不会在两种情况下运行:当状态为 Connecting 或状态为 null 时。 以下部分介绍这些方案和相应的步骤。

状态显示为“正在连接”

此示例输出片段显示 Connecting 的状态:

"instanceView": {
      "vmAgent": {
        "statuses": [
          {
            "code": "ProvisioningState/InProgress",
            "displayStatus": "Connecting",
            "level": "Info",
            "message": "Waiting for connection with mocguestagent",
            "time": "2024-01-19T01:41:15Z"
          }
        ]
      }
    },

statuses 指示 codeProvisioningState/InProgress,指示 displayStatusConnecting 时,来宾代理未在运行。

如果运行的版本较旧,statuses 指示 codeOK,指示 displayStatusActive,指示 messageSuccessfully started HyperV listener

执行以下步骤:

  1. 使用特定于 OS 的步骤连接到 VM。 以管理员身份运行 Azure PowerShell。

  2. 运行以下命令之一,以根据操作系统类型在虚拟机上启用客户代理。

    对 Linux 使用此命令:

    sudo -- sh -c 'mkdir /mociso && mount -L mocguestagentprov /mociso && bash /mociso/install.sh && umount /mociso && rm -df /mociso && eject LABEL=mocguestagentprov'
    

    对 Windows 使用此命令:

    $d=Get-Volume -FileSystemLabel mocguestagentprov;$p=Join-Path ($d.DriveLetter+':\') 'install.ps1';powershell $p
    

    下面是 Linux VM 的示例输出,显示了来宾代理的成功安装。

    显示来宾代理已成功在 VM 上启用的屏幕截图。

  3. 连接到其中一台计算机。 运行以下命令以启用来宾管理:

    az stack-hci-vm update --name "mylocal-vm" --enable-agent true --resource-group "mylocal-rg"
    
  4. 验证是否已启用来宾管理。 请按照 验证 Azure 门户中是否启用来宾管理 中的步骤进行操作。

状态显示为 null

以下示例输出代码片段显示 null 状态。 此状态指示缺少来宾代理所需的 iso

"instanceView": {
      "vmAgent": {
        "statuses": []
      }
    },

执行以下步骤:

  1. 连接到计算机。

  2. 运行下面的命令:

    az stack-hci-vm update --name "<VM Name>" --resource-group "<Resource group name>" --enable-vm-config-agent true
    

    enable-vm-config-agent 参数装载来宾代理所需的 iso

  3. 等待几分钟,然后重新运行 az stack-hci-vm show 命令。 当状态显示 Connecting 时,请按照状态显示为“正在连接”中的步骤进行操作。

验证 Azure 门户中是否启用了来宾管理

  1. 转到 Azure 门户。

  2. 转到 Azure 本地>虚拟机,然后选择在其上启用了访客管理功能的 VM。

  3. 在“ 概述 ”页上的“ 属性 ”选项卡上,转到 “配置”。 来宾管理应显示“已启用”(已连接)。

    Azure 门户的屏幕截图,其中显示了用于验证是否已启用来宾管理的区域。

查看 VM 属性

若要查看 Azure Local 实例的 VM 属性,请在 Azure 门户中执行以下步骤:

  1. 转到 Azure 本地资源,然后转到 虚拟机

  2. 在虚拟机列表中,选择要查看其属性的 VM 的名称。

    从虚拟机列表中选择的虚拟机的屏幕截图。

  3. 在“ 概述 ”页上,选择“ 属性 ”选项卡以查看 VM 的属性。

    所选 Azure 本地虚拟机的属性的屏幕截图。

启动 VM

若要启动 VM,请在 Azure 门户中为 Azure Local 实例执行以下步骤:

  1. 转到 Azure 本地资源,然后转到 虚拟机

  2. 在虚拟机列表中,选择要启动但未运行的 VM。

  3. 在 VM 的“概述”页上,在命令栏上,选择“开始”

    用于在概述页上启动虚拟机的按钮的屏幕截图。

  4. 在确认对话框中,选择“ ”。

  5. 验证 VM 是否已启动。

重新启动 VM

若要重启 VM,请在 Azure 门户中为 Azure Local 实例执行以下步骤:

  1. 转到 Azure 本地资源,然后转到 虚拟机

  2. 在虚拟机列表中,选择要重启但已停止的 VM。

  3. 在 VM 的 “概述 ”页上,在命令栏上,选择“ 重启”。

    用于在概述页上重启虚拟机的按钮的屏幕截图。

  4. 在确认对话框中,选择“ ”。

  5. 验证 VM 是否已重启。

停止虚拟机

若要停止 VM,请在 Azure 门户中为 Azure Local 实例执行以下步骤:

  1. 转到 Azure 本地资源,然后转到 虚拟机

  2. 在虚拟机列表中,选择要停止但在运行的 VM。

  3. 在 VM 的 “概述 ”页上,在命令栏上,选择“ 停止”。

    用于在概述页上停止虚拟机的按钮的屏幕截图。

  4. 在确认对话框中,选择“ ”。

  5. 验证 VM 是否已停止。

暂停虚拟机

当不使用 VM 时,暂停 VM 有助于节省计算资源。 暂停 VM 会停止任何 CPU 活动。

只能暂停正在运行的 VM。 暂停 VM 后,可以稍后恢复。

若要暂停 VM,请在 Azure 门户中为 Azure 本地实例执行以下步骤:

  1. 转到 Azure 本地资源,然后转到 虚拟机

  2. 在虚拟机列表中,选择要暂停的当前正在运行的 VM。

  3. 在 VM 的 “概述 ”页上,在命令栏上,选择“ 暂停”。

    在概述页上暂停虚拟机的按钮的屏幕截图。

  4. 在确认对话框中,选择“ ”。

  5. 验证 VM 的状态是否已更改为 “已暂停”。

保存虚拟机

保存 VM 会将其当前状态存储到磁盘并停止 VM。 保存 VM 会释放内存和 CPU 资源。 只能保存正在运行的 VM。

若要保存 VM,请在 Azure 门户中为 Azure 本地实例执行以下步骤:

  1. 转到 Azure 本地资源,然后转到 虚拟机

  2. 在虚拟机列表中,选择要保存的当前正在运行的 VM。

  3. 在 VM 的 “概述 ”页上,在命令栏上,选择“ 保存”。

    用于在概述页上保存虚拟机的按钮的屏幕截图。

  4. 在确认对话框中,选择“ ”。

  5. 验证 VM 的状态是否已更改为 “已保存”。

删除 VM

删除 VM 不会删除与 VM 关联的所有资源。 例如,不会删除与 VM 关联的数据磁盘和网络接口。 需要单独查找和删除这些资源。

若要删除 VM,请在 Azure 门户中为 Azure Local 实例执行以下步骤:

  1. 转到 Azure 本地资源,然后转到 虚拟机

  2. 在虚拟机列表中,选择要从系统中删除的 VM。

  3. 在 VM 的 “概述 ”页上的命令栏中,选择“ 删除”。

  4. 在确认对话框中,选择“ ”。

    删除虚拟机的警告的屏幕截图。

  5. 转到部署此 VM 的资源组。 验证是否已将 VM 从资源组中的资源列表中删除。

  6. 找到关联的资源,例如网络接口和数据磁盘,并删除。 可能需要选择“ 显示隐藏类型 ”以查看与此 VM 关联的资源(未删除)。

    与虚拟机关联的隐藏类型的资源的屏幕截图。

更改本地帐户密码

按照以下步骤更改部署在 Azure 本地实例上的 Azure 本地 VM 的本地帐户密码。 Windows 和 Linux VM 的步骤不同。

更改 Windows VM 的本地帐户密码

  1. 登录到 Azure 本地 VM。

  2. 请运行以下 Azure PowerShell 命令:

    # Define the username
    $username = "AccountName"
    
    # Prompt the user to enter the new password
    $newPassword = Read-Host -AsSecureString "Enter the new password for $username"
    
    # Prompt the user to re-enter the new password for verification
    $verifyPassword = Read-Host -AsSecureString "Re-enter the new password for verification"
    
    # Convert the secure strings to plain text for comparison
    $plainPassword = [Runtime.InteropServices.Marshal]::PtrToStringAuto([Runtime.InteropServices.Marshal]::SecureStringToBSTR($newPassword))
    $plainVerifyPassword = [Runtime.InteropServices.Marshal]::PtrToStringAuto([Runtime.InteropServices.Marshal]::SecureStringToBSTR($verifyPassword))
    
    # Check if the passwords match, and change the password if they match. Fail if the passwords don't match.
    if ($plainPassword -eq $plainVerifyPassword) {
        $account = [ADSI]"WinNT://./$username,user"
        $account.SetPassword($plainPassword)
        $account.SetInfo()
    
        Write-Host "Password for user $username has been reset successfully." -ForegroundColor Green
    } else {
        Write-Host "The passwords do not match. Please try again." -ForegroundColor Red
    }    
    

更改 Linux VM 的本地帐户密码

如果 Bash 位于其他目录中,请务必相应地更改 #!/bin/bash 行。

  1. 登录到 Azure 本地 VM。

  2. 从安装 Bash 的位置运行以下脚本:

    #!/bin/bash
    
    # Define the username
    username="AccountName"
    
    # Prompt the user to enter the new password
    echo -n "Enter the new password for $username: "
    read -s newPassword
    echo
    
    # Prompt the user to re-enter the new password for verification
    echo -n "Re-enter the new password for verification: "
    read -s verifyPassword
    echo
    
    # Check if the passwords match
    if [ "$newPassword" == "$verifyPassword" ]; then
        # Reset the password for the local account
        echo "$username:$newPassword" | sudo chpasswd
        echo -e "\e[32mPassword for user $username has been reset successfully.\e[0m"
    else
        echo -e "\e[31mThe passwords do not match. Please try again.\e[0m"
    fi
    

执行 Azure 本地 VM 的实时迁移

Azure 本地虚拟机可以通过诸如故障转移群集管理器Windows Admin Center等本地工具实现跨Azure本地节点的实时迁移。 不支持实时迁移 VM 存储。

更改核心和内存

若要更改核心和内存,请在 Azure 门户中为 Azure Local 实例执行以下步骤:

  1. 转到 Azure 本地资源,然后转到 虚拟机

  2. 在 VM 列表中,选择并转到要修改其核心和内存的 VM。

  3. 在“设置”下,选择“大小”。 编辑 虚拟处理器计数内存(MB) 值以更改 VM 的核心或内存大小。 对于内存,只能更改大小。 VM 创建完成后,不能修改内存类型。

    用于更改 VM 核心和内存大小的窗格的屏幕截图。

更改动态内存

可以使用 CLI 更改 VM 的动态内存来指定以下参数:

--hardware-profile vm-size="Custom" processors=1 memory-mb=1024 maximum-memory-mb=2048 minimum-memory-mb=1024 target-memory-buffer=20

请注意, minimum-memory-mb 小于或等于 memory-mbmaximum-memory-mb 大于或等于 memory-mb

下面是一个示例脚本:

az stack-hci-vm create --name "my_dynmemory" -g my_registration" --admin-username "admin" --admin-password "" --custom-location "/subscriptions/my_subscription/resourceGroups/my_registration/providers/Microsoft.ExtendedLocation/customLocations/my_customlocation" --location "eastus2euap" --image "/subscriptions/my_subscription/resourceGroups/my_registration/microsoft.azurestackhci/marketplacegalleryimages/2022-datacenter-azure-edition-core-01" --hardware-profile vm-size="Custom" processors=1 memory-mb=1024 maximum-memory-mb=2048 minimum-memory-mb=1024 target-memory-buffer=20 --enable-agent true --nics "dynnic"

来宾管理启用支持

以下操作系统(OS)支持来宾管理启用:

Windows 操作系统

  • Windows Server 2025
  • Windows Server 2022
  • Windows Server2019
  • Windows Server 2016
  • Windows 10操作系统
  • Windows 11

Linux操作系统