SAP HANA 高可用性規劃指南

本指南提供在 Google Cloud上部署高可用性 (HA) SAP HANA 系統前,需要瞭解的選項、建議及一般概念總覽。

本指南假設您已瞭解實作 SAP HANA 高可用性系統一般需要的概念與做法,因此,本指南主要會介紹在 Google Cloud上實作此類系統時需要瞭解的重點。

如果您需要詳細瞭解實作 SAP HANA HA 系統所需的一般概念與做法,請參閱以下內容:

本規劃指南專門介紹 SAP HANA 適用的 HA,並不包含應用程式系統適用的 HA 內容。如要進一步瞭解 SAP NetWeaver 適用的 HA,請參閱 Google Cloud上的 SAP NetWeaver 高可用性規劃指南

本指南無法取代 SAP 提供的任何說明文件。

Google Cloud上 SAP HANA 的高可用性選項

您可以在設計 SAP HANA 的高可用性設定時,結合使用 Google Cloud 和 SAP 功能,以便同時處理基礎架構或軟體層級的錯誤。下表說明用來提供高可用性的 SAP 和 Google Cloud 功能。

功能 說明
Compute Engine 即時遷移

Compute Engine 會監控基礎架構的狀態,並自動遷移執行個體,使其不受基礎架構維護事件的影響,且不需要使用者的介入。

在適用情況下,Compute Engine 會保持您的執行個體在遷移作業期間繼續執行。發生重大的服務中斷情形時,在執行個體停止運作與恢復可用之間會有些微的延遲。

在多主機系統中,共用磁碟區如部署指南中使用的「/hana/shared」磁碟區,為附加到主要主機託管 VM 的永久磁碟,以 NFS 方式掛接到工作站主機。在進行主要主機的即時遷移時,NFS 磁碟區最多會有數秒的時間無法存取。重新啟動主要主機後,所有主機的 NFS 磁碟區會開始運作,並自動繼續進行一般作業。

復原的執行個體與原始執行個體相同,包括執行個體 ID、私人 IP 位址及所有執行個體中繼資料與儲存空間。根據預設,標準執行個體會設定為即時遷移,我們建議不要變更這項設定。

詳情請參閱即時遷移一節。

Compute Engine 自動重新啟動

如果您的執行個體設定為在發生維護事件時終止,或者執行個體因基本硬體問題而當機,您可以設定讓 Compute Engine 自動重新啟動執行個體。

根據預設,執行個體會設定為自動重新啟動,我們建議不要變更這項設定。

SAP HANA 服務自動重新啟動

SAP HANA 服務自動重新啟動是 SAP 提供的錯誤復原解決方案。

SAP HANA 已針對各種活動設定許多隨時執行的服務。當這些服務因軟體或人為錯誤而停用,SAP HANA 服務自動重新啟動監控功能會自動啟動這些服務。當服務重新啟動後,就會將所有必要的資料載入回記憶體,並繼續原先的作業。

SAP HANA 備份

SAP HANA 備份會從您的資料庫建立資料複本,以用於重新建構特定時間點的資料庫。

如要進一步瞭解如何在 Google Cloud上使用 SAP HANA 備份,請參閱 SAP HANA 作業指南

SAP HANA 儲存空間複製

SAP HANA 儲存空間複製透過特定硬體合作夥伴提供儲存空間層級的災難復原支援。 Google Cloud不支援 SAP HANA 儲存空間複製。您可以考慮改用 Compute Engine 永久磁碟快照。

關於如何在 Google Cloud上使用永久磁碟快照備份 SAP HANA 系統的詳情,請參閱 SAP HANA 作業指南

SAP HANA 主機自動容錯移轉

SAP HANA 主機自動容錯移轉是本機錯誤復原解決方案,需要在向外擴充系統中有一或多個待命 SAP HANA 主機。如果其中一部主要主機故障,主機自動容錯移轉功能會自動將待命主機上線,並將故障的主機重新啟動為待命主機。

如需詳細資訊,請參閱:

SAP HANA 系統複製

SAP HANA 系統複製讓您設定在高可用性或災難復原情境中接替主要系統的一個或多個系統,。您可以調整複製作業以符合自己的效能及容錯移轉時間需求。

SAP HANA Fast Restart 選項 (建議)

如果 SAP HANA 終止,但作業系統仍在執行,SAP HANA 快速重新啟動功能可縮短重新啟動時間。SAP HANA 會利用 SAP HANA 永久記憶體功能,在對應至 tmpfs 檔案系統的 DRAM 中保留資料欄儲存表的 MAIN 資料片段,藉此縮短重新啟動時間。

如要進一步瞭解如何使用 SAP HANA 快速重新啟動選項,請參閱高可用性部署指南:

SAP HANA HA/DR 供應器鉤子 (建議)

SAP HANA HA/DR 供應器鉤子可讓 SAP HANA 針對特定事件向 Pacemaker 叢集傳送通知,進而改善失敗偵測功能。SAP HANA HA/DR 供應器掛鉤需要 SAP HANA 2.0 SPS 03 或更新版本。

如要進一步瞭解如何使用 SAP HANA HA/DR 供應器鉤子,請參閱高可用性部署指南:

Google Cloud上的 SAP HANA 適用的 OS 原生 HA 叢集

Linux 作業系統叢集可讓應用程式和訪客瞭解應用程式狀態,並在發生失敗時自動執行復原動作。

雖然在非雲端環境中適用的高可用性叢集原則通常也適用於 Google Cloud,但在實作某些項目 (例如圍欄和虛擬 IP) 時,兩者之間仍有差異。

您可以為 Google Cloud上的 SAP HANA 高可用性叢集使用 Red Hat 或 SUSE 高可用性 Linux 發行版本。

如要瞭解如何在Google Cloud 上為 SAP HANA 部署及手動設定 HA 叢集,請參閱:

如要瞭解 Google Cloud提供的自動部署選項,請參閱「SAP HANA 高可用性設定的自動部署選項」。

叢集資源代理程式

Red Hat 和 SUSE 都為 Google Cloud 提供資源代理程式,以便實作高可用性的 Pacemaker 叢集軟體。 Google Cloud 的資源代理程式可管理區隔、使用路徑或別名 IP 實作的 VIP,以及儲存空間動作。

為提供尚未納入基本 OS 資源代理程式的更新,Google Cloud 會定期為 SAP 的 HA 叢集提供隨附資源代理程式。當需要這些隨附資源代理程式時,Google Cloud 部署程序會納入下載這些代理程式的步驟。

圍欄代理程式

在 Google Cloud Compute Engine OS 叢集的情況下,圍欄會採用 STONITH 的形式,讓兩節點叢集中的每個成員都能重新啟動其他節點。

Google Cloud 提供兩種圍欄代理程式,可在 Linux 作業系統上搭配 SAP 使用,包括已認證 Red Hat 和 SUSE Linux 發行版本中的 fence_gce 代理程式,以及您也可以下載的舊版 gcpstonith 代理程式,可搭配未包含 fence_gce 代理程式的 Linux 發行版本使用。建議您使用 fence_gce 代理程式 (如有)。

區隔代理程式所需的 IAM 權限

隔離代理程式會向 Compute Engine API 發出重設呼叫,藉此重新啟動 VM。為了驗證及授權存取 API,邊界代理程式會使用 VM 的服務帳戶。邊界代理程式使用的服務帳戶必須具備下列權限的角色:

  • compute.instances.get
  • compute.instances.list
  • compute.instances.reset
  • compute.instances.start
  • compute.instances.stop
  • compute.zoneOperations.get
  • logging.logEntries.create
  • compute.zoneOperations.list

預先定義的 Compute 執行個體管理員角色包含所有必要權限。

如要將重新啟動權限的範圍限制在目標節點,您可以設定以資源為基礎的存取權。詳情請參閱「設定資源存取權」。

虛擬 IP 位址

在發生容錯移轉時,SAP on Google Cloud 的高可用性叢集會使用虛擬或浮動 IP 位址 (VIP),將網路流量從一個主機重新導向至另一個主機。

一般非雲端部署作業會使用無償位址解析通訊協定 (ARP) 要求,宣告 VIP 的移動和重新分配至新 MAC 位址。

在 Google Cloud上,您可以使用多種不同的方法來移動及重新指派 HA 叢集中的 VIP,而無須使用無償 ARP 要求。建議使用內部 TCP/UDP 負載平衡器,但視需求而定,您也可以使用以路徑為準的 VIP 實作或以別名 IP 為準的 VIP 實作。

如要進一步瞭解如何在 Google Cloud上導入 VIP,請參閱「在 Google Cloud上導入虛擬 IP」一文。

儲存空間和複寫

SAP HANA HA 叢集設定會使用同步 SAP HANA 系統複製功能,讓主要和次要 SAP HANA 資料庫保持同步。SAP HANA 的標準 OS 提供資源代理程式會在容錯期間管理系統複製功能、啟動及停止複製作業,以及在複製程序中切換哪些執行個體做為活動和備用執行個體。

如果您需要共用檔案儲存空間,NFS 或 SMB 型檔案器可提供必要功能。

對於高可用性共用儲存空間解決方案,您可以使用 FilestoreGoogle Cloud NetApp Volumes 的 Premium 或 Extreme 服務等級,或是第三方檔案共用解決方案。Filestore 的區域服務層級 (舊稱 Enterprise) 可用於多區域部署,而 Filestore 的 Basic 層級可用於單一區域部署。

Compute Engine 地區永久磁碟跨區域提供同步複製的區塊儲存空間。雖然 SAP HA 系統不支援使用地區永久磁碟儲存資料庫,但您可以將其與 NFS 檔案伺服器搭配使用。

如要進一步瞭解 Google Cloud的儲存空間選項,請參閱:

Google Cloud上的 HA 叢集設定

Google Cloud 建議您將特定叢集設定參數的預設值變更為更適合 Google Cloud 環境中 SAP 系統的值。如果您使用 Google Cloud提供的自動化指令碼,系統會為您設定建議值。

請將建議值視為調整 HA 叢集中 Corosync 設定的起點。您必須確認失敗偵測和容錯觸發的靈敏度,是否適合 Google Cloud 環境中的系統和工作負載。

Corosync 設定參數值

在 SAP HANA 的 HA 叢集設定指南中, Google Cloud建議 corosync.conf 設定檔 totem 區段中的多個參數值,這些值與 Corosync 或 Linux 發行商設定的預設值不同。

下表列出 Google Cloud建議值的 totem 參數,以及變更值的影響。如要瞭解這些參數的預設值 (Linux 發行版可能不同),請參閱 Linux 發行版的說明文件。
參數 建議值 變更值的影響
secauth off 停用所有 totem 訊息的驗證和加密功能。
join 60 (毫秒) 增加節點在會員通訊協定中等待 join 訊息的時間。
max_messages 20 接收符記後,可增加節點傳送的訊息數量上限。
token 20000 (毫秒)

增加節點等待 totem 通訊協定權杖的時間長度,以便節點宣告權杖遺失、假設節點發生錯誤,並開始採取行動。

提高 token 參數的值,可讓叢集更能容許短暫的基礎架構事件,例如即時遷移。不過,這也可能導致叢集需要較長時間偵測及復原節點故障。

token 參數的值也會決定 consensus 參數的預設值,後者會控制節點在嘗試重新建立設定成員資格前,等待達成共識的時間長度。

consensus 不適用

以毫秒為單位,指定在等待達成共識後,才開始進行新一輪會員設定的等待時間。

建議您省略這個參數。如果未指定 consensus 參數,Corosync 會將其值設為 token 參數值的 1.2 倍。如果您使用 token 參數的建議值 20000,則 consesus 參數會設為 24000 值。

如果您明確指定 consensus 的值,請確認該值為 240001.2*token (以較大者為準)。

token_retransmits_before_loss_const 10 在節點判斷收件節點已失敗並採取行動前,增加節點嘗試重新傳送符記的次數。
transport
  • 針對 SLES:udpu
  • RHEL 8 以上版本:knet
  • RHEL 7:udpu
指定 corosync 使用的傳輸機制。

如要進一步瞭解如何設定 corosync.conf 檔案,請參閱 Linux 發行版的設定指南:

叢集資源的逾時和間隔設定

定義叢集資源時,您會為各種資源作業 (op) 設定 intervaltimeout 值 (以秒為單位)。例如:

primitive rsc_SAPHanaTopology_HA1_HDB00 ocf:suse:SAPHanaTopology \
 operations \$id="rsc_sap2_HA1_HDB00-operations" \
 op monitor interval="10" timeout="600" \
 op start interval="0" timeout="600" \
 op stop interval="0" timeout="300" \
 params SID="HA1" InstanceNumber="00"

clone cln_SAPHanaTopology_HA1_HDB00 rsc_SAPHanaTopology_HA1_HDB00 \
 meta is-managed="true" clone-node-max="1" target-role="Started" interleave="true"

timeout 值會對每項資源作業產生不同的影響,如下表所述。

資源作業 逾時動作
monitor 如果超出逾時限制,監控狀態通常會回報為失敗,而相關聯的資源則會被視為處於失敗狀態。叢集會嘗試復原選項,其中可能包括容錯移轉。叢集不會重試失敗的監控作業。
start 如果資源在逾時前無法啟動,叢集會嘗試重新啟動該資源。行為取決於與資源相關聯的失敗時動作。
stop 如果資源未在逾時前回應停止作業,就會觸發圍欄事件。

叢集資源的 intervaltimeout 設定會影響叢集軟體偵測失敗並觸發容錯的速度,這與其他叢集設定一樣。

Google Cloud 在 Compute Engine 即時遷移維護事件的叢集設定指南中,建議的 timeoutinterval 值。

無論您使用哪些 timeoutinterval 值,都需要在測試叢集時評估這些值,尤其是在即時遷移測試期間,因為即時遷移事件的長度可能會因您使用的機器類型和其他因素 (例如系統使用率) 而略有不同。

圍欄資源設定

在 SAP HANA 的 HA 叢集設定指南中, Google Cloud建議在設定 HA 叢集的圍欄資源時使用多個參數。建議的值與 Corosync 或 Linux 發行商設定的預設值不同。

下表列出 Google Cloud建議使用的圍欄參數,以及建議值和參數詳細資料。如要瞭解參數的預設值 (Linux 發行版可能不同),請參閱 Linux 發行版的說明文件。

參數 建議值 詳細資料
pcmk_reboot_timeout 300 (秒)

指定重新啟動動作要使用的逾時值。pcmk_reboot_timeout 值應大於下列項目的總和:

  • Corosync token 逾時。
  • Corosync consensus 逾時。
  • 重新啟動作業完成所需的時間長度,包括任何延遲屬性。
pcmk_monitor_retries 4 指定在逾時期限內重試 monitor 指令的最大次數。
pcmk_delay_max 30 (秒)

指定隨機延遲時間以執行圍欄動作,避免叢集節點同時圍欄。為避免發生圍欄競爭,請確保只為一個執行個體指派隨機延遲時間,因此,這項參數應只在兩個節點 HANA HA 叢集 (向上擴充) 的其中一個圍欄資源上啟用。

在橫向擴展 HANA HA 叢集中,您應在網站 (主要或次要) 的所有節點上啟用此參數

在 Google Cloud上測試 HA 叢集

設定叢集並在測試環境中部署叢集和 SAP HANA 系統後,您需要測試叢集,確認 HA 系統設定正確無誤,且運作正常。

如要確認備援機制是否正常運作,請透過下列動作模擬各種故障情況:

  • 關閉 VM
  • 建立核心錯誤
  • 關閉應用程式
  • 中斷執行個體之間的網路

此外,請在主要主機上模擬 Compute Engine 即時遷移事件,確認不會觸發容錯。您可以使用 Google Cloud CLI 指令 gcloud compute instances simulate-maintenance-event 模擬維護作業。

記錄和監控

資源代理程式可包含記錄功能,將記錄傳播至 Google Cloud Observability 進行分析。每個資源代理程都包含可識別任何記錄選項的設定資訊。如果是 bash 實作,記錄選項為 gcloud logging

您也可以安裝 Cloud Logging 代理程式,擷取作業系統程序的記錄輸出內容,並將資源使用率與系統事件建立關聯。記錄代理程式會擷取預設的系統記錄,其中包含 Pacemaker 和叢集服務的記錄資料。詳情請參閱「關於記錄代理程式」。

如要瞭解如何使用 Cloud Monitoring 設定服務檢查,以監控服務端點的可用性,請參閱「管理運作時間檢查」。

服務帳戶和高可用性叢集

叢集軟體可在 Google Cloud環境中執行的動作,會受到授予每個主機 VM 服務帳戶的權限保護。在高安全性環境中,您可以限制主機 VM 服務帳戶中的權限,以符合最低權限原則。

限制服務帳戶權限時,請注意系統可能會與 Cloud Storage 等 Google Cloud 服務互動,因此您可能需要在主機 VM 的服務帳戶中加入這些服務互動權限。

如要使用最嚴格的權限,請建立具備最低必要權限的自訂角色。如要進一步瞭解自訂角色,請參閱「建立及管理自訂角色」。您可以在資源的 IAM 政策角色繫結中加入條件,進一步限制權限,只允許存取特定資源的執行個體,例如 HA 叢集中的 VM 執行個體。

系統所需的最低權限取決於系統存取的Google Cloud 資源,以及系統執行的動作。因此,如要為 HA 叢集中的主機 VM 決定最低必要權限,您可能需要仔細調查主機 VM 中的系統存取哪些資源,以及這些系統如何使用這些資源執行動作。

以下列表列出部分 HA 叢集資源,以及相關所需權限:

  • 圍欄
    • compute.instances.list
    • compute.instances.get
    • compute.instances.reset
    • compute.instances.stop
    • compute.instances.start
    • logging.logEntries.create
    • compute.zones.list
  • 使用別名 IP 實作的 VIP
    • compute.instances.list
    • compute.instances.get
    • compute.zones.list
    • logging.logEntries.create
    • compute.instances.updateNetworkInterface
    • compute.zoneOperations.get
    • logging.logEntries.create
  • 使用靜態路徑實作的 VIP
    • compute.instances.list
    • compute.instances.get
    • compute.zones.list
    • logging.logEntries.create
    • compute.routes.get
    • compute.routes.create
    • compute.routes.delete
    • compute.routes.update
    • compute.routes.list
    • compute.networks.updatePolicy
    • compute.networks.get
    • compute.globalOperations.get
    • logging.logEntries.create
  • 使用內部負載平衡器實作的 VIP
    • 不需要特定權限 - 負載平衡器會根據健康狀態檢查狀態運作,不需要叢集與 Google Cloud中的資源互動或變更資源

Google Cloud上的虛擬 IP 實作

高可用性叢集會使用浮動虛擬 IP 位址 (VIP),在發生意外故障或進行例行維護時,將工作負載從一個叢集節點移至另一個叢集節點。VIP 的 IP 位址不會變更,因此用戶端應用程式不會知道工作是由不同節點提供。

VIP 也稱為浮動 IP 位址

在 Google Cloud上,VIP 的實作方式與在內部部署安裝中的部署方式稍有不同,當發生容錯移轉時,無法使用無償 ARP 要求來公告變更,而是可以使用下列任一方法,為 SAP HA 叢集實作 VIP 位址:

內部直通式網路負載平衡器 VIP 實作

負載平衡器通常會在應用程式的多個執行個體之間分配使用者流量,以便將工作負載分散至多個有效系統,並防止任何一個執行個體的處理作業速度變慢或失敗。

內部傳送網路負載平衡器也提供容錯移轉支援功能,可搭配 Compute Engine 健康狀態檢查使用,用於偵測失敗、觸發容錯移轉,以及將流量重新導向至原生 OS HA 叢集中的新主要 SAP 系統。

容錯移轉支援是建議的 VIP 實作方式,原因如下:

  • Compute Engine 的負載平衡功能提供 99.99% 的可用性服務水準協議。
  • 負載平衡功能支援多可用區高可用性叢集,可透過可預測的跨可用區容錯時間,防範可用區故障。
  • 使用負載平衡功能可縮短偵測及觸發備援所需的時間,通常在發生失敗後的幾秒內即可完成。整體容錯移轉時間取決於 HA 系統中各個元件的容錯移轉時間,這些元件可能包括主機、資料庫系統、應用程式系統等。
  • 使用負載平衡可簡化叢集設定,並減少依附元件。
  • 與使用路由的 VIP 實作方式不同,您可以使用自有 VPC 網路的 IP 範圍,並視需要保留及設定這些範圍。
  • 負載平衡功能可輕鬆將流量重新導向至次要系統,以便進行預定的維護停機作業。

為 VIP 的負載平衡器實作建立健康狀態檢查時,您會指定健康狀態檢查探測的主機通訊埠,以便判斷主機的健康狀態。針對 SAP HA 叢集,請指定位於私人範圍 (49152-65535) 的目標主機通訊埠,以免與其他服務衝突。在主機 VM 上,使用次要輔助服務 (例如 socat 公用程式或 HAProxy) 設定目標通訊埠。

如果資料庫叢集中的備用系統仍處於線上狀態,健康狀態檢查和輔助服務會啟用負載平衡功能,將流量導向目前在叢集中擔任主要系統的線上系統。

您可以使用輔助服務和通訊埠重新導向,在 SAP 系統上觸發預定的軟體維護備援。

如要進一步瞭解容錯移轉支援功能,請參閱「設定內部直通式網路負載平衡器的容錯移轉功能」。

如要部署具備負載平衡器 VIP 實作的 HA 叢集,請參閱:

靜態路徑 VIP 實作

靜態路徑實作方式也能防範區域故障,但您必須在 VM 所在的現有虛擬私人雲端子網路 IP 範圍外使用 VIP。因此,您也必須確保 VIP 不會與延伸網路中的任何外部 IP 位址衝突。

當靜態路徑實作項目與共用 VPC 設定搭配使用時,也可能會導致複雜性,因為共用 VPC 設定會將網路設定區隔到主機專案。

如果您為 VIP 使用靜態路徑實作,請諮詢網路管理員,確定適合靜態路徑實作的 IP 位址。

別名 IP VIP 實作

不建議在多區域 HA 部署中實作別名 IP VIP,因為如果某個區域發生故障,別名 IP 可能會延遲重新分配至不同區域的節點。請改用內部直通式網路負載平衡器 (支援備援) 實作 VIP。

如果您要在同一個區域部署 SAP HA 叢集的所有節點,可以使用別名 IP 為 HA 叢集實作 VIP。

如果您有現有的多區域 SAP HA 叢集,且該叢集使用 VIP 的別名 IP 實作項目,您可以遷移至內部直通 Network Load Balancer 實作項目,而無須變更 VIP 位址。別名 IP 位址和內部直通式網路負載平衡器都會使用 VPC 網路的 IP 範圍。

雖然在多區域 HA 叢集中,我們不建議使用別名 IP 位址實作 VIP,但在 SAP 部署中,別名 IP 位址有其他用途。舉例來說,您可以使用這些設定為彈性 SAP 部署作業提供邏輯主機名稱和 IP 指派,例如由 SAP Landscape Management 管理的作業。

Google Cloud上的 VIP 一般最佳做法

如要進一步瞭解 Google Cloud上的 VIP,請參閱「浮動 IP 位址最佳做法」。

Google Cloud上的 SAP HANA 主機自動容錯移轉

Google Cloud 支援 SAP HANA 主機自動容錯移轉,這是 SAP HANA 提供的本機錯誤復原解決方案。主機自動容錯移轉解決方案使用一或多個待命主機,在發生主機故障時,待命主機可以接手主要主機或工作站主機的工作。待命主機不包含任何資料或處理任何工作。

在容錯移轉完成後,故障主機會重新啟動成待命主機。

SAP 在 Google Cloud的向外擴充系統中最多支援三部待命主機。待命主機不會計入 SAP 在Google Cloud向外擴充系統中最多支援的 16 部作用中主機中。

如要進一步瞭解 SAP 的主機自動容錯移轉解決方案,請參閱「主機自動容錯移轉」。

何時應在 Google Cloud上使用 SAP HANA 主機自動容錯移轉功能

SAP HANA 主機自動容錯移轉功能可防止影響 SAP HANA 向外擴充系統中單一節點的失敗情形,包括下列項目的失敗:

  • SAP HANA 執行個體
  • 主機作業系統
  • 主機 VM

針對主機 VM 的失敗情形,在 Google Cloud上,自動重新啟動功能通常比主機自動容錯移轉更快地還原 SAP HANA 主機 VM,而即時遷移功能可同時防範計畫和非計畫的 VM 停機情形。因此,如果要保護 VM,就不需要使用 SAP HANA 主機自動容錯移轉解決方案。

SAP HANA 主機自動容錯移轉功能無法防範區域故障,因為 SAP HANA 向外擴充系統的所有節點都部署在單一區域中。

SAP HANA 主機自動容錯移轉功能不會將 SAP HANA 資料預先載入待命節點的記憶體,因此當待命節點接管時,整體節點復原時間主要取決於將資料載入待命節點記憶體所需的時間。

建議在下列情況下使用 SAP HANA 主機自動容錯移轉功能:

  • Google Cloud可能無法偵測到 SAP HANA 節點的軟體或主機作業系統發生故障。
  • 升遷遷移作業,您需要重現內部部署 SAP HANA 的設定,直到您可以針對Google Cloud最佳化 SAP HANA。
  • 如果跨區域的高可用性設定需要完全複製,但成本過高,且貴商家可容許以下情況,則可使用此設定:
    • 需要將 SAP HANA 資料載入待命節點的記憶體,因此節點復原時間較長。
    • 區域故障的風險。

SAP HANA 的儲存空間管理工具

/hana/data/hana/log 磁碟區只掛接在主要主機及工作站主機上。當接手的情況發生時,主機自動容錯移轉解決方案會使用 SAP HANA Storage Connector API 和 SAP HANA 待命節點的Google Cloud 儲存空間管理工具,將磁碟區掛載點從故障主機移至待命主機。

在 Google Cloud上,如果 SAP HANA 系統使用 SAP HANA 主機自動容錯移轉功能,就必須使用 SAP HANA 的儲存空間管理器。

支援的 SAP HANA 儲存空間管理工具版本

支援 SAP HANA 儲存空間管理工具的 2.0 以上版本。2.0 以下的所有版本已淘汰,且不受支援。如果您使用的是舊版,請更新 SAP HANA 系統,以便使用最新版的 SAP HANA 儲存空間管理工具。請參閱「更新 SAP HANA 的儲存空間管理工具」。

如要判斷版本是否已淘汰,請開啟 gceStorageClient.py 檔案。預設安裝目錄為 /hana/shared/gceStorageClient

從 2.0 版開始,版本號碼會列於 gceStorageClient.py 檔案頂端的註解中,如以下範例所示。如果缺少版本號碼,表示您正在查看 SAP HANA 儲存空間管理員的已淘汰版本。

"""Google Cloud Storage Manager for SAP HANA Standby Nodes.

The Storage Manager for SAP HANA implements the API from the SAP provided
StorageConnectorClient to allow attaching and detaching of disks when
running in Compute Engine.

Build Date: Wed Jan 27 06:39:49 PST 2021
Version: 2.0.20210127.00-00

"""

安裝 SAP HANA 的儲存空間管理工具

建議安裝 SAP HANA 儲存空間管理員的方法,是使用自動部署方法,部署包含最新 SAP HANA 儲存空間管理員的向外擴充 SAP HANA 系統。

如果您需要在 Google Cloud上將 SAP HANA 主機自動容錯移轉功能新增至現有的 SAP HANA 向外擴充系統,建議採用類似做法:使用 Google Cloud 提供的 Terraform 設定檔部署新的 SAP HANA 向外擴充系統,然後從現有系統將資料載入新系統。如要載入資料,您可以使用標準 SAP HANA 備份和還原程序,也可以使用 SAP HANA 系統複製功能,這樣可以縮短停機時間。如要進一步瞭解系統複製功能,請參閱 SAP 注意事項 2473002 - 使用 HANA 系統複製功能遷移擴充系統

如果您無法使用自動部署方法,建議您與 SAP 解決方案顧問聯絡 (可透過 Google Cloud 顧問服務找到他們),請他們協助手動安裝 SAP HANA 的儲存空間管理工具。

目前尚未記錄如何手動將 SAP HANA 儲存空間管理工具安裝到現有或新的向外擴充 SAP HANA 系統。

如要進一步瞭解 SAP HANA 主機自動容錯移轉功能的自動部署選項,請參閱「具有 SAP HANA 主機自動容錯移轉功能的 SAP HANA 向外擴充系統自動部署作業」。

更新 SAP HANA 的儲存空間管理工具

如要更新 SAP HANA 的儲存空間管理員,請先下載安裝套件,然後執行安裝指令碼,以便更新 SAP HANA /shared 磁碟機中 SAP HANA 可執行檔的儲存空間管理員。

以下程序僅適用於 SAP HANA 儲存空間管理員第 2 版。如果您使用的是 2021 年 2 月 1 日前下載的 SAP HANA 儲存空間管理器版本,請先安裝第 2 版,再嘗試更新 SAP HANA 儲存空間管理器。

如要更新 SAP HANA 的儲存空間管理工具,請按照下列步驟操作:

  1. 檢查 SAP HANA 目前的儲存空間管理工具版本:

    RHEL

    sudo yum check-update google-sapgcestorageclient

    SLES

    sudo zypper list-updates -r google-sapgcestorageclient
  2. 如有可用更新,請進行安裝:

    RHEL

    sudo yum update google-sapgcestorageclient

    SLES

    sudo zypper update

    更新後的 SAP HANA 儲存空間管理工具已安裝在 /usr/sap/google-sapgcestorageclient/gceStorageClient.py 中。

  3. 將現有的 gceStorageClient.py 替換為更新後的 gceStorageClient.py 檔案:

    • 如果現有的 gceStorageClient.py 檔案位於 /hana/shared/gceStorageClient (預設安裝位置),請使用安裝指令碼更新檔案:

      sudo /usr/sap/google-sapgcestorageclient/install.sh
    • 如果現有的 gceStorageClient.py 檔案不在 /hana/shared/gceStorageClient 中,請將更新後的檔案複製到現有檔案所在位置,取代現有檔案。

global.ini 檔案中的設定參數

SAP HANA 儲存空間管理員的特定設定參數 (包括是否啟用防護機制) 會儲存在 SAP HANA global.ini 檔案的儲存空間區段中。當您使用 Google Cloud 提供的 Terraform 設定檔來部署具有主機自動容錯移轉功能的 SAP HANA 系統時,部署程序會將設定參數新增至 global.ini 檔案。

以下範例顯示為 SAP HANA 儲存空間管理員建立的 global.ini 內容:

[persistence]
basepath_datavolumes = %BASEPATH_DATAVOLUMES%
basepath_logvolumes = %BASEPATH_LOGVOLUMES%
use_mountpoints = %USE_MOUNTPOINTS%
basepath_shared = %BASEPATH_SHARED%

[storage]
ha_provider = gceStorageClient
ha_provider_path = %STORAGE_CONNECTOR_PATH%

#
# Example configuration for 2+1 setup
#
# partition_1_*__pd = node-mnt00001
# partition_2_*__pd = node-mnt00002
# partition_3_*__pd = node-mnt00003
# partition_*_data__dev = /dev/hana/data
# partition_*_log__dev = /dev/hana/log
# partition_*_*__gcloudAccount = svc-acct-name@project-id.iam.gserviceaccount.com
# partition_*_data__mountOptions = -t xfs -o logbsize=256k
# partition_*_log__mountOptions = -t xfs -o logbsize=256k
# partition_*_*__fencing = disabled

[trace]
ha_gcestorageclient = info

SAP HANA 儲存空間管理員的 Sudo 存取權

為管理 SAP HANA 服務和儲存空間,SAP HANA 的儲存空間管理員會使用 SID_LCadm 使用者帳戶,並需要透過 sudo 存取特定系統二進位檔。

如果您使用 Google Cloud 提供的自動化指令碼,以便部署具有主機自動容錯移轉功能的 SAP HANA,系統會為您設定必要的 sudo 存取權。

如果您是手動安裝 SAP HANA 的儲存空間管理工具,請使用 visudo 指令編輯 /etc/sudoers 檔案,將下列必要二進位檔的 sudo 存取權授予 SID_LCadm 使用者帳戶。

按一下所用作業系統的分頁:

RHEL

/bin/kill
/bin/mount
/bin/umount
/sbin/dmsetup
/sbin/lvdisplay
/sbin/lvscan
/sbin/pvscan
/sbin/vgchange
/sbin/vgscan
/usr/bin/gcloud
/usr/bin/lsof
/usr/bin/mkdir
/usr/bin/sg_persist
/usr/bin/systemctl
/usr/sbin/lsof
/usr/sbin/xfs_repair

SLES

/bin/kill
/bin/mount
/bin/umount
/sbin/dmsetup
/sbin/lvdisplay
/sbin/lvscan
/sbin/pvscan
/sbin/vgchange
/sbin/vgscan
/sbin/xfs_repair
/usr/bin/gcloud
/usr/bin/lsof
/usr/bin/mkdir
/usr/bin/sg_persist
/usr/bin/systemctl
/usr/sbin/lsof

以下範例顯示 /etc/sudoers 檔案中的項目。在這個範例中,相關聯 SAP HANA 系統的系統 ID 已替換為 SID_LC。範例項目是由 Google Cloud 提供的 Terraform 設定所建立,用於具有主機自動容錯移轉功能的 SAP HANA 向外擴充。Terraform 設定建立的項目包含不再需要的二進位檔,但為了回溯相容性而保留。您只需加入上述清單中的二進位檔即可。

SID_LCadm ALL=NOPASSWD: /sbin/multipath,/sbin/multipathd,/etc/init.d/multipathd,/usr/bin/sg_persist,/bin/mount,/bin/umount,/bin/kill,/usr/bin/lsof,/usr/bin/systemctl,/usr/sbin/lsof,/usr/sbin/xfs_repair,/sbin/xfs_repair,/usr/bin/mkdir,/sbin/vgscan,/sbin/pvscan,/sbin/lvscan,/sbin/vgchange,/sbin/lvdisplay,/usr/bin/gcloud,/sbin/dmsetup

為 SAP HANA 的儲存空間管理員設定服務帳戶

如要在 Google Cloud上為 SAP HANA 向外擴充系統啟用主機自動容錯移轉功能,SAP HANA 的儲存空間管理員需要服務帳戶。您可以建立專屬的服務帳戶,並授予該帳戶執行 SAP HANA VM 作業所需的權限,例如在容錯期間卸載及掛接磁碟。如要瞭解如何建立服務帳戶,請參閱「建立服務帳戶」。

必要的 IAM 權限

針對 SAP HANA 儲存空間管理員使用的服務帳戶,您必須授予包含下列 IAM 權限的角色:

  • 如要使用 gcloud compute instances reset 指令重設 VM 執行個體,請授予 compute.instances.reset 權限。

  • 如要使用 gcloud compute disks describe 指令取得永久磁碟或 Hyperdisk 磁碟區的相關資訊,請授予 compute.disks.get 權限。

  • 如要使用 gcloud compute instances attach-disk 指令將磁碟連結至 VM 執行個體,請授予 compute.instances.attachDisk 權限。

  • 如要使用 gcloud compute instances detach-disk 指令從 VM 執行個體卸離磁碟,請授予 compute.instances.detachDisk 權限。

  • 如要使用 gcloud compute instances list 指令列出 VM 執行個體,請授予 compute.instances.list 權限。

  • 如要使用 gcloud compute disks list 指令列出永久磁碟或 Hyperdisk 磁碟區,請授予 compute.disks.list 權限。

您可以透過自訂角色或其他預先定義的角色授予必要權限。

此外,請將 VM 的存取權範圍設為 cloud-platform,以便由您授予服務帳戶的 IAM 角色完全決定 VM 的 IAM 權限。

根據預設,SAP HANA 的儲存空間管理員會使用 gcloud CLI 在向外擴充 SAP HANA 系統的主機上授權使用的有效服務帳戶或使用者帳戶。

如要檢查 SAP HANA 儲存空間管理工具使用的有效帳戶,請使用下列指令:

gcloud auth list

如要進一步瞭解這個指令,請參閱 gcloud auth list

如要變更 SAP HANA 儲存空間管理員使用的帳戶,請執行下列步驟:

  1. 請確認服務帳戶可在向外擴充 SAP HANA 系統的每個主機上使用:

      gcloud auth list
    
  2. global.ini 檔案中,使用服務帳戶更新 [storage] 部分:

    [storage]
    ha_provider = gceStorageClient
    ...
    partition_*_*__gcloudAccount = SERVICE_ACCOUNT
    

    SERVICE_ACCOUNT 替換為服務帳戶的名稱,以電子郵件地址格式輸入,這是 SAP HANA 儲存空間管理工具使用的格式。您可以透過 SAP HANA 儲存空間管理員發出任何 gcloud 指令時,使用這個服務帳戶。

適用於 SAP HANA 主機自動容錯移轉的 NFS 儲存空間

具有主機自動容錯移轉功能的 SAP HANA 向外擴充系統需要如 Filestore 的 NFS 解決方案,以在所有主機之間共用 /hana/shared/hanabackup 磁碟區。您必須自行設定 NFS 解決方案。

使用自動部署方法時,您可以在部署檔案中提供 NFS 伺服器的相關資訊,以便在部署期間掛載 NFS 目錄。

您使用的 NFS 磁碟區必須為空白。任何現有檔案都可能與部署程序發生衝突,尤其是檔案或資料夾參照 SAP 系統 ID (SID) 的情況。部署程序無法判斷檔案是否可覆寫。

部署程序會將 /hana/shared/hanabackup 磁碟區儲存在 NFS 伺服器上,並在所有主機 (包括待命主機) 上掛接 NFS 伺服器。然後由主要主機管理 NFS 伺服器。

如果您要實作備份解決方案 (例如 SAP HANA 適用的 Cloud Storage Backint 代理程式),可以在部署完成後從 NFS 伺服器移除 /hanabackup 磁碟區。

如要進一步瞭解 Google Cloud提供的共用檔案解決方案,請參閱「 Google Cloud上的 SAP 檔案共用解決方案」。

作業系統支援

Google Cloud 僅支援下列作業系統的 SAP HANA 主機自動容錯移轉功能:

  • RHEL for SAP 7.7 以上版本
  • RHEL for SAP 8.1 以上版本
  • RHEL for SAP 9.0 以上版本
    • 在 RHEL for SAP 9.x 上安裝任何 SAP 軟體之前,必須先在主機上安裝其他套件,尤其是 chkconfigcompat-openssl11。如果您使用的是 Compute Engine 提供的映像檔,系統會自動為您安裝這些套件。如需 SAP 的更多資訊,請參閱 SAP 附註 3108316 - Red Hat Enterprise Linux 9.x:安裝和設定
  • SLES for SAP 12 SP5
  • SLES for SAP 15 SP1 以上版本

如要查看 Compute Engine 提供的公開映像檔,請參閱「映像檔」一文。

具有主機自動容錯移轉功能的 SAP HANA 系統架構

下圖顯示 Google Cloud 上的向外擴充架構,其中包含 SAP HANA 主機自動容錯移轉功能。在圖表中,SAP HANA 的儲存空間管理員由其可執行檔 gceStorageClient 的名稱代表。

此圖顯示工作站節點 2 故障,且待命節點接手。SAP HANA 的儲存空間管理員會與 SAP Storage Connector API (未顯示) 搭配運作,將含有 /hana/data/hana/logs 磁碟區的磁碟從失敗的工作站節點中卸除,並在待命節點上重新掛載這些磁碟,待命節點會成為工作站節點 2,而失敗的節點則會成為待命節點。

圖表描述支援主機自動容錯移轉的向外擴充 SAP HANA 系統架構

SAP HANA 高可用性設定的自動部署選項

Google Cloud 提供 Terraform 設定,可用於自動部署 SAP HANA HA 系統,或手動部署及設定 SAP HANA HA 系統。

Google Cloud 會提供您完成的部署專屬 Terraform 設定檔。您可以使用標準的 Terraform 指令初始化目前的工作目錄,並下載 Google Cloud的 Terraform 供應器外掛程式和模組檔案,然後套用設定來部署 SAP HANA 系統。

這個自動部署方法會為您部署 SAP HANA 系統,該系統受到 SAP 完整支援,且遵循 SAP 和Google Cloud的最佳做法。

為 SAP HANA 自動部署 Linux 高可用性叢集

針對 SAP HANA,自動部署方法會部署效能最佳化且可用性高的 Linux 叢集,其中包含:

  • 自動容錯移轉。
  • 自動重新啟動。
  • 您指定的虛擬 IP 位址 (VIP) 保留作業。
  • 內部 TCP/UDP 負載平衡提供的容錯移轉支援,可管理從虛擬 IP 位址 (VIP) 到 HA 叢集節點的路由。
  • 防火牆規則,允許 Compute Engine 健康狀態檢查監控叢集中的 VM 執行個體。
  • Pacemaker 高可用性叢集資源管理員。
  • Google Cloud 防護機制。
  • 為每個 SAP HANA 執行個體提供具必要永久磁碟的 VM。
  • 或者指定單一用戶群節點
  • 已設定為同步複製和記憶體預先載入的 SAP HANA 執行個體。

如要使用 Terraform 自動部署 SAP HANA 高可用性叢集,請參閱:

自動部署具有 SAP HANA 主機自動容錯移轉功能的 SAP HANA 向外擴充系統

您可以使用 Terraform 自動部署含待命主機的向外擴充系統。詳情請參閱 Terraform:具有主機自動容錯移轉功能的 SAP HANA 向外擴充系統部署指南

針對包含 SAP HANA 主機自動容錯移轉功能的 SAP HANA 向外擴充系統, Google Cloud 提供的 Terraform 設定會部署下列項目:

  • 一個主要 SAP HANA 執行個體
  • 1 至 15 個工作站主機
  • 1 至 3 個待命主機
  • 每一 SAP HANA 主機一個 VM
  • 主要主機和工作站主機的 SSD 永久磁碟或 Hyperdisk 磁碟區
  • SAP HANA 待命節點的 Google Cloud 儲存空間管理工具

具有主機自動容錯移轉功能的 SAP HANA 向外擴充系統需要如 Filestore 的 NFS 解決方案,以在所有主機之間共用 /hana/shared/hanabackup 磁碟區。為了讓 Terraform 可以在部署期間掛接 NFS 目錄,您必須在部署 SAP HANA 系統前自行設定 NFS 解決方案。

只要依循「建立執行個體」一文中的操作說明,您就能快速設定 Filestore NFS 伺服器執行個體。

SAP HANA 的主動/主動 (啟用讀取) 選項

自 SAP HANA 2.0 SPS1 起,SAP 為 SAP HANA 系統複製情境提供主動/主動 (啟用讀取) 設定。在針對主動/主動 (啟用讀取) 設定的複製系統中,次要系統上的 SQL 連接埠會開放讀取存取權。這樣一來,您就可以使用次要系統執行需要大量讀取作業的工作,並在運算資源之間更妥善地平衡工作負載,進而提升 SAP HANA 資料庫的整體效能。如要進一步瞭解 Active/Active (Read Enabled) 功能,請參閱您 SAP HANA 版本的 SAP HANA 管理指南SAP 附註 1999880

如要設定可在次要系統上啟用讀取權限的系統複製作業,您必須使用 logreplay_readaccess 作業模式。不過,要使用這個運作模式,主要和次要系統必須執行相同的 SAP HANA 版本。因此,在兩個系統都執行相同的 SAP HANA 版本之前,您無法在滾動升級期間使用次要系統的唯讀權限。

如要連線至主動/主動 (啟用讀取) 次要系統,SAP 支援下列選項:

  • 開啟與次要系統的明確連線,直接連線。
  • 在主要系統上執行帶有提示的 SQL 陳述式,以間接方式連線,在評估時將查詢重新導向至次要系統。

下圖顯示第一個選項,其中應用程式會直接存取在 Google Cloud 中部署的 Pacemaker 叢集中的次要系統。您可以使用額外的浮動虛擬 IP 位址 (VIP),將目標指定為做為次要系統的 VM 執行個體,做為 SAP HANA Pacemaker 叢集的一部分。VIP 會追蹤次要系統,並可在發生非預期故障或進行例行維護時,將讀取工作負載從一個叢集節點移至另一個叢集節點。如要瞭解可用的 VIP 實作方法,請參閱「 Google Cloud上的虛擬 IP 實作」。

適用主動/主動 (啟用讀取) SAP HANA 擴充系統的高可用性 Linux 叢集總覽

如要瞭解如何在 Pacemaker 叢集中設定 SAP HANA 系統複製功能,並啟用主動/主動 (讀取) 模式,請參閱以下說明:

後續步驟

Google Cloud 和 SAP 都提供高可用性的詳細資訊。

Google Cloud 高可用性的更多資訊

如要進一步瞭解 Google Cloud上 SAP HANA 的高可用性,請參閱 SAP HANA 作業指南

如要進一步瞭解如何保護 Google Cloud系統免於發生各種故障情況,請參閱「設計完善可靠的系統」。

關於 SAP HANA 高可用性功能的詳情

關於 SAP HANA 高可用性功能的詳情,請參閱下列 SAP 文件: