管理 SAP on Google Cloud 工作负载的主机错误

本文档介绍如何检测 Google Cloud上的主机硬件错误,并保护 SAP 工作负载免受这些错误的影响。

Google Cloud 并非对硬件故障免疫。虽然存在多层冗余,但仍可能会发生硬件错误,导致 Compute Engine 实例终止。

主机硬件错误可能由多种原因导致,因为服务器硬件及其关联组件有许多部分可能会出现故障。尤其是内存优化机器类型,其内存模块数量较多,这可能会增加硬件故障与内存相关的可能性。内存相关故障分为两种类型:

  • 可纠正的内存错误:这些错误可以通过内置硬件和软件机制(例如纠错代码 [ECC] 内存)进行纠正。此类错误不会影响在主机上运行的 Compute Engine 实例。它们由硬件和软件机制透明地处理。

  • 无法纠正的内存错误:这些错误无法纠正。它们是罕见的、随机的且不可预测的。任何尝试访问受影响内存区域的操作都会向操作系统发送信号,这会导致 Compute Engine 实例终止或向实例传递机器检查异常 (MCE)。当 Compute Engine 实例上的应用尝试从包含不可纠正错误的受影响内存区域读取数据时,该应用会使用该信号终止运行。默认情况下,当 Compute Engine 实例中的操作系统收到此信号后,会阻止将受影响的内存页重新分配给其他进程,以避免其被继续使用。如果发生无法纠正的内存错误,则不可避免地会导致应用终止。

Compute Engine 虚拟机提供了额外的安全措施,例如实时迁移,这些措施可以与应用架构策略结合使用,以限制部分此类事件的影响。

检测主机错误

如需检测与 M2、M3 或 M4 机器类型有关的主机错误,请配置基于日志的提醒政策,这些政策使用以下预定义的 Compute Engine 查询

查询/过滤条件名称 说明
Compute Engine 主机错误 (compute.instances.hostError) 该主机错误表示发生了导致需要终止 Compute Engine 实例的硬件错误。
Compute Engine 主机内存提醒 (compute.instances.hostEventNotify) 该主机内存提醒表示发生了与内存模块相关的硬件错误。此类错误可能是由于组件永久性故障(随着不断使用而产生的故障)或由高能粒子或宇宙射线导致的暂时性事件(导致无法安全检索内存页)造成的。

保护 SAP 工作负载免受主机错误的影响

为了保护您的 SAP 工作负载免受主机错误的影响,我们建议您执行以下操作:

  • 确保为 Compute Engine 实例设置了自动重启

    默认情况下,Compute Engine 会为所有实例启用此选项。我们建议您不要关闭此功能。

  • 如需保护 SAP HANA 和 SAP NetWeaver 工作负载免受单个实例故障的影响,请使用高可用性 (HA) 配置部署这些工作负载。

    如需了解详情,请参阅以下指南:

  • 为了防止 SAP HANA 工作负载受到任何 SAP HANA 进程终止的影响,请实现 SAP HANA 高可用性/灾难恢复提供程序钩子并启用 SAP HANA 快速重启选项

    如需了解如何执行这些操作,请参阅所有 SAP HANA 指南中适用于您的 SAP HANA 场景的部署指南。

  • 为了保护您的 SAP HANA 工作负载免受 X4 内存优化裸金属机器类型上不可纠正的内存错误的影响,系统会在检测到错误后立即在正常运行的主机上自动重启您的实例。这提供了为您的实例维持全面运维功能的最快途径。

  • 如需保护 SAP HANA 工作负载免受针对 M2、M3 或 M4 机器类型的 Compute Engine 主机内存提醒 (compute.instances.host_event_notify) 事件中所示的内存错误影响,请执行以下操作:

    • 如果虚拟机无法处理不可纠正的错误,则虚拟机会依据自动重启政策而自动重启。在高可用性集群中,辅助节点会自动接管。无需采取进一步措施。

    • 如果虚拟机能够处理不可纠正的内存错误,并且不会导致虚拟机崩溃,请执行以下操作:

      1. 如果受影响的实例是高可用性集群中的当前主节点,请手动故障切换到集群中的辅助节点。

      2. 关停受影响的实例,以释放受主机错误事件影响的虚拟内存页。

        虽然 Compute Engine 会在这些事件期间自动将受影响的虚拟机迁移到正常运行的主机,但部分内存页可能会保持无法访问的状态。如果 SAP HANA 工作负载在发生内存错误后首次尝试读取受影响的内存页,则工作负载会失败并终止。通过关停实例,您可以释放可能因初始硬件错误而保留的受影响虚拟内存页。

      3. 启动受影响的实例。

      如果您无法关停和启动受影响的虚拟机,则在该虚拟机上运行的应用可能会保持运行,直到它们读取到受影响的内存页为止,而这可能需要耗费几个小时的时间。请尽快重启受影响的虚拟机,以释放所有受影响的内存页。