自动化中基于 VM 扩展的混合 Runbook 辅助角色问题的疑难解答

本文提供有关如何排查和解决 Azure 自动化扩展基础上的混合 Runbook 工作器问题的信息。 有关基于代理的辅助角色的疑难解答,请参阅在自动化中对基于代理的混合 Runbook 辅助角色问题进行故障排除。 如需常规信息,请参阅混合 Runbook 辅助角色概述

常规清单

要帮助解决基于扩展的混合 Runbook 工作器的问题:

  • 检查操作系统是否受支持,以及是否满足先决条件。 请参阅先决条件

  • 检查是否在 VM 上启用了系统分配的托管标识。 Azure VM 和支持 Arc 的 Azure 计算机应启用系统分配的托管身份。

  • 检查是否已启用具有正确设置的扩展。 设置文件应具有正确的 AutomationAccountURL。 将 URL 与自动化帐户属性 AutomationHybridServiceUrl 进行核对。 

    • 对于 Windows,可在此处找到设置文件:

    提示

    请将以下路径中的 * 替换为已安装的特定版本(前提是你知道对应版本)。

    C:\Packages\Plugins\Microsoft.Azure.Automation.HybridWorker.HybridWorkerForWindows\*\RuntimeSettings
    
    • 对于 Linux,可在此处找到设置文件:
      /var/lib/waagent/Microsoft.Azure.Automation.HybridWorker.HybridWorkerForLinux/
      
  • 检查混合辅助角色扩展状态/详细状态中显示的错误消息。 这其中包含了错误消息以及用于解决问题的相应建议。

  • 在 VM 上运行故障排除工具,它会生成一个输出文件。 打开输出文件,验证故障排除工具识别的错误。

    • 对于 Windows,可在此处找到疑难解答:

    提示

    请将以下路径中的 * 替换为已安装的特定版本(前提是你知道对应版本)。

    C:\Packages\Plugins\Microsoft.Azure.Automation.HybridWorker.HybridWorkerForWindows\*\bin\troubleshooter\TroubleShootWindowsExtension.ps1
    
    • 对于 Linux,可在此处找到疑难解答:

    提示

    请将以下路径中的 * 替换为已安装的特定版本(前提是你知道对应版本)。

    /var/lib/waagent/Microsoft.Azure.Automation.HybridWorker.HybridWorkerForLinux-*/Troubleshooter/LinuxTroubleshooter.py
    
  • 对于 Linux 计算机,混合辅助角色扩展会创建 hweautomation 用户,并启动该用户下的混合辅助角色。 请检查是否为用户 hweautomation 设置了正确的权限。 如果 runbook 尝试访问任何本地资源,请确保 hweautomation 具有对本地资源的正确权限。

  • 检查混合工作人员进程是否正在运行。

    • 对于 Windows,请检查 Hybrid Worker Service (HybridWorkerService) 服务。
    • 对于 Linux,请检查 hwd 服务。
  • 收集日志:

    • 对于 Windows,请运行位于此处的日志收集器工具:

    提示

    请将以下路径中的 * 替换为已安装的特定版本(前提是你知道对应版本)。

    C:\Packages\Plugins\Microsoft.Azure.Automation.HybridWorker.HybridWorkerForWindows\*\bin\troubleshooter\PullLogs.ps1
    

    日志位于此处:

    C:\HybridWorkerExtensionLogs
    
    • 对于 Linux,日志位于以下文件夹中:
      /var/log/azure/Microsoft.Azure.Automation.HybridWorker.HybridWorkerForLinux
      
      /home/hweautomation
      

场景:Linux 混合辅助角色上的作业可能停滞在“正在运行”状态

问题

当 CPU 核心使用率小于 25% 时,Linux 混合辅助角色上的作业可能停滞在“正在运行”状态。

原因

对于 Linux 混合工作器,每个 CPU 核的默认配额限制为 25%。

解决方法

可以删除此限制,并通过以下步骤将其取消限制:

切换到 sudo 权限 -

  1. sudo su
  2. systemctl status hwd.service // 检查并确保 hwd 服务运行良好。

在混合辅助角色中更新以下文件中的设置

  1. vi /lib/systemd/system/hwd.service
  2. 将 CPUQuota=25% 的设置更新为 CPUQuota= ,如下所示,以使使用情况不受限制。
  root@ubuntu2204:~# cat /lib/systemd/system/hwd.service
  [Unit]
  Description=HW Service
  After=network.target
  
  [Service]
  Type=simple
  ExecStart=/usr/bin/python3 /var/lib/waagent/Microsoft.Azure.Automation.HybridWorker.HybridWorkerForLinux-1.1.16/HybridWorkerAgent/DaemonScripts/Scripts/3.x/automationWorkerStarterScript.py
  TimeoutStartSec=5
  Restart=always
  RestartSec=10s
  TimeoutStopSec=600
  CPUQuota=
  KillMode=process
  
  [Install]
  WantedBy=multi-user.target
  

重启 hwd 服务

  1. systemctl daemon-reload
  2. systemctl restart hwd.service

场景:在启用用户帐户控制 (UAC) 的服务器上使用自定义帐户时,Runbook 会在混合 Runbook 工作器上进入挂起状态。

问题

作业在 Hybrid Runbook Worker 上失败并进入挂起状态。 Microsoft-SMA 事件日志指示 Win32 Process Exited with code [2148734720],而当 Runbook 尝试执行时,应用程序日志中的相应错误是 .NET Runtime version : 4.0.30319.0,指示无法启动应用程序。

原因

当系统启用了 UAC/LUA 时,必须将权限直接授予用户,而不是通过任何组成员身份授予。当用户需要提升权限时,作业就会开始失败。

解决方法

对于 Hybrid Runbook Worker 上的自定义用户,请更新以下文件夹和注册表中的权限:

文件夹 权限
C:\ProgramData\AzureConnectedMachineAgent\Tokens 读取
C:\Packages\Plugins\Microsoft.Azure.Automation.HybridWorker.HybridWorkerForWindows 读取和执行
注册表 权限
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\EventLog 读取
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\WinSock2\Parameters 完全访问权限
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Wbem\CIMOM 完全访问权限
HKEY_LOCAL_MACHINE\Software\Policies\Microsoft\SystemCertificates\Root 完全访问权限
HKEY_LOCAL_MACHINE\Software\Microsoft\SystemCertificates 完全访问权限
HKEY_LOCAL_MACHINE\Software\Microsoft\EnterpriseCertificates 完全访问权限
HKEY_LOCAL_MACHINE\software\Microsoft\HybridRunbookWorker 完全访问权限
HKEY_LOCAL_MACHINE\software\Microsoft\HybridRunbookWorkerV2 完全访问权限
HKEY_CURRENT_USER\SOFTWARE\Policies\Microsoft\SystemCertificates\Disallowed 完全访问权限
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Setup\PnpLockdownFiles 完全访问权限

场景:由于计划作业启动时混合工作者不可用,作业未能启动。

问题

作业无法在混合运行程序上启动,出现以下错误:

未能启动,因为混合辅助角色在计划作业启动时不可用。混合辅助角色最后处于活动状态的时间是 mm/dd/yyyy。

原因

存在以下原因时,可能会出现此错误:

  • 计算机不再存在。
  • 计算机已关闭,不可访问。
  • 计算机存在网络连接问题。
  • 已从计算机中卸载混合 Runbook 辅助角色扩展。

解决方法

  • 确保已存在该计算机,并且已在其上安装 Hybrid Runbook Worker 插件。 混合工作器应保持正常运行,并且应提供心跳信号。 通过检查在混合 Runbook 工作器组中尝试运行此作业的工作器上的 Microsoft-SMA 事件日志来排查任何网络问题。
  • 还可以监视 HybridWorkerPing 指标,该指标提供混合辅助角色发出的 ping 的次数,有助于检查 ping 相关问题。

场景:作业因超过了Hybrid工作器的作业上限而被暂停。

问题

作业暂停并显示以下错误消息:

作业因超出混合工作者的作业限制而被暂停。 向混合工作者组添加更多混合工作者以解决此问题。

原因

作业可能因以下任一原因而暂停:

  • 组中每个活动的混合辅助角色每 30 秒轮询一次作业,以查看是否有可用的作业。 工人按照先到先得的原则挑选工作。 取决于作业被推送的时间,混合辅助角色组中哪个混合辅助角色首次连接自动化服务,哪个就会选取这个作业。 通常,一个混合工作者在每次执行 ping 操作时(即每隔 30 秒)可以处理四个作业。 如果推送作业的频率高于每 30 秒 4 次且没有其他工作者选取该作业,该作业有可能会被暂停。
  • 混合辅助角色可能不会按预期每 30 秒轮询 1 次。 如果 Worker 状态不正常或存在网络问题,就可能会发生这种情况。

解决方法

  • 如果混合辅助角色的作业限制超出每 30 秒 4 个作业,则可将更多混合辅助角色添加到混合辅助角色组,以实现高可用性和负载均衡。 还可以计划作业,使其不超过每 30 秒 4 个作业的限制。 作业队列的处理时间取决于混合工作器的硬件规格和负载。 确保混合工作器正常运行并发送心跳信号。
  • 通过检查混合 Runbook 辅助角色组中尝试运行此作业的辅助角色上的 Microsoft-SMA 事件日志来排查任何网络问题。
  • 还可以监视 HybridWorkerPing 指标,该指标提供混合辅助角色发出的 ping 的次数,有助于检查 ping 相关问题。

问题

在 VM 上部署扩展型混合 Runbook Worker 时失败,错误信息为:专用链接的身份验证失败

原因

VM 的虚拟网络不同于 Azure 自动化 帐户的专用终结点,或者它们未连接。

方案:当提供的混合辅助角色组不存在时,混合辅助角色部署失败

问题

在虚拟机上部署基于扩展的混合 Runbook Worker 时失败,出现错误:指定的帐户/组不存在

原因

混合辅助角色要部署到的混合 Runbook 辅助角色组已被删除。

解决方法

确保创建混合 Runbook 辅助角色组,并将 VM 添加为该组中的混合辅助角色。 通过 Azure 门户中提到的创建混合 Runbook Worker 组的步骤进行操作。

方案:未在 VM 上启用系统分配的托管标识时,混合辅助角色部署失败

问题

在 VM 上部署扩展型 Hybrid Runbook Worker 时失败,并出现错误:
无法检索非 Azure VM 的 IMDS 标识终结点。 确保已安装连接 Azure 的计算机代理并启用系统分配的标识。

原因

你要在未安装 Arc 连接代理的非 Azure VM 上部署基于扩展的混合工作器。

解决方法

在将非 Azure 计算机部署为基于扩展的混合 Runbook 工作角色之前,必须在其上安装 Arc 连接的机器代理。 若要安装 AzureConnectedMachineAgent,请参阅文章以了解如何从 Azure 门户将混合计算机连接到适用于 Arc 的服务器:从 Azure 门户将混合计算机连接到 Azure

方案:由于系统分配的标识身份未启用,混合工作器部署失败

问题

在 VM 上部署基于扩展的混合 Runbook 辅助角色,失败并出现错误: 授权令牌无效

原因

VM 的用户分配的托管标识已启用,但未启用系统分配的托管标识。

解决方法

请执行下列步骤:

  1. 启用 VM 的系统分配托管身份。
  2. 删除 VM 上安装的混合辅助角色扩展。
  3. 在 VM 上重新安装混合辅助角色扩展。

方案:Windows VM 上的混合辅助角色扩展的安装过程停滞

问题

已在门户中的 Windows VM 上安装混合辅助角色扩展,但没有收到过程已成功完成的通知。

原因

有时安装过程可能会停滞不前。

解决方法

请按照下面提到的步骤再次安装混合工作器扩展:

  1. 打开 PowerShell 控制台。

  2. 移除注册表项(如果存在):HKLM:\Software\Microsoft\Azure\HybridWorker

    1. 用于删除注册表项以及其下的所有子项和值的 PowerShell 代码:

      Get-Item HKLM:\Software\Microsoft\Azure\HybridWorker | Remove-Item -Recurse
      
  3. 移除注册表项(如果存在):HKLM:\Software\Microsoft\HybridRunbookWorkerV2

    1. 用于删除注册表项以及其下的所有子项和值的 PowerShell 代码:

      Get-Item HKLM:\Software\Microsoft\HybridRunbookWorkerV2 | Remove-Item -Recurse
      
  4. 导航到混合辅助角色扩展安装文件夹:

    提示

    请将以下命令中的 * 替换为已安装的特定版本(前提是你知道对应版本)。

    cd "C:\Packages\Plugins\Microsoft.Azure.Automation.HybridWorker.HybridWorkerForWindows\*"
    
  5. 安装混合辅助角色扩展:

    .\bin\install.ps1
    
  6. 启用混合辅助角色扩展:

    .\bin\enable.ps1
    

方案:Windows VM 上的混合辅助角色扩展卸载过程停滞

问题

已在门户中的 Windows VM 上安装混合辅助角色扩展,但没有收到过程已成功完成的通知。

原因

有时卸载过程可能会停滞不前。

解决方法

  1. 打开 PowerShell 控制台。

  2. 导航到混合辅助角色扩展安装文件夹:

    提示

    请将以下命令中的 * 替换为已安装的特定版本(前提是你知道对应版本)。

    cd "C:\Packages\Plugins\Microsoft.Azure.Automation.HybridWorker.HybridWorkerForWindows\*"
    
  3. 禁用混合辅助角色扩展:

    .\bin\disable.cmd
    
  4. 卸载混合工作器扩展程序:

    .\bin\uninstall.ps1
    
  5. 移除注册表项(如果存在):HKLM:\Software\Microsoft\Azure\HybridWorker

    1. PowerShell 代码,用于删除注册表项及其下的任何子键和值。

      Get-Item HKLM:\Software\Microsoft\Azure\HybridWorker | Remove-Item -Recurse
      
  6. 移除注册表项(如果存在):HKLM:\Software\Microsoft\HybridRunbookWorkerV2

    1. PowerShell 代码,用于删除注册表项及其下的任何子键和值。

      Get-Item HKLM:\Software\Microsoft\HybridRunbookWorkerV2 | Remove-Item -Recurse
      

方案:Linux VM 上的混合辅助角色扩展的安装过程停滞

问题

已在门户中的 Linux VM 上安装混合辅助角色扩展,但没有收到过程已成功完成的通知。

原因

有时卸载过程可能会停滞不前。

解决方法

  1. 删除state 文件夹:

    rm -r /home/hweautomation/state
    
  2. 转到混合工作程序扩展安装文件夹:

    提示

    请将以下命令中的 * 替换为已安装的特定版本(前提是你知道对应版本)。

    cd /var/lib/waagent/Microsoft.Azure.Automation.HybridWorker.HybridWorkerForLinux-*/
    
  3. 删除 mrseq 文件:

    rm mrseq
    
  4. 安装混合辅助角色扩展:

    ./extension_shim.sh -c ./HWExtensionHandlers.py -i
    
  5. 启用混合辅助角色扩展:

    ./extension_shim.sh -c ./HWExtensionHandlers.py -e
    

方案:Linux VM 上的混合工作器扩展卸载程序卡住

问题

您已通过门户在 Linux VM 上卸载了混合工作者扩展,但未收到过程成功完成的通知。

原因

有时卸载过程可能会停滞不前。

解决方法

按照以下步骤完全卸载混合工作器扩展程序:

  1. 导航到混合辅助角色扩展安装文件夹:

    提示

    请将以下命令中的 * 替换为已安装的特定版本(前提是你知道对应版本)。

    cd /var/lib/waagent/Microsoft.Azure.Automation.HybridWorker.HybridWorkerForLinux-*/
    
  2. 禁用混合辅助角色扩展:
    ./extension_shim.sh -c ./HWExtensionHandlers.py -d
    
  3. 卸载混合工作器扩展:
    ./extension_shim.sh -c ./HWExtensionHandlers.py -u
    

场景:Runbook 执行失败

问题

Runbook 执行失败并出现以下错误消息:

The job action 'Activate' cannot be run, because the process stopped unexpectedly. The job action was attempted three times.

Runbook 在尝试执行三次后不久便暂停。 在某些条件下,Runbook 可能会中断,无法正常完成。 相关错误消息可能不包括任何附加信息。

原因

下面是可能的原因:

  • Runbook 无法使用本地资源进行身份验证。
  • 混合工作者位于代理或防火墙之后。
  • 运行混合 Runbook Worker 的计算机未达到最低硬件要求。

解决方法

验证计算机是否在端口 443 上对 *.azure-automation.cn 有出站访问权限。

运行混合 Runbook 工作器的计算机应满足最低硬件要求,才能配置该工作器以托管此功能。 它们使用的 Runbook 和后台进程可能会导致系统过度使用,造成 Runbook 作业延迟或超时。

确认将要运行混合 Runbook 辅助角色功能的计算机满足最低硬件要求。 如果情况属实,请监控 CPU 和内存的使用情况,以确定混合 Runbook Worker 进程性能与 Windows 之间的任何关联。 出现内存或 CPU 压力可能意味着需要升级资源。 你也可以选择其他满足最低要求并支持在工作负载需求增加时进行扩展的计算资源。

Microsoft-SMA 事件日志中检查附带“Win32 Process Exited with code [4294967295]”说明的相应事件。 此错误的原因是尚未在 Runbook 中配置身份验证,或者未为混合 Runbook 辅助角色组指定运行方式凭据。 在混合 Runbook 工作机上运行 Runbook中查看 Runbook 权限,以确认您已正确配置 Runbook 的认证。

场景:在 Hybrid Runbook Worker 的证书存储中找不到证书

问题

混合 Runbook 工作器上运行的 runbook 失败并显示以下错误信息:

Connect-AzAccount : No certificate was found in the certificate store with thumbprint 0000000000000000000000000000000000000000
At line:3 char:1
+ Connect-AzAccount -ServicePrincipal -Tenant $Conn.TenantID -Appl ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : CloseError: (:) [Connect-AzAccount],ArgumentException
    + FullyQualifiedErrorId : Microsoft.Azure.Commands.Profile.ConnectAzAccountCommand

原因

尝试在混合 Runbook 辅助角色上运行的 Runbook 中使用运行方式帐户时,如果运行方式帐户证书不存在,则会发生此错误。 默认情况下,混合 Runbook 辅助角色在本地没有证书资产。 运行方式帐户需要此资产才能正常运行。

解决方法

如果混合 Runbook 辅助角色是 Azure VM,则可改用使用托管标识的 Runbook 身份验证。 此方案允许使用 Azure VM 的托管标识而非运行方式帐户向 Azure 资源进行身份验证,从而简化了身份验证。 当混合 Runbook 工作器是本地计算机时,需要在此计算机上安装 Run As 账户证书。 若要了解如何安装证书,请参阅在混合 Runbook 辅助角色上运行 Runbook中的 PowerShell Runbook Export-RunAsCertificateToHybridWorker 的运行步骤。

场景:Azure 虚拟机从混合工作器组中自动删除

问题

当工作计算机长时间关闭时,您将无法看到混合 Runbook Worker 或虚拟机。

原因

混合 Runbook 工作者计算机超过 30 天没有 ping 通 Azure 自动化。 因此,自动化清除了混合 Runbook 工作者组或系统工作者组。

解决方法

启动工作机,然后在 Azure 自动化中重新注册。 有关如何安装 Runbook 环境和连接到 Azure 自动化的说明,请参阅部署 Windows 混合 Runbook 辅助角色

方案:在已启用 Azure Arc 的 Windows 服务器上执行的使用自定义凭据的混合 Runbook Worker 作业意外暂停

问题

使用自定义凭据的 Runbook 作业从启用 Azure Arc 的服务器执行时,突然开始进入暂停状态。

原因

这是由已知问题导致的,即在更新 Azure Connected Machine 代理时移除了文件夹权限。 更新 Azure Connected Machine 代理时,C:\ProgramData\AzureConnectedMachineAgent\Tokens 上的文件夹权限被移除。

解决方法

当前解决方案是在更新 Azure Connected Machine 代理时将文件夹权限重新应用于 C:\ProgramData\AzureConnectedMachineAgent\Tokens。 请参阅混合辅助角色凭据的权限

后续步骤

如果你的问题未在本文中列出,或者无法解决你遇到的问题,请联系支持人员