排查 Azure Local 解决方案更新问题

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

本文介绍如何排查应用于 Azure 本地的解决方案更新以使其保持最新状态。

关于如何排查更新问题

如果系统是通过 Azure Local 的新部署创建的,则在部署过程中安装了业务流程协调程序。 编排器管理平台的所有更新——操作系统、驱动程序和固件、代理和服务。

新的更新解决方案包括重试和修正逻辑。 此逻辑尝试以非中断方式修复更新问题,例如重试群集感知更新 (CAU) 运行。 如果无法自动修正更新操作,该操作将失败。 更新失败时,Microsoft建议检查失败消息的详细信息,以确定相应的下一步操作。 如果适用,可以尝试恢复更新,以确定重试是否会解决问题。

排查就绪情况检查问题

准备情况检查对于确保顺利应用更新、保持系统最新状态以及维护正确的系统功能至关重要。 准备情况检查在两种情况下分别进行和报告:

  • 系统运行状况检查每 24 小时运行一次。

  • 下载更新内容后在开始安装前运行的更新就绪情况检查。

系统运行状况检查和更新就绪情况检查的结果通常有所不同。 发生这种情况是因为更新就绪情况检查使用要安装的解决方案更新中的最新验证逻辑,而系统运行状况检查始终使用已安装版本的验证逻辑。

系统和更新前准备情况检查都执行类似的验证,并对三种类型的就绪情况检查进行分类:严重、警告和信息。

  • 严重:阻止你应用更新的就绪情况检查。 此状态指示在继续更新之前必须解决的问题。
  • 警告:就绪情况检查还会阻止应用更新,但你可以使用 PowerShell 绕过这些更新。 此状态表明可能存在一些问题,这些问题虽然不够严重到需要停止更新,但仍应加以解决以确保更新过程顺利进行。
  • 信息性:不会阻止更新的就绪情况检查。 此状态提供有关系统状态的信息,以及任何不应直接影响更新过程的潜在问题。 这些检查是让你知晓的,可能没有立即采取行动的必要。

故障排除步骤会因不同的准备检查情境而有所不同。

使用 Azure 门户

方案 1:系统运行状况检查

在 Azure 更新管理器中准备安装系统更新时,会出现这种情况:

  1. 在系统列表中,查看关键更新就绪状态。

    “更新管理器”页的屏幕截图。

  2. 从列表中选择一个或多个系统,然后选择 “一次性更新”。

  3. “检查就绪情况 ”页上,查看就绪情况检查列表及其结果。

    1. 选择受影响的系统下的“查看详细信息”链接。

    2. 详细信息框打开后,可以查看更多详细信息、单个系统结果以及针对失败运行状况检查进行的“修正”

    “安装更新”页的屏幕截图。

    按照修正说明解决故障。

    注意

    系统运行状况检查每 24 小时运行一次,因此在修正故障后,新结果可能需要长达 24 小时才能同步到 Azure 门户。 若要立即启动新的系统运行状况检查或进一步故障排除,请参阅 PowerShell 部分。

场景 2:更新就绪情况检查

在 Azure 更新管理器中安装和跟踪系统更新时,会出现这种情况:

  1. 在“历史记录”中,从列表中选择失败的更新运行。

  2. “检查就绪情况 ”页上,查看就绪情况检查列表及其结果。

    1. 选择受影响的系统下的“查看详细信息”链接。

    2. 详细信息框打开后,可以查看更多详细信息、单个系统结果以及针对失败运行状况检查进行的“修正”

    “更新进度”页的屏幕截图。

    按照修正说明解决故障,然后选择“ 重试 ”按钮重试更新前准备情况检查并 恢复更新

    若要进一步进行故障排除,请参阅 PowerShell 部分。

使用 PowerShell

方案 1:系统运行状况检查

若要通过 PowerShell 排查系统运行状况检查问题,请执行以下操作:

  1. 若要验证系统运行状况检查是否失败,请在系统中的某个计算机上运行以下命令:

    Get-SolutionUpdateEnvironment
    

    下面是示例输出:

    PS C:\Users\lcmuser> Get-SolutionUpdateEnvironment 
    ResourceId        : redmond  
    SbeFamily         : VirtualForTesting  
    HardwareModel     : Virtual Machine  
    LastChecked       : 9/12/2023 10:34:42 PM  
    PackageVersions   : {Solution: 10.2309.0.20, Services: 10.2309.0.20, Platform: 1.0.0.0, SBE: 4.0.0.0}  
    CurrentVersion    : 10.2309.0.20  
    CurrentSbeVersion : 4.0.0.0  
    LastUpdated       :  
    State             : AppliedSuccessfully  
    HealthState       : Failure 
    HealthCheckResult : {Storage Pool Summary, Storage Services Physical Disks Summary, Storage Services Physical Disks  
    
                    Summary, Storage Services Physical Disks Summary...}  
    
    HealthCheckDate   : 9/12/2023 7:03:32 AM  
    
    AdditionalData    : {[SBEAdditionalData, Solution Builder extension is partially installed. Please install the latest  
    
                    Solution Builder Extension provided by your hardware vendor.  
    
                    For more information, see https://aka.ms/SBE.]}  
    
    HealthState       : Success  
    HealthCheckResult : {}  
    HealthCheckDate   : 8/4/2022 9:10:36 PM 
    
    PS C:\Users\lcmuser>
    
  2. 检查您的系统上的 HealthState,并查看 FailureWarning 的值。

  3. 若要筛选 HealthCheckResult 属性以识别失败的测试,请运行以下命令:

    $result = Get-SolutionUpdateEnvironment 
    
    $result.HealthCheckResult | Where-Object {$_.Status -ne "SUCCESS"} | FL Title,Status,Severity,Description,Remediation
    

    下面是示例输出:

    Title       : The machine proxy on each failover cluster node should be set to a local proxy server 
    Status      : FAILURE 
    Severity    : INFORMATIONAL 
    Description : Validating cluster setup for update. 
    Remediation : `https://free.blessedness.top/en-us/windows-server/failover-clustering/cluster-aware-updating-requirements# 
              tests-for-cluster-updating-readiness`
    
    Title       : The CAU clustered role should be installed on the failover cluster to enable self-updating mode 
    Status      : FAILURE 
    Severity    : INFORMATIONAL 
    Description : Validating cluster setup for update. 
    Remediation : `https://free.blessedness.top/en-us/windows-server/failover-clustering/cluster-aware-updating-requirements# 
              tests-for-cluster-updating-readiness`
    
  4. 请检查失败测试中的 Remediation 字段,并根据需要采取措施解决问题。

  5. 解决失败后,运行以下命令再次调用系统运行状况检查:

    Invoke-SolutionUpdatePrecheck -SystemHealth
    
  6. 使用 Get-SolutionUpdateEnvironment 确认运行状况检查失败型故障已得到解决。 系统运行状况检查的运行可能需要几分钟的时间。

    下面是示例输出:

    PS C:\Users\lcmuser>  Get-SolutionUpdateEnvironment | FL HealthState, HealthCheckResult, HealthCheckDate 
    
    HealthState       : InProgress 
    HealthCheckResult : 
    HealthCheckDate   : 1/1/0001 12:00:00 AM 
    
    PS C:\Users\lcmuser>  Get-SolutionUpdateEnvironment | FL HealthState, HealthCheckResult, HealthCheckDate
    
    HealthState       : Success 
    
    HealthCheckResult : {Storage Pool Summary, Storage Subsystem Summary, Storage Services Summary, Storage Services 
    
                    Summary...} 
    
    HealthCheckDate   : 10/18/2024 11:56:49 PM 
    

场景 2:更新就绪情况检查

更新就绪情况检查失败时,这会导致更新在系统上失败。 若要通过 PowerShell 排查更新就绪检查问题:

  1. 若要验证更新就绪情况检查是否失败,请在系统中的一台计算机上运行以下命令:

    Get-SolutionUpdate | FT Version,State,HealthCheckResult
    

    下面是示例输出:

    PS C:\Users\lcmuser> Get-SolutionUpdate | FT Version,State,HealthCheckResult 
    
    Version     State              HealthCheckResult 
    -------     -----              ----------------- 
    10.2405.2.7 HealthCheckFailed {Storage Subsystem Summary, Storage Pool Summary, Storage Services Physical Disks Summary, Stora...                       
    
    PS C:\Users\lcmuser>
    
  2. 检查更新的 State 并查看 HealthCheckFailed 值。

  3. 若要筛选 HealthCheckResult 属性以识别失败的测试,请运行以下命令:

    $result = Get-SolutionUpdate 
    $result.HealthCheckResult | Where-Object {$_.Status -ne "SUCCESS"} | FL Title,Status,Severity,Description,Remediation
    

    下面是示例输出:

    Title       : The machine proxy on each failover cluster node should be set to a local proxy server 
    Status      : FAILURE 
    Severity    : INFORMATIONAL 
    Description : Validating cluster setup for update. 
    Remediation : https://free.blessedness.top/en-us/windows-server/failover-clustering/cluster-aware-updating-requirements# 
              tests-for-cluster-updating-readiness 
    
    Title       : The CAU clustered role should be installed on the failover cluster to enable self-updating mode 
    Status      : FAILURE 
    Severity    : INFORMATIONAL 
    Description : Validating cluster setup for update. 
    Remediation : https://free.blessedness.top/en-us/windows-server/failover-clustering/cluster-aware-updating-requirements# 
              tests-for-cluster-updating-readiness
    
  4. 请检查失败测试中的 Remediation 字段,并根据需要采取措施解决问题。

  5. 解决失败后,运行以下命令再次调用更新准备情况检查:

    Get-SolutionUpdate -Id <some ID> | Start-SolutionUpdate -PrepareOnly
    

排查更新失败的原因

如果存在导致更新失败的问题,查看每个详细步骤的进展以确定失败的位置,通常是判断问题是否可以通过简单修复(并恢复)来解决的最佳方法。或者,可能需要技术支持来解决问题。 失败步骤需要注意的关键项包括:

  • 失败步骤的名称和描述。

  • 导致步骤失败的机器或服务器(如果存在与具体机器相关的问题)。

  • 失败消息字符串(可能会将问题确定为记录修正的特定已知问题)。

Microsoft 建议使用 Azure 门户识别失败步骤的信息,如 恢复更新 中所示。 或者,请参阅下一部分,了解如何使用 Start-MonitoringActionplanInstanceToComplete在 PowerShell 中查看类似的详细信息。

请参阅下表,了解更新失败场景和修正指南。

步骤名称 问题类型 修正
任意 更新期间系统断电或其他类似的中断。 1. 还原电源。
2.运行系统运行状况检查。
3.恢复更新。
CAU 更新 群集感知更新 (CAU) 更新运行失败,出现“max retries exceeded”故障。 如果表明已进行了多次 CAU 尝试,并且这些尝试全部失败,则最好调查第一次失败。

使用第一次故障的开始和结束时间与正确的 Get-CauReport 输出进行匹配,以进一步调查故障。
任意 一个或多个节点上的内存、电源、启动驱动程序或类似严重故障。 有关如何修复失败的节点,请参阅 Azure 本地上的 节点修复。
修复节点后,可以恢复更新。

收集更新日志

还可以收集诊断日志来帮助Microsoft识别和解决问题。

若要使用 Azure 门户收集更新的日志,请参阅 “恢复更新”。

若要收集更新失败的日志,请参阅 收集 Azure 本地的诊断日志

查看更新摘要报告

若要使用 PowerShell 查看详细的更新摘要报告,请在用于访问系统的客户端上执行以下步骤:

  1. 与计算机建立远程 PowerShell 会话。 以管理员身份运行 PowerShell 并运行以下命令:

    Enter-PSSession -ComputerName <machine_IP_address> -Credential <username\password for the machine>
    
  2. 获取所有解决方案更新,然后筛选与特定版本对应的解决方案更新。 使用的版本对应于无法安装的解决方案更新的版本。

    $Update = Get-SolutionUpdate | ? Version -eq "<Version string>" -verbose
    
  3. 为失败的解决方案更新运行确定操作计划。

    $Failure = $update | Get-SolutionUpdateRun
    
  4. 确定更新的 ResourceID

    $Failure
    

    下面是示例输出:

    PS C:\Users\lcmuser> $Update = Get-SolutionUpdate| ? Version -eq "10.2303.1.7" -verbose
    PS C:\Users\lcmuser> $Failure = $Update|Get-SolutionUpdateRun
    PS C:\Users\lcmuser> $Failure
    
    ResourceId      : redmond/Solution10.2303.1.7/6bcc63af-b1df-4926-b2bc-26e06f460ab0
    Progress        : Microsoft.AzureStack.Services.Update.ResourceProvider.UpdateService.Models.Step
    TimeStarted     : 4/21/2023 10:02:54 PM
    LastUpdatedTime : 4/21/2023 3:19:05 PM
    Duration        : 00:16:37.9688878
    State           : Failed
    

    记下 ResourceID GUID。 此 GUID 对应于 ActionPlanInstanceID.

  5. 查看之前记下的 ActionPlanInstanceID 的摘要。

    Start-MonitoringActionplanInstanceToComplete -actionPlanInstanceID <Action Plan Instance ID>
    

    下面是示例输出:

    PS C:\Users\lcmuser> Start-MonitoringActionplanInstanceToComplete -actionPlanInstanceID 6bcc63af-b1df-4926-b2bc-26e06f460ab0
    

    Powershell 收集日志输出的屏幕截图。

继续更新

若要恢复以前失败的更新运行,可以通过 Azure 门户 或 PowerShell 重试更新运行。

Azure 门户

强烈建议使用 Azure 门户浏览到失败的更新,然后选择“ 重试 ”按钮。 此功能在更新下载、检查就绪情况和更新运行的安装阶段可用。

重试失败更新按钮的屏幕截图。

如果无法成功重新运行失败的更新或需要进一步排查错误,请执行以下步骤:

  1. 对于错误,选择“查看详细信息”。

  2. 打开详细信息框后,可以查看错误详细信息。 有关收集诊断日志的详细信息,您可以单击“提交支持请求”按钮附近的“如何收集日志”链接。

    下载错误日志的屏幕截图。

    有关检索日志的详细信息,请参阅 收集 Azure 本地的诊断日志

  3. 此外,还可以选择“打开支持工单”按钮,填写相应的信息并附加日志,以便 Microsoft 支持人员可以访问这些信息。

    显示创建支持工单的屏幕截图。

有关创建支持票证的详细信息,请参阅 “创建支持请求”。

PowerShell

如果使用 PowerShell 并且需要恢复以前失败的更新运行,请使用以下命令:

Get-SolutionUpdate | ? Version -eq "10.2302.0.31" | Start-SolutionUpdate

若要继续之前因更新运行状况检查处于“警告”状态而失败的更新,请使用以下命令:

Get-SolutionUpdate | ? Version -eq "10.2302.0.31" | Start-SolutionUpdate -IgnoreWarnings

后续步骤

详细了解如何 通过 PowerShell 运行更新

详细了解如何 通过 Azure 门户运行更新