管理并维护 Connected Machine 代理

注意

本文引用了 CentOS,这是一个处于生命周期结束 (EOL) 状态的 Linux 发行版。 请相应地考虑你的使用和规划。 有关详细信息,请参阅 CentOS 生命周期结束指南

最开始部署 Azure Connected Machine 代理后,可能需要重新配置代理,升级该代理,或者将其从计算机中删除。 可以轻松地手动或自动(这可减少运行错误并降低费用)执行这些日常维护任务。 本文介绍代理的操作方面。 有关命令行参考信息,请参阅 azcmagent CLI 文档

安装特定版本的代理

Azure 建议使用最新版本的 Azure Connected Machine 代理来获得最佳体验。 但是,如果你出于任何原因需要运行旧版代理,可以按照这些说明安装特定版本的代理。

每篇发行说明的标题下方提供了当前和以前版本的 Windows 代理的链接。 如果你需要六个月以前发布的代理版本,请查看发行说明存档

升级代理

Azure Connected Machine 代理会定期更新以处理 bug 修补程序、稳定性增强功能和新功能。 Azure 顾问可识别未使用最新版 Machine Agent 的资源,并建议升级到最新版本。 当你选择已启用 Azure Arc 的服务器或通过 Azure 门户访问顾问时,它会通过在“概述”页上提供横幅来通知你

适用于 Windows 和 Linux 的 Azure Connected Machine 代理可以手动或自动升级到最新版本,具体取决于你的要求。 安装、升级或卸载 Azure Connected Machine Agent 无需重启服务器。

下表介绍了执行代理升级所支持的方法:

操作系统 升级方法
Windows 手动
Microsoft Update
Ubuntu Apt
SUSE Linux Enterprise Server zypper

Windows 代理

可从以下位置获取基于 Windows 的计算机的 Azure Connected Machine 代理的最新版本:

Microsoft 更新配置

建议通过 Microsoft 更新让 Windows 代理自动获取最新版本。 这使你可以利用现有的更新基础结构(例如 Microsoft Configuration Manager 或 Windows Server Update Services),并将 Azure Connected Machine 代理更新包含在你的常规操作系统更新计划中。

默认情况下,Windows 服务器不会检查 Microsoft 更新中的更新。 若要接收 Azure Connected Machine Agent 的自动更新,必须配置计算机上的 Windows 更新客户端,以检查其他 Microsoft 产品。

对于属于某个工作组并连接到 Internet 以检查更新的 Windows 服务器,你可以通过以管理员身份在 PowerShell 中运行以下命令来启用 Microsoft 更新:

$ServiceManager = (New-Object -com "Microsoft.Update.ServiceManager")
$ServiceID = "7971f918-a847-4430-9279-4a52d1efe18d"
$ServiceManager.AddService2($ServiceId,7,"")

对于属于域并连接到 Internet 以检查更新的 Windows 服务器,你可以使用组策略大规模配置此设置:

  1. 使用一个帐户登录用于服务器管理的计算机,该帐户可以管理组织的组策略对象 (GPO)。

  2. 打开“组策略管理控制台”

  3. 展开林、域和组织单位,以便为新 GPO 选择适当的范围。 如果已有要修改的 GPO,请跳到步骤 6。

  4. 右键单击容器并选择“在此域中创建 GPO 并将其链接到此处……”。

  5. 提供策略的名称,例如“启用 Microsoft 更新”。

  6. 右键单击策略并选择“编辑”。

  7. 导航至“计算机配置”>“管理模板”>“Windows 组件”>“Windows 更新”。

  8. 选择“配置自动更新”设置进行编辑。

  9. 选择“已启用”单选按钮使策略生效。

  10. 在“选项”部分底部,选中底部的“安装其他 Microsoft 产品的更新”框

  11. 选择“确定”

所选范围内的计算机下次刷新其策略时,它们将开始检查 Windows 更新和 Microsoft 更新中的更新。

对于使用 Microsoft Configuration Manager (MECM) 或 Windows Server Update Services (WSUS) 将更新传送至其服务器的组织,需要配置 WSUS 以同步 Azure Connected Machine Agent 包并批准这些包在服务器上安装。 按照 Windows Server Update ServicesMECM 的指南将以下产品和分类添加到配置中:

  • 产品名称:Azure Connected Machine Agent(选择所有 3 个子选项)
  • 分类:关键更新和更新

同步更新后,可以选择将 Azure Connected Machine Agent 产品添加到自动审批规则中,以便服务器自动与最新的代理软件保持同步。

使用安装向导进行手动升级

  1. 使用具有管理权限的帐户登录到计算机。

  2. https://aka.ms/AzureConnectedMachineAgent 下载最新的代理安装程序

  3. 运行“AzureConnectedMachineAgent.msi”以启动安装向导。

如果安装向导发现以前版本的代理,则会自动升级它。 升级完成后,安装向导将自动关闭。

从命令行升级

如果不熟悉 Windows Installer 包的命令行选项,请查看 Msiexec 标准命令行选项Msiexec 命令行选项

  1. 使用具有管理权限的帐户登录到计算机。

  2. https://aka.ms/AzureConnectedMachineAgent 下载最新的代理安装程序

  3. 若要无提示地升级代理并在 C:\Support\Logs 文件夹中创建安装日志文件,请运行以下命令:

    msiexec.exe /i AzureConnectedMachineAgent.msi /qn /l*v "C:\Support\Logs\azcmagentupgradesetup.log"
    

Linux 代理

更新 Linux 计算机上的代理涉及两个命令:一个命令用于使用存储库中的最新可用包列表更新本地包索引,另一个命令用于升级本地包。

可以从 Microsoft 的包存储库下载最新的代理包。

注意

若要升级代理,必须拥有根访问权限,或者具有已使用 Sudo 提升权限的帐户。

升级 Ubuntu 上的代理

  1. 若要使用存储库中所进行的最新更改更新本地包索引,请运行以下命令:

    sudo apt update
    
  2. 若要升级系统,请运行以下命令:

    sudo apt upgrade azcmagent
    

apt 命令的操作(如安装和删除包)记录在 /var/log/dpkg.log 日志文件中。

升级 Red Hat/CentOS/Oracle Linux/Amazon Linux 上的代理

  1. 若要使用存储库中所进行的最新更改更新本地包索引,请运行以下命令:

    sudo yum check-update
    
  2. 若要升级系统,请运行以下命令:

    sudo yum update azcmagent
    

yum 命令的操作(如安装和删除包)记录在 /var/log/yum.log 日志文件中。

升级 SUSE Linux Enterprise 上的代理

  1. 若要使用存储库中所进行的最新更改更新本地包索引,请运行以下命令:

    sudo zypper refresh
    
  2. 若要升级系统,请运行以下命令:

    sudo zypper update azcmagent
    

zypper 命令的操作(如安装和删除包)记录在 /var/log/zypper.log 日志文件中。

代理自动升级

发布新版本时,Azure Connected Machine 代理不会自动升级自身。 应将最新版本的代理包含在计划的补丁周期中。

重命名已启用 Azure Arc 的服务器资源

如果更改连接到已启用 Azure Arc 的服务器的 Linux 或 Windows 计算机的名称,则不会自动识别新名称,因为 Azure 中的资源名称是不可变的。 与其他 Azure 资源一样,必须删除并重新创建资源,才能使用新名称。

对于已启用 Azure Arc 的服务器,在重命名计算机之前,需要先删除 VM 扩展,然后才能继续:

  1. 使用 Azure CLIAzure PowerShell 来审核计算机上安装的 VM 扩展并记录其配置。

  2. 移除计算机上安装的所有 VM 扩展。 可以使用 Azure 门户Azure CLIAzure PowerShell 执行此操作。

  3. 结合使用 azcmagent 工具与 Disconnect 参数从 Azure Arc 中断开计算机的连接,然后从 Azure 中删除计算机资源。 以交互方式登录时,可使用 Azure 标识访问令牌或用于加入的服务主体(或使用创建的新服务主体)手动运行此操作。

    从已启用 Azure Arc 的服务器断开计算机的连接时,不会移除 Connected Machine Agent,并且你在此过程中不需要移除该代理。

  4. 将 Connected Machine 代理重新注册到已启用 Azure Arc 的服务器。 使用 Connect 参数运行 azcmagent 工具即可完成此步骤。 默认情况下代理将使用计算机的当前主机名,但你可以通过将参数传递 --resource-name 到连接命令来选择自己的资源名称。

  5. 重新部署最初部署到已启用 Azure Arc 的服务器中的计算机的 VM 扩展。 如果使用 Azure Policy 定义部署了用于 VM 的 Azure Monitor(见解)代理或 Log Analytics 代理,将在下一个评估周期后重新部署这些代理。

卸载代理

对于不再想要通过已启用 Azure Arc 的服务器进行管理的服务器,请按照以下步骤从服务器中删除任何 VM 扩展,断开代理连接,然后从服务器中卸载软件。 必须依次完成所有这些步骤,才能完全移除系统中所有相关的软件组件。

步骤 1:删除 VM 扩展

如果已经将 Azure VM 扩展部署到已启用 Azure Arc 的服务器中,则必须先卸载这些扩展,然后才能断开代理连接或卸载软件。 卸载 Azure Connected Machine 代理并不会自动移除扩展,如果将服务器重新连接到 Azure Arc,则不会识别这些扩展。

有关如何在已启用 Azure Arc 的服务器上识别和删除任何扩展的指南,请参阅以下资源:

步骤 2:断开服务器与 Azure Arc 的连接

断开代理会删除服务器相应的 Azure 资源,并清除代理的本地状态。 若要断开代理连接,请在服务器上以管理员身份运行 azcmagent disconnect 命令。 系统将提示你使用有权删除订阅中资源的 Azure 帐户登录。 如果已在 Azure 中删除资源,请传递附加标志来清除本地状态 azcmagent disconnect --force-local-only

步骤 3a:卸载 Windows 代理

以下两种方法都将移除代理,但不会移除计算机上的“C:\Program Files\AzureConnectedMachineAgent”文件夹

从控制面板卸载

按照以下步骤从计算机中卸载 Windows 代理:

  1. 使用拥有管理员权限的帐户登录到计算机。

  2. 在“控制面板”中,选择“程序和功能”。

  3. 在“程序和功能”中,依次选择“Azure Connected Machine Agent”、“卸载”、“是”。

还可以直接从代理安装向导删除 Windows 代理。 运行 AzureConnectedMachineAgent.msi 安装程序包以执行此操作。

从命令行卸载

可以使用以下示例,从命令提示符手动卸载代理或使用自动化方法(如脚本)。 首先,需要从操作系统中检索产品代码,即应用程序包的主体标识符 GUID。 使用 Msiexec.exe 命令行 (msiexec /x {Product Code}) 执行卸载。

  1. 打开注册表编辑器。

  2. 在注册表项 HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Uninstall 下,查找并复制产品代码 GUID。

  3. 使用 Msiexec 卸载代理,如以下示例所示:

    • 通过命令行类型:

      msiexec.exe /x {product code GUID} /qn
      
    • 可使用 PowerShell 执行相同的步骤:

      Get-ChildItem -Path HKLM:\Software\Microsoft\Windows\CurrentVersion\Uninstall | `
      Get-ItemProperty | `
      Where-Object {$_.DisplayName -eq "Azure Connected Machine Agent"} | `
      ForEach-Object {MsiExec.exe /x "$($_.PsChildName)" /qn}
      

步骤 3b:卸载 Linux 代理

备注

若要卸载代理,必须拥有根访问权限,或者具有已使用 sudo 提升权限的帐户。

用于卸载 Linux 代理的命令取决于 Linux 操作系统。

  • 对于 Ubuntu,请运行以下命令:

    sudo apt purge azcmagent
    
  • 对于 RHEL、CentOS、Oracle Linux 和 Amazon Linux,请运行以下命令:

    sudo yum remove azcmagent
    
  • 对于 SLES,请运行以下命令:

    sudo zypper remove azcmagent
    

更新或删除代理设置

若要将代理配置为在部署后通过代理服务器与服务进行通信或在部署后删除此配置,请使用下面介绍的方法之一。 请注意,在此情况下,代理使用 HTTP 协议进行出站通信。

从代理版本 1.13 开始,可以使用 azcmagent config 命令或系统环境变量配置代理设置。 如果在代理配置和系统环境变量中都指定了代理服务器,代理配置将优先并成为有效设置。 使用 azcmagent show 查看代理的有效代理配置。

注意

已启用 Azure Arc 的服务器不支持使用需要身份验证、TLS (HTTPS) 连接或 Log Analytics 网关的代理服务器作为 Connected Machine 代理的代理服务器。

代理特定的代理配置

代理特定的代理配置从 Azure Connected Machine 代理 1.13 版开始可用,并且是配置代理服务器设置的首选方式。 此方法可防止 Azure Connected Machine 代理的代理设置干扰系统中的其他应用程序。

备注

Azure Arc 部署的扩展将不会继承代理特定的代理配置。 有关如何为每个扩展配置代理设置的指南,请参阅部署扩展的文档。

若要将代理配置为通过代理服务器进行通信,请运行以下命令:

azcmagent config set proxy.url "http://ProxyServerFQDN:port"

可以使用 IP 地址或简单主机名代替 FQDN(如果你的网络要求你这样做)。 如果你的代理服务器在端口 80 上运行,你可以在末尾省略“:80”。

要检查代理设置中是否配置了代理服务器 URL,请运行以下命令:

azcmagent config get proxy.url

要阻止代理通过代理服务器进行通信,请运行以下命令:

azcmagent config clear proxy.url

使用 azcmagent config 命令重新配置代理设置时,无需重新启动任何服务。

专用终结点的代理绕过

从代理版本 1.15 开始,还可以指定不应使用指定的代理服务器的服务。 这有助于拆分网络设计和专用终结点方案,在这些情况中,你希望 Microsoft Entra ID 和 Azure 资源管理器流量通过代理服务器到达公共终结点,但希望 Azure Arc 流量跳过代理并与网络上的专用 IP 地址通信。

代理绕过功能不要求输入要绕过的特定 URL。 而是要你提供不应使用代理服务器的服务的名称。 位置参数引用 Arc 服务器的 Azure 区域。

当代理绕过值设置为 ArcData 时,只会绕过适用于 SQL Server 的 Azure 扩展的流量而不会绕过 Arc 代理的流量。

代理绕过值 受影响的终结点
AAD login.chinacloudapi.cn
login.partner.microsoftonline.cn
pas.chinacloudapi.cn
ARM management.chinacloudapi.cn
Arc his.arc.azure.cn
guestconfiguration.azure.cn

若要使 Microsoft Entra ID 和 Azure 资源管理器流量通过代理服务器,但使 Azure Arc 流量跳过代理,请运行以下命令:

azcmagent config set proxy.url "http://ProxyServerFQDN:port"
azcmagent config set proxy.bypass "Arc"

若要提供服务的列表,请用逗号分隔服务名称:

azcmagent config set proxy.bypass "ARM,Arc"

若要清除代理绕过,请运行以下命令:

azcmagent config clear proxy.bypass

可以通过运行 azcmagent show 来查看有效的代理服务器和代理绕过配置。

Windows 环境变量

在 Windows 上,Azure Connected Machine 代理将首先检查 proxy.url 代理配置属性(从代理版本 1.13 开始),然后检查系统范围的 HTTPS_PROXY 环境变量以确定要使用的代理服务器。 如果两者都为空,则不使用代理服务器,即使配置了默认的 Windows 系统范围的代理设置。

Azure 建议使用代理特定的代理配置而不是系统环境变量。

若要设置代理服务器环境变量,请运行以下命令:

# If a proxy server is needed, execute these commands with the proxy URL and port.
[Environment]::SetEnvironmentVariable("HTTPS_PROXY", "http://ProxyServerFQDN:port", "Machine")
$env:HTTPS_PROXY = [System.Environment]::GetEnvironmentVariable("HTTPS_PROXY", "Machine")
# For the changes to take effect, the agent services need to be restarted after the proxy environment variable is set.
Restart-Service -Name himds, ExtensionService, GCArcService

若要将代理配置为停止通过代理服务器进行通信,请运行以下命令:

[Environment]::SetEnvironmentVariable("HTTPS_PROXY", $null, "Machine")
$env:HTTPS_PROXY = [System.Environment]::GetEnvironmentVariable("HTTPS_PROXY", "Machine")
# For the changes to take effect, the agent services need to be restarted after the proxy environment variable removed.
Restart-Service -Name himds, ExtensionService, GCArcService

Linux 环境变量

在 Linux 上,Azure Connected Machine 代理首先检查 proxy.url 代理配置属性(从代理版本 1.13 开始),然后检查为 himds、GC_Ext 和 GCArcService 守护程序设置的 HTTPS_PROXY 环境变量。 包含一个脚本,它将为 Azure Connected Machine 代理和计算机上的所有其他服务配置 systemd 的默认代理设置,以使用指定的代理服务器。

若要将代理配置为通过代理服务器进行通信,请运行以下命令:

sudo /opt/azcmagent/bin/azcmagent_proxy add "http://ProxyServerFQDN:port"

若要删除环境变量,请运行以下命令:

sudo /opt/azcmagent/bin/azcmagent_proxy remove

从环境变量迁移到代理特定的代理配置

如果你已经在使用环境变量为 Azure Connected Machine 代理配置代理服务器,并且想要迁移到基于本地代理设置的代理特定的代理配置,请按照以下步骤操作:

  1. 将 Azure Connected Machine 代理升级到最新版本(从 1.13 版开始)以使用新的代理配置设置。

  2. 通过运行 azcmagent config set proxy.url "http://ProxyServerFQDN:port",使用你的代理服务器信息配置代理。

  3. 按照适用于 WindowsLinux 的步骤删除未使用的环境变量。

已启用 Azure Arc 的服务器断开连接时发出警报

Connected Machine Agent 每 5 分钟向服务发送一条定期检测信号消息。 如果某台已启用 Arc 的服务器有 15 分钟以上停止向 Azure 发送检测信号,则可能表示该服务器处于脱机状态、网络连接已被阻止,或者代理未运行。 制定一个计划,了解如何响应和调查这些事件,包括设置资源运行状况警报,以在发生此类事件时收到通知。

后续步骤

  • Connected Machine 代理故障排除指南中可以找到故障排除信息。

  • 查看规划和部署指南,以便对按任意规模部署启用了 Azure Arc 的服务器进行规划,并实现集中管理和监视。

  • 了解如何使用 Azure Policy 管理计算机,例如,进行 VM 来宾配置、验证计算机是否向预期的 Log Analytics 工作区报告等等。