Google Cloud 并非完全不会发生硬件故障。虽然存在多层冗余,但仍可能会发生硬件错误,导致 Compute Engine 实例终止。
主机硬件错误可能有多种原因,因为服务器硬件及其相关组件有许多部件都可能会发生故障。内存优化机器类型尤其具有大量内存模块,这可能会增加硬件故障与内存相关的可能性。内存相关故障分为两种:
可纠正的内存错误:这些错误可以通过内置硬件和软件机制(例如纠错代码 (ECC) 内存)进行纠正。此类错误对在主机上运行的 Compute Engine 实例没有影响。它们由硬件和软件机制透明处理。
不可修正的内存错误:这些错误无法修正。它们很少见、随机且不可预测。任何尝试访问受影响内存区域的操作都会导致向操作系统发送信号,这会导致 Compute Engine 实例终止或向实例传递机器检查异常 (MCE)。当 Compute Engine 实例上的应用尝试从受影响且无法更正的内存区域读取数据时,该应用会消耗此信号并终止。当 Compute Engine 实例中的操作系统收到此信号时,默认情况下,操作系统会阻止重新分配受影响的内存页面,以免进一步使用。
检测主机错误
如需检测主机错误,请配置基于日志的提醒政策,使用以下预定义的 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 工作负载免受 M2、M3 或 M4 机器类型的 Compute Engine 主机内存提醒 (
compute.instances.host_event_notify
) 事件显示的内存错误影响,请执行以下操作:如果虚拟机无法处理不可更正的错误,则会因自动重启政策而自动重启。在高可用性集群中,辅助节点会自动接管。您无需采取进一步行动。
如果虚拟机可以处理不可更正的内存错误,并且不会导致虚拟机崩溃,请执行以下操作:
如果受影响的实例是高可用性集群中的当前主节点,请手动向集群中的次要节点发起故障切换。
停止受影响的实例,以释放受主机错误事件影响的虚拟内存页。
虽然 Compute Engine 会在这些事件期间自动将受影响的虚拟机迁移到正常的主机,但某些内存页面可能仍然无法访问。如果 SAP HANA 工作负载在内存错误发生后首次尝试读取受影响的内存页,则工作负载会失败并终止。通过停止实例,您可以释放可能因初始硬件错误而保留的受影响的虚拟内存页。
启动受影响的实例。
如果您无法停止和启动受影响的虚拟机,则在受影响的虚拟机能够读取受影响的内存页面之前,其上运行的应用可能会继续运行,这可能需要数小时。请尽快重启受影响的虚拟机,以释放所有受影响的内存页。