在 Google Cloud 上管理 SAP 工作負載的主機錯誤

本文說明如何在 Google Cloud上偵測主機硬體錯誤,並保護 SAP 工作負載免受錯誤影響。

Google Cloud 無法避免硬體故障。雖然有多層備援機制,但仍可能發生硬體錯誤,導致 Compute Engine 執行個體終止。

主機硬體錯誤可能有多種原因,因為伺服器硬體及其相關元件包含許多可能發生故障的零件。特別是記憶體最佳化機器類型,因為它們有大量記憶體模組,因此硬體故障與記憶體相關的可能性會增加。記憶體相關故障分為兩種:

  • 可修正的記憶體錯誤:這類錯誤可透過內建硬體和軟體機制修正,例如錯誤修正碼 (ECC) 記憶體。這類錯誤不會影響在主機上執行的 Compute Engine 執行個體。這些事件會由硬體和軟體機制透明處理。

  • 無法修正的記憶體錯誤:這些錯誤無法修正。這些錯誤很少發生,而且無法預測。任何嘗試存取受影響記憶體區域的動作都會傳送信號給作業系統,導致 Compute Engine 執行個體終止,或是傳遞至執行個體的Machine check exception (MCE)。當 Compute Engine 執行個體上的應用程式嘗試從受影響的無法修正記憶體區域讀取資料時,應用程式會使用這個信號並終止。當 Compute Engine 執行個體中的作業系統收到這項信號時,根據預設,作業系統會避免重新分配受影響的記憶體頁面,以免日後繼續使用。發生無法修正的記憶體錯誤時,應用程式就會終止。

Compute Engine VM 提供額外的防護措施,例如即時遷移,可與應用程式架構策略搭配使用,以限制部分事件的影響。

偵測主機錯誤

如要在 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 HA/DR 供應器掛鉤,並啟用 SAP HANA 快速重新啟動選項

    如要瞭解如何執行這些操作,請參閱 所有 SAP HANA 指南中,針對您 SAP HANA 情境的部署指南。

  • 為了保護 SAP HANA 工作負載免於在 X4 記憶體最佳化裸機機器類型上發生無法修正的記憶體錯誤,系統會在偵測到錯誤後,自動在健康的主機上重新啟動執行個體。這是讓執行個體啟用完整運作功能的最快途徑。

  • 如要保護 SAP HANA 工作負載免於遭受 Compute Engine 主機記憶體警示 (compute.instances.host_event_notify) 事件 (針對 M2、M3 或 M4 機器類型) 顯示的記憶體錯誤,請執行下列操作:

    • 如果 VM 無法處理無法修正的錯誤,系統會根據自動重啟政策自動重新啟動 VM。在高可用性叢集中,次要節點會自動接管。你無須採取任何進一步行動。

    • 如果 VM 可以處理無法修正的記憶體錯誤,且不會導致 VM 當機,請執行下列操作:

      1. 如果受影響的執行個體是高可用性叢集中目前的主要節點,請啟動叢集中次要節點的手動容錯移轉作業。

      2. 停止受影響的執行個體,釋放受主機錯誤事件影響的虛擬記憶體頁面。

        雖然 Compute Engine 會在這些事件發生時自動將受影響的 VM 遷移至健康的主機,但仍可能無法存取某些記憶體頁面。如果 SAP HANA 工作負載在發生記憶體錯誤後,首次嘗試讀取受影響的記憶體頁面,則工作負載會失敗並終止。停止執行個體後,您可以釋放受影響的虛擬記憶體頁面,這些頁面可能會因初始硬體錯誤而保留。

      3. 啟動受影響的執行個體。

      如果您無法停止及啟動受影響的 VM,則在該 VM 上執行的應用程式可能會繼續運作,直到能夠讀取受影響的記憶體頁面為止,這可能需要數小時的時間。請盡快重新啟動受影響的 VM,釋放任何受影響的記憶體頁面。