启动与虚拟机故障

排查 Azure Linux RHEL Pacemaker 群集中的意外节点重启问题 - Virtual Machines

· 52CE 我爱测

适用于:✔️ Linux VM 总结 本文为 RedHat Enterprise Linux (RHEL) Pacemaker 集群中意外节点重启的常见情况提供故障排除、分析和解决方案的指导。 先决条件 - 按照 在 Azure 上的 Red Hat Enterprise Linux 中设置 Pacemaker(/zh-cn/azure/sap/workloads/high-availability-guide-rhel-pacemaker) 中提供的准则

适用于:✔️ Linux VM

总结

本文为 RedHat Enterprise Linux (RHEL) Pacemaker 集群中意外节点重启的常见情况提供故障排除、分析和解决方案的指导。

先决条件

方案 1:网络中断

  • 群集节点遇到 corosync 通信错误。 这会导致连续重新传输,因为无法建立节点之间的通信。 此问题会触发应用程序超时,并最终导致节点隔离和后续重启。
  • 依赖于网络连接的服务,例如 waagent,在日志中生成与通信相关的错误条目。 这些条目进一步表明与网络相关的中断。

日志中 /var/log/messages 记录了以下消息:

从 node 01:

Aug 21 01:48:00 node  01 corosync[19389]:  [TOTEM ] Token has not been received in 30000 ms
Aug 21 01:48:00 node  01 corosync[19389]:  [TOTEM ] A processor failed, forming new configuration: token timed out (40000ms), waiting 48000ms for consensus. 

从 node 02:

Aug 21 01:47:27 node  02 corosync[15241]:  [KNET  ] link: host: 2 link: 0 is down
Aug 21 01:47:27 node  02 corosync[15241]:  [KNET  ] host: host: 2 (passive) best link: 0 (pri: 1)
Aug 21 01:47:27 node  02 corosync[15241]:  [KNET  ] host: host: 2 has no active links
Aug 21 01:47:31 node  02 corosync[15241]:  [TOTEM ] Token has not been received in 30000 ms

方案 1 的原因

由于网络维护活动或服务中断,发生意外的节点重启。 若要验证,可以通过在Azure门户中查看 Azure 维护通知来匹配时间戳。 有关Azure计划事件的详细信息,请参阅 Azure 元数据服务:Linux VM 的计划事件。

方案 1 的解决方法

如果意外的重启时间戳与维护活动保持一致,则分析会确认平台或网络维护影响了群集。

如需进一步的帮助或其他查询,可以按照 以下说明提出支持请求。

方案 2:群集配置错误

群集节点遇到意外的故障转移或节点重启。 这些问题通常是因为群集配置错误而影响 Pacemaker 群集的稳定性。

若要查看群集配置,请运行以下命令:

sudo pcs configure show

方案 2 的原因

Azure SUSE Pacemaker 群集中的意外重启通常因配置错误而发生:

  • STONITH 配置不正确:

    • STONITH 或隔离未正确配置:如果未正确配置 STONITH,可能会导致节点被标记为不正常,并触发不必要的重启。
    • 错误的 STONITH 资源设置:Azure隔离代理的参数不正确,例如 fence_azure_arm,可能会导致节点在故障转移期间意外重启。
    • 权限不足:用于隔离的Azure资源组或凭据可能缺少所需的权限并导致 STONITH 失败。
  • 资源约束缺失或不正确:设置不当的约束可能会导致不必要地重新分发资源。 这种情况反过来又可能导致节点重载和重启。 未对齐的资源依赖项配置可能会导致节点失败或进入重启循环。

  • 群集阈值和超时错误配置:

    • failure-time-out、 migration-threshold或 monitor-time-out 值可能会导致节点过早重启。
    • 心跳超时设置:心跳间隔的错误设置 corosync 可能导致节点自动判断其他节点处于离线状态。 这种情况可能会触发不必要的重启。
  • 缺少适当的运行状况检查:未为关键服务(如 SAP HANA(高性能 ANalytic 应用程序)设置正确的运行状况检查间隔可能会导致资源或节点故障。

  • 资源代理配置错误:

    • 与群集不对齐的自定义资源代理:不符合 Pacemaker 标准的资源代理可以创建不可预知的行为,包括节点重启。
    • 资源启动/停止参数错误:群集配置中未正确调整的启动/停止参数可能会导致节点在资源恢复期间重启。

方案 2 的解决方法

  • 按照正确的准则设置 RHEL Pacemaker 群集。 此外,请确保为 SAP HANA 或 SAP NetWeaver 等应用程序分配适当的资源,如Microsoft文档中指定。
  • 对群集配置进行必要更改的步骤:
    1. 在两个节点上停止应用程序。

    2. 将群集置于维护模式:

      sudo pcs property set maintenance-mode=true 
      
    3. 编辑群集配置:

      sudo pcs configure edit 
      
    4. 保存更改。

    5. 从维护模式中删除群集。

      sudo pcs property set maintenance-mode=false
      

重要

排查意外节点重启或故障问题时,评估系统上安装的安全工具的影响至关重要。 这些工具可能会通过阻止基本进程或修改系统文件来干扰群集作。 这种情况可能会导致不稳定、意外超时或节点重启。

为了缓解此类风险,我们建议在运行 Pacemaker 群集的系统上禁用安全工具。 或者,可以配置适当的排除项,以防止与群集及其关联的应用程序发生冲突。

方案 3:从本地迁移到 Azure

将 SUSE Pacemaker 群集从本地迁移到Azure时,可能会因特定配置错误或忽略依赖项而发生意外重启。

方案 3 的原因

以下是在此类别中发生的常见错误:

  • STONITH 配置不完整或不正确:

    • 没有 STONITH 或隔离错误配置:未正确配置 STONITH 可能会导致节点标记为不正常,并触发不必要的重启。
    • 错误的 STONITH 资源设置:Azure隔离代理(如 fence_azure_arm)的参数不正确可能会导致节点在故障转移期间意外重启。
    • 权限不足:用于隔离的Azure资源组或凭据可能缺少所需的权限并导致 STONITH 失败。 必须在隔离代理中正确配置 Azure 特定的重要参数,例如订阅 ID、资源组或虚拟机(VM)名称。 此处的遗漏可能会导致击剑失败和意外重启。

    有关详细信息,请参阅 在 RHEL 中解决 Azure Fence 代理启动问题和 在 RHEL Pacemaker 群集中的解决 SBD 服务故障

  • 网络配置错误:配置错误的 VNet、子网或安全组规则可能会阻止重要的群集通信,并导致感知到的节点故障和重启。

    有关详细信息,请参阅 Azure 中的虚拟网络和虚拟机

  • 元数据服务问题:必须正确处理Azure的云元数据服务。 否则,资源检测或启动进程可能会失败。

    有关详细信息,请参阅Azure实例元数据服务和Azure元数据服务:Linux VM 的计划事件

  • 性能和延迟不匹配:

    • VM 大小不当:迁移的工作负荷可能与所选的 Azure VM 大小不一致。 这会导致过度使用资源并触发重启。
    • 磁盘 I/O 不匹配:具有高 IOPS(每秒输入/输出操作)要求的本地工作负荷必须与相应的Azure磁盘或存储性能层配对。

    有关详细信息,请参阅 收集 Linux VM 的性能指标

  • 安全和防火墙规则:

    • 端口块:本地群集通常具有开放的内部通信。 此外,Azure NSG(网络安全组)或防火墙可能会阻止 Pacemaker 或 Corosync 通信所需的端口。

    有关详细信息,请参阅 网络安全组测试

方案 3 的解决方法

按照适当的准则设置 RHEL Pacemaker 群集。 此外,请确保为 SAP HANA 或 SAP NetWeaver 等应用程序分配适当的资源,如Microsoft文档中指定。

方案 4:RHEL 8 发生故障转移后两个集群节点停止运行

Pacemaker 群集预计服务中断,并继续触发故障转移事件。 在双节点群集配置中,两个节点都终止并保持脱机状态,直到手动干预发生。

日志指示 STONITH 设备 python-user触发这两个节点的关闭指令。

方案 4 的原因

在服务中断(例如平台或网络中断请参见场景 1)期间,两个节点都尝试向 STONITH 设备写入数据,以屏蔽另一个节点,因为它们会丢失 Totem 令牌。 通常,STONITH 设备从第一个可用节点获取指令来写入它,以便关闭另一个节点。 如果两个节点都被允许写入 STONITH 设备,则它们可能会彼此终止。

方案 4 的解决方法

建议使用 priority-fencing-delay 或 pcmk_delay_max 参数,以便 STONITH 设备仅确认一个 VM:

  1. 在维护模式下设置群集:

    sudo pcs property set maintenance-mode=true
    
  2. 编辑群集配置:

    sudo pcs configure edit 
    
  3. 如果 Pacemaker 版本低于 2.0.4-6.el8,请添加 pcmk_delay_max 参数:

    sudo pcs property set pcmk_delay_max=15s
    

    如果 Pacemaker 版本晚于 2.0.4-6.el8以下,请改用 priority-fencing-delay 参数:

    sudo pcs property set priority-fencing-delay=15s
    
  4. 保存更改,并从维护模式中删除群集:

    sudo pcs property set maintenance-mode=false
    

有关详细信息,请参阅 RHEL - 创建Azure隔离代理 STONITH 设备。

方案 5:HANA_CALL 超时时间为 60 秒

Azure RHEL Pacemaker 群集运行 SAP HANA 作为应用程序,并在一个或两个 Pacemaker 群集节点上意外地经历重启。 根据/var/log/messages或/var/log/pacemaker.log日志记录,节点重启是由于HANA_CALL超时引起的,如下所示:

2024-06-04T09:25:37.772406+00:00 node01 SAPHanaTopology(rsc_SAPHanaTopology_H00_HDB02)[99440]: WARNING: RA: HANA_CALL timed out after 60 seconds running command 'hdbnsutil -sr_stateConfiguration --sapcontrol=1'
2024-06-04T09:25:38.711650+00:00 node01 SAPHana(rsc_SAPHana_H00_HDB02)[99475]: WARNING: RA: HANA_CALL timed out after 60 seconds running command 'hdbnsutil -sr_stateConfiguration'
2024-06-04T09:25:38.724146+00:00 node01 SAPHana(rsc_SAPHana_H00_HDB02)[99475]: ERROR: ACT: check_for_primary:  we didn't expect node_status to be: <>
2024-06-04T09:25:38.736748+00:00 node01 SAPHana(rsc_SAPHana_H00_HDB02)[99475]: ERROR: ACT: check_for_primary:  we didn't expect node_status to be: DUMP <00000000  0a                                                |.|#01200000001>

方案 5 的原因

SAP HANA超时消息通常被视为内部应用程序超时。 因此,SAP 供应商应参与其中。

方案 5 的解决方法

  • 若要确定问题的根本原因,请查看 OS 性能。
  • 应特别注意内存压力和存储设备及其配置。 如果 HANA 托管在网络文件系统(NFS)、Azure NetApp 文件(ANF)或Azure 文件存储上,则尤其如此。
  • 排除外部因素(如平台或网络中断)后,建议联系应用程序供应商进行跟踪呼叫分析和日志评审。

方案 6: ASCS/ERS SAP Netweaver 群集中的超时

Azure SUSE Pacemaker 群集正在以应用程序的形式运行 SAP Netweaver ASCS/ERS,但在 Pacemaker 群集中的一个或两个节点上出现意外重启情况。 日志中 /var/log/messages 记录了以下消息:

2024-11-09T07:36:42.037589-05:00 node  01 SAPInstance(RSC_SAP_ERS10)[8689]: ERROR: SAP instance service enrepserver is not running with status GRAY !
2024-11-09T07:36:42.044583-05:00 node  01 pacemaker-controld[2596]: notice: Result of monitor operation for RSC_SAP_ERS10 on node01: not running 
2024-11-09T07:39:42.789404-05:00 node01 SAPInstance(RSC_SAP_ASCS00)[16393]: ERROR: SAP Instance CP2-ASCS00 start failed: #01109.11.2024 07:39:42#012WaitforStarted#012FAIL: process msg_server MessageServer not running
2024-11-09T07:39:420.796280-05:00 node01 pacemaker-execd[2404]: notice: RSC_SAP_ASCS00 start (call 78, PID 16393) exited with status 7 (execution time 23.488s)
2024-11-09T07:39:42.828845-05:00 node  01 pacemaker-schedulerd[2406]: warning: Unexpected result (not running) was recorded for start of RSC_SAP_ASCS00 on node01 at Nov  9 07:39:42 2024 
2024-11-09T07:39:42.828955-05:00 node  01 pacemaker-schedulerd[2406]: warning: Unexpected result (not running) was recorded for start of RSC_SAP_ASCS00 on node01 at Nov  9 07:39:42 2024 

方案 6 的原因

资源 ASCS/ERS 被视为 SAP Netweaver 集群的应用程序。 当相应的群集监视资源超时时,它会触发故障转移机制。

方案 6 的解决方法

  • 若要确定问题的根本原因,建议查看 OS 性能。
  • 应特别注意内存压力和存储设备及其配置。 如果 SAP Netweaver 托管在网络文件系统(NFS)、Azure NetApp 文件(ANF)或Azure 文件存储上,则尤其如此。
  • 排除外部因素(如平台或网络中断)后,建议让应用程序供应商参与跟踪呼叫分析和日志评审。

资料来源与适用范围

资料来源
微软官方 Linux 虚拟机排障文档
适用范围
Azure Linux 虚拟机;按正文发行版、内核及代理版本
内容语言
中文;命令、路径和错误标识保留技术原文
本地收录日期
2026-10-26
授权说明
CC BY 4.0

正文与所需资源由本站本地存储。查看来源及更新记录 ↗

请按适用版本和实际日志确认原因;本站没有对每一种系统或设备逐项执行文中的操作。