Azure Windows VM 代理概述

Azure Windows VM 代理是一个安全、轻型的过程,用于管理虚拟机 (VM) 与 Azure 结构控制器的交互。 Azure Windows VM 代理有一个主要角色,目的是启用和执行 Azure 虚拟机扩展。 利用 VM 扩展,可对 VM 进行部署后配置,例如,安装和配置软件。 VM 扩展还可启用恢复功能,例如重置 VM 的管理密码。 如果没有 Azure Windows VM 代理,则无法运行 VM 扩展。

本文介绍如何安装和检测 Azure Windows VM 代理。

必备条件

Azure Windows VM 代理支持以下 Windows 操作系统的 x64 体系结构:

  • Windows 10
  • Windows 11
  • Windows Server 2008 SP2
  • Windows Server 2008 R2
  • Windows Server 2012
  • Windows Server 2012 R2
  • Windows Server 2016
  • Windows Server 2016 Core
  • Windows Server 2019
  • Windows Server 2019 Core
  • Windows Server 2022
  • Windows Server 2022 Core

重要

  • Azure Windows VM 代理至少需要 Windows Server 2008 SP2(64 位)才能与 .NET Framework 4.0 一起运行。 请参阅 Azure 中的虚拟机代理的最低版本支持

  • 确保你的 VM 可以访问 IP 地址 168.63.129.16。 有关详细信息,请参阅什么是 IP 地址 168.63.129.16?

  • 确保在来宾 VM 内启用 DHCP。 必须这样做,才能从 DHCP 获取主机或构造地址,以便 Azure Windows VM 代理和扩展可以正常工作。 如果需要静态专用 IP 地址,则应通过 Azure 门户或 PowerShell 进行配置,同时确保启用 VM 内的 DHCP 选项。 详细了解如何使用 PowerShell 设置静态 IP 地址。

  • 在嵌套虚拟化 VM 中运行 Azure Windows VM 代理时,可能会导致不可预测的行为,因此在开发/测试方案中不支持该操作。

安装 Azure Windows VM 代理

Azure 市场映像

Azure Windows VM 代理默认安装在任何通过 Azure 市场映像部署的 Windows VM 上。 通过 Azure 门户、PowerShell、Azure CLI 或 Azure 资源管理器模板部署 Azure 市场映像时,也会安装 Azure Windows VM 代理。

Azure Windows VM 代理包有两个部分:

  • Azure Windows 预配代理 (PA)
  • Azure Windows 来宾代理 (WinGA)

要启动 VM,必须在 VM 上安装 PA。 但是,不需要安装 WinGA。 部署 VM 时,可以选择不安装 WinGA。 下面的示例演示如何使用 Azure 资源管理器模板选择 provisionVmAgent 选项:

{
	"resources": [{
		"name": ["parameters('virtualMachineName')"],
		"type": "Microsoft.Compute/virtualMachines",
		"apiVersion": "2016-04-30-preview",
		"location": ["parameters('location')"],
		"dependsOn": ["[concat('Microsoft.Network/networkInterfaces/', parameters('networkInterfaceName'))]"],
		"properties": {
			"osProfile": {
				"computerName": ["parameters('virtualMachineName')"],
				"adminUsername": ["parameters('adminUsername')"],
				"adminPassword": ["parameters('adminPassword')"],
				"windowsConfiguration": {
					"provisionVmAgent": "false"
				}
			}
		}
	}]
}

如果没有安装代理,则无法使用某些 Azure 服务,例如 Azure 备份或 Azure 安全。 这些服务需要安装扩展。 如果在没有 WinGA VM 的情况下部署 VM,稍后可以安装最新版本的代理。

手动安装

可以使用 Windows Installer 包手动安装 Azure Windows VM 代理。 创建部署到 Azure 的自定义 VM 映像时,可能需要手动安装。

若要手动安装 Azure Windows VM 代理,请下载安装程序并选择最新版本。 你还可以在 GitHub 的 Azure Windows VM 代理发布页中搜索特定版本。 Azure Windows VM 代理在 Windows Server 2008 (64 bit) 和更高版本上受支持。

注意

  • 如果 VM 是在未启用 ProvisionVMAgent 的情况下根据自定义映像或市场映像创建的,则在手动安装 Azure Windows VM 代理后,请务必将 AllowExtensionOperations 更新为 true
  • 如果 VM 是从专用磁盘创建的,则不需要这样做。 例如,如果 VM 是从现有磁盘直接创建的。
$vm = Get-AzVM -Name <VM Name> -ResourceGroupName <Resource Group Name>
$vm.OSProfile.AllowExtensionOperations = $true
$vm | Update-AzVM

检测 Azure Windows VM 代理

PowerShell

可以使用 Azure 资源管理器 PowerShell 模块获取有关 Azure VM 的信息。 若要查看有关 VM 的信息,如 Azure Windows VM 代理的预配状态,请使用 Get-AzVM

Get-AzVM

以下浓缩版示例输出显示了嵌套在 OSProfile 中的 ProvisionVMAgent 属性。 可以使用此属性来确定 VM 代理是否已部署到 VM。

OSProfile                  :
  ComputerName             : myVM
  AdminUsername            : myUserName
  WindowsConfiguration     :
    ProvisionVMAgent       : True
    EnableAutomaticUpdates : True

使用以下脚本返回一个简明的列表,其中包含 VM 名称(运行中的 Windows OS)以及 Azure Windows VM 代理的状态:

$vms = Get-AzVM

foreach ($vm in $vms) {
    $agent = $vm | Select -ExpandProperty OSProfile | Select -ExpandProperty Windowsconfiguration | Select ProvisionVMAgent
    Write-Host $vm.Name $agent.ProvisionVMAgent
}

使用以下脚本返回一个简明的列表,其中包含 VM 名称(运行中的 Linux OS)以及 Azure Windows VM 代理的状态:

$vms = Get-AzVM

foreach ($vm in $vms) {
    $agent = $vm | Select -ExpandProperty OSProfile | Select -ExpandProperty Linuxconfiguration | Select ProvisionVMAgent
    Write-Host $vm.Name $agent.ProvisionVMAgent
}

手动检测

登录到 Windows VM 后,可以使用任务管理器检查正在运行的进程。 要查看 Azure Windows VM 代理,请打开任务管理器 > 选择“详细信息”选项卡,并查找名为 WindowsAzureGuestAgent.exe 的进程。 存在该进程表示 VM 代理已安装。

升级 Azure Windows VM 代理

适用于 Windows 的 Azure Windows VM 代理会在从 Azure 市场部署的映像上自动升级。 新版本存储在 Azure 存储中,因此请确保不会有防火墙阻止访问。 新 VM 部署到 Azure 后,会在 VM 预配时获得最新 VM 代理。 如果手动安装了代理或正在部署自定义 VM 映像,则需要在创建映像时进行手动更新以包括新的 VM 代理。

Azure Windows 来宾代理自动日志收集

Azure Windows 来宾代理具有自动收集某些日志的功能。 CollectGuestLogs.exe 进程控制此功能。 它同时适用于平台即服务 (PaaS) 云服务和基础结构即服务 (IaaS) VM。 它的目标是快速自动地收集 VM 的诊断日志,以便进行离线分析。

收集的日志包括事件日志、OS 日志、Azure 日志和一些注册表项。 代理会生成一个 ZIP 文件,该文件会传输到 VM 的主机。 然后,工程团队和支持专业人员可以使用此 ZIP 文件根据拥有 VM 的客户的请求调查问题。

Azure Windows 来宾代理和 OSProfile 证书

Azure Windows VM 代理会安装 VM 或虚拟机规模集的 OSProfile 值中引用的证书。 如果从来宾 VM 内的 Microsoft 管理控制台 (MMC) 证书管理单元手动删除这些证书,Azure Windows 来宾代理将重新添加这些证书。 若要永久删除证书,必须先将其从 OSProfile 中删除,然后再从来宾操作系统内将其删除。

对于虚拟机,请使用 Remove-AzVMSecretOSProfile 中删除证书。

有关虚拟机规模集证书的详细信息,请参阅 Azure 虚拟机规模集 - 如何删除已弃用的证书?

后续步骤

有关 VM 扩展的详细信息,请参阅 Azure 虚拟机扩展和功能