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

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

常规清单

要帮助解决基于扩展的混合 Runbook 辅助角色的问题:

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

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

  • 检查是否已启用具有正确设置的扩展。 设置文件应具有正确的 AutomationAccountURL。 交叉检查具有自动化帐户属性 AutomationHybridServiceUrl 的 URL。 

    • 对于 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
      

场景:在启用了用户帐户控制 (UAC) 的服务器上使用自定义帐户时,Runbook 在混合 Runbook 辅助角色上进入挂起状态

问题

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

原因

当系统具有 UAC/LUA 时,必须直接授予权限,而不是通过任何组成员身份授予权限,并且用户必须提升权限时,作业开始失败。

解决方法

对于混合 Runbook 辅助角色上的自定义用户,请更新以下文件夹中的权限:

文件夹 权限
C:\ProgramData\AzureConnectedMachineAgent\Tokens 读取
C:\Packages\Plugins\Microsoft.Azure.Automation.HybridWorker.HybridWorkerForWindows 读取和执行

场景:作业未能启动,因为计划作业启动时混合辅助角色不可用

问题

作业无法在混合辅助角色上启动,出现以下错误:

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

原因

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

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

解决方法

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

场景:作业因超出混合辅助角色的作业限制而暂停

问题

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

作业因超出混合辅助角色的作业限制而暂停。 向混合辅助角色组添加更多混合辅助角色以解决此问题。

原因

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

  • 组中每个活动的混合辅助角色每 30 秒轮询一次作业,以查看是否有可用的作业。 辅助角色按照先到先得的原则选取作业。 由混合辅助角色组中先 ping 自动化服务的混合辅助角色选取作业,具体取决于作业推送时间。 通常,一个混合辅助角色在每次执行 ping 操作时(即每隔 30 秒)可提取四个作业。 如果推送作业的频率高于每 30 秒 4 次且没有其他辅助角色选取该作业,则该作业可能会暂停。
  • 混合辅助角色可能不会按预期每 30 秒轮询 1 次。 如果辅助角色运行不正常或存在网络问题,则可能会出现这种情况。

解决方法

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

问题

你正在 VM 上部署基于扩展的混合 Runbook 辅助角色,失败并出现错误:专用链接的身份验证失败

原因

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

解决方法

确保 Azure 自动化帐户的专用终结点已连接到与 VM 连接的相同的虚拟网络。 按照基于网络规划中所述的步骤连接到专用终结点。 此外设置公用网络访问标记,将自动化帐户配置为拒绝所有公共配置,并仅允许通过专用终结点进行连接。 有关如何为专用终结点配置 DNS 设置的详细信息,请参阅 DNS 配置

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

问题

你正在 VM 上部署基于扩展的混合 Runbook 辅助角色,失败并出现错误:指定的帐户/组不存在。

原因

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

解决方法

确保创建混合 Runbook 辅助角色组,并将 VM 添加为该组中的混合辅助角色。 按照使用 Azure 门户创建混合 Runbook 辅助角色组中提到的步骤操作。

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

问题

你正在 VM 上部署基于扩展的混合 Runbook 辅助角色,但失败并出现错误:
无法检索非 Azure VM 的 IMDS 标识终结点。 确保已安装连接 Azure 的计算机代理并启用系统分配的标识。

原因

你要在未安装 Arc 连接的计算机代理的非 Azure VM 上部署基于扩展的混合辅助角色。

解决方法

在将非 Azure 计算机作为基于扩展的混合 Runbook 辅助角色部署之前,非 Azure 计算机必须安装 Arc 连接的计算机代理。 若要安装 AzureConnectedMachineAgent,请参阅适用于已启用 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 辅助角色的计算机不满足最低硬件要求。

解决方法

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

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

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

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

场景:在混合 Runbook 辅助角色上的证书存储中找不到证书

问题

混合 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 辅助角色是本地计算机,需要在此计算机上安装运行方式帐户证书。 若要了解如何安装证书,请参阅在混合 Runbook 辅助角色上运行 Runbook 中有关如何运行 PowerShell Runbook Export-RunAsCertificateToHybridWorker 的步骤。

场景:Azure VM 被从混合辅助角色组中自动删除

问题

当辅助角色计算机长期关闭时,看不到混合 Runbook 辅助角色或 VM。

原因

混合 Runbook 辅助角色计算机有 30 天以上无法 ping 通 Azure 自动化。 因此,自动化清除了混合 Runbook 辅助角色组或系统辅助角色组。

解决方法

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

后续步骤

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