SUSE Linux Enterprise Server 上 Azure VM 上的 SAP HANA 高可用性

若要在內部部署 SAP HANA 部署中建立高可用性,您可以使用 SAP HANA 系統復寫或共用記憶體。

目前在 Azure 虛擬機器(VM)上,Azure 上的 SAP HANA 系統復寫是唯一支援的高可用性功能。

SAP HANA 系統復寫包含一個主要節點和至少一個次要節點。 對主要節點上資料的變更,會以同步或非同步方式複寫到次要節點。

本文說明如何部署和設定 VM、安裝叢集架構,以及安裝和設定 SAP HANA 系統複寫。

開始之前,請先閱讀下列 SAP 附注和檔:

規劃 SAP HANA 高可用性

若要達到高可用性,請在兩部 VM 上安裝 SAP HANA。 數據會使用 HANA 系統複寫來複寫。

顯示 SAP HANA 高可用性概觀的圖表。

SAP HANA 系統複寫設定會使用專用的虛擬主機名和虛擬IP位址。 在 Azure 中,您需要負載平衡器來部署虛擬 IP 位址。

上圖顯示 具有下列組態的範例 負載平衡器:

  • 前端IP位址:HN1-db 的10.0.0.0.13
  • 探查埠:62503

準備基礎結構

SAP HANA 的資源代理程式隨附於 SUSE Linux Enterprise Server for SAP Applications 中。 Azure Marketplace 提供適用於 SAP 應用程式 12 或 15 的 SUSE Linux Enterprise Server 映射。 您可以使用映像來部署新的 VM。

透過 Azure 入口網站手動部署 Linux VM

本檔假設您已部署資源群組、Azure 虛擬網絡 和子網。

部署 SAP HANA 的虛擬機。 選擇 HANA 系統支援的合適 SLES 映像。 您可以在任一可用性選項中部署 VM - 虛擬機擴展集、可用性區域或可用性設定組。

重要

請確定您選取的 OS 已針對您打算在部署中使用的特定 VM 類型上針對 SAP HANA 進行 SAP 認證。 您可以在 SAP HANA 認證 IaaS 平臺查閱 SAP HANA 認證的 VM 類型和其 OS 版本。 請確定您查看 VM 類型的詳細數據,以取得特定 VM 類型 SAP HANA 支援的 OS 版本完整清單。

設定 Azure 負載平衡器

在 VM 設定期間,您可以選擇在網路區段中建立或選取結束的負載平衡器。 請遵循下列步驟來設定標準負載平衡器,以設定 HANA 資料庫的高可用性設定。

請遵循建立負載平衡器中的步驟,使用 Azure 入口網站 為高可用性 SAP 系統設定標準負載平衡器。 在設定負載平衡器期間,請考慮下列幾點:

  1. 前端IP組態: 建立前端IP。 選取與資料庫虛擬機相同的虛擬網路和子網名稱。
  2. 後端集區: 建立後端集區並新增資料庫 VM。
  3. 輸入規則: 建立負載平衡規則。 針對這兩個負載平衡規則,請遵循相同的步驟。
    • 前端IP位址:選取前端IP。
    • 後端集區:選取後端集區。
    • 高可用性埠:選取此選項。
    • 通訊協議:選取 [ TCP]。
    • 健康情況探查:使用下列詳細數據建立健康情況探查
      • 通訊協議:選取 [ TCP]。
      • 埠:例如 625<實例 no.>
      • 間隔:輸入 5
      • 探查閾值:輸入 2
    • 閑置逾時(分鐘):輸入 30
    • 啟用浮動IP:選取此選項。

注意

健康情況探查組態屬性 numberOfProbes,否則不會在入口網站中稱為 「情況不良閾值 」。 若要控制成功或失敗連續探查的數目,請將 屬性 probeThreshold 設定為 2。 目前無法使用 Azure 入口網站 來設定此屬性,因此請使用 Azure CLIPowerShell 命令。

如需 SAP Hana 所需連接埠的詳細資訊,請參閱 SAP Hana 租用戶資料庫指南的連線到租用戶資料庫一章,或 SAP 附註 2388694

重要

負載平衡案例中的網路適配器 (NIC) 次要IP組態不支援浮動IP位址。 如需詳細資訊,請參閱 Azure Load Balancer 限制。 如果您需要 VM 的另一個 IP 位址,請部署第二個 NIC。

注意

當沒有公用IP位址的VM放在 Azure Load Balancer 內部(無公用IP位址)標準實例的後端集區時,預設組態就不會有輸出因特網連線能力。 您可以採取額外的步驟,以允許路由傳送至公用端點。 如需如何達成輸出連線的詳細資訊,請參閱 在 SAP 高可用性案例中使用 Azure Standard Load Balancer 的 VM 公用端點連線。

重要

  • 請勿在 Azure Load Balancer 後方放置的 Azure VM 上啟用 TCP 時間戳。 啟用 TCP 時間戳記會導致健全狀態探查失敗。 將參數 net.ipv4.tcp_timestamps 設定為 0。 如需詳細資訊,請參閱 Load Balancer健康情況探查 或 SAP 附註 2382421
  • 若要防止 saptune 將手動設定 net.ipv4.tcp_timestamps 的值 0 從 變更回 1,請將 saptune 版本更新為 3.1.1 或更高版本。 如需詳細資訊,請參閱 saptune 3.1.1 – 我需要更新嗎?

建立 Pacemaker 叢集

請遵循在 Azure 中的 SUSE Linux Enterprise Server 上設定 Pacemaker 中的步驟,為此 HANA 伺服器建立基本的 Pacemaker 叢集。 您可以將相同的 Pacemaker 叢集用於 SAP HANA 和 SAP NetWeaver (A)SCS。

安裝 SAP Hana

本節中的步驟會使用下列首碼:

  • [A]:此步驟適用於所有節點。
  • [1]:此步驟僅適用於節點 1。
  • [2]:此步驟僅適用於 Pacemaker 叢集的節點 2。

將取代 <placeholders> 為您 SAP HANA 安裝的值。

  1. [A] 使用邏輯磁碟區管理員 (LVM) 設定磁碟配置。

    我們建議針對儲存資料與記錄檔的磁碟區使用 LVM。 下列範例假設 VM 有四個鏈接的數據磁碟,可用來建立兩個磁碟區。

    1. 執行此指令以列出所有可用的磁碟:

      /dev/disk/azure/scsi1/lun*
      

      範例輸出:

      /dev/disk/azure/scsi1/lun0  /dev/disk/azure/scsi1/lun1  /dev/disk/azure/scsi1/lun2  /dev/disk/azure/scsi1/lun3
      
    2. 針對您想要使用的所有磁碟建立實體磁碟區:

      sudo pvcreate /dev/disk/azure/scsi1/lun0
      sudo pvcreate /dev/disk/azure/scsi1/lun1
      sudo pvcreate /dev/disk/azure/scsi1/lun2
      sudo pvcreate /dev/disk/azure/scsi1/lun3
      
    3. 建立資料檔案的磁碟區群組。 針對記錄檔使用一個磁碟區群組,併為 SAP HANA 的共享目錄使用一個磁碟區群組:

      sudo vgcreate vg_hana_data_<HANA SID> /dev/disk/azure/scsi1/lun0 /dev/disk/azure/scsi1/lun1
      sudo vgcreate vg_hana_log_<HANA SID> /dev/disk/azure/scsi1/lun2
      sudo vgcreate vg_hana_shared_<HANA SID> /dev/disk/azure/scsi1/lun3
      
    4. 建立邏輯磁碟區。

      當您使用 lvcreate 卻未搭配 -i 參數時,會建立線性磁碟區。 建議建立等量磁碟區,以獲得更好的 I/O 效能。 將等量大小與 SAP HANA VM 記憶體組態中所述的值對齊。 自 -i 變數應該是基礎實體磁碟區的數目,而 -I 自變數是等量大小。

      例如,如果兩個實體磁碟區用於數據磁碟區, -i switch 自變數會設定 為 2,而數據磁碟區的等量大小為 256KiB。 有一個實體磁碟區作為記錄磁碟區,因此,記錄磁碟區命令中不需要明確使用 -i-I 參數。

      重要

      當您針對每個數據磁碟區、記錄磁碟區或共用磁碟區使用多個實體磁碟區時,請使用 -i 參數,並將它設定為基礎實體磁碟區的數目。 當您建立等量磁碟區時,請使用 -I 參數來指定等量大小。

      如需建議的記憶體組態,包括等量大小和磁碟數目,請參閱 SAP HANA VM 記憶體組態

      sudo lvcreate <-i number of physical volumes> <-I stripe size for the data volume> -l 100%FREE -n hana_data vg_hana_data_<HANA SID>
      sudo lvcreate -l 100%FREE -n hana_log vg_hana_log_<HANA SID>
      sudo lvcreate -l 100%FREE -n hana_shared vg_hana_shared_<HANA SID>
      sudo mkfs.xfs /dev/vg_hana_data_<HANA SID>/hana_data
      sudo mkfs.xfs /dev/vg_hana_log_<HANA SID>/hana_log
      sudo mkfs.xfs /dev/vg_hana_shared_<HANA SID>/hana_shared
      
    5. 建立掛接目錄,並複製所有邏輯磁碟區的通用唯一標識碼 (UUID):

      sudo mkdir -p /hana/data/<HANA SID>
      sudo mkdir -p /hana/log/<HANA SID>
      sudo mkdir -p /hana/shared/<HANA SID>
      # Write down the ID of /dev/vg_hana_data_<HANA SID>/hana_data, /dev/vg_hana_log_<HANA SID>/hana_log, and /dev/vg_hana_shared_<HANA SID>/hana_shared
      sudo blkid
      
    6. 編輯 /etc/fstab 檔案,以建立fstab三個邏輯磁碟區的專案:

      sudo vi /etc/fstab
      
    7. /etc/fstab 檔案中插入下列幾行:

      /dev/disk/by-uuid/<UUID of /dev/mapper/vg_hana_data_<HANA SID>-hana_data> /hana/data/<HANA SID> xfs  defaults,nofail  0  2
      /dev/disk/by-uuid/<UUID of /dev/mapper/vg_hana_log_<HANA SID>-hana_log> /hana/log/<HANA SID> xfs  defaults,nofail  0  2
      /dev/disk/by-uuid/<UUID of /dev/mapper/vg_hana_shared_<HANA SID>-hana_shared> /hana/shared/<HANA SID> xfs  defaults,nofail  0  2
      
    8. 裝載新的磁碟區:

      sudo mount -a
      
  2. [A] 使用純文字磁碟設定磁碟配置。

    針對示範系統,您可以在一個磁碟上放置 HANA 資料與記錄檔。

    1. 在 /dev/disk/azure/scsi1/lun0建立分割區,並使用 XFS 格式化它:

      sudo sh -c 'echo -e "n\n\n\n\n\nw\n" | fdisk /dev/disk/azure/scsi1/lun0'
      sudo mkfs.xfs /dev/disk/azure/scsi1/lun0-part1
      
      # Write down the ID of /dev/disk/azure/scsi1/lun0-part1
      sudo /sbin/blkid
      sudo vi /etc/fstab
      
    2. 將下列程式碼行插入 /etc/fstab 檔案:

      /dev/disk/by-uuid/<UUID> /hana xfs  defaults,nofail  0  2
      
    3. 建立目標目錄並裝載磁碟:

      sudo mkdir /hana
      sudo mount -a
      
  3. [A] 設定所有主機的主機名稱解析。

    您可以使用 DNS 伺服器,或修改所有節點上的 /etc/hosts 檔案。 此範例示範如何使用 /etc/hosts 檔案。 取代下列命令中的IP位址和主機名。

    1. 編輯 /etc/hosts 檔案:

      sudo vi /etc/hosts
      
    2. 在 /etc/hosts 檔案中插入下列幾行。 變更IP位址和主機名以符合您的環境。

      10.0.0.5 hn1-db-0
      10.0.0.6 hn1-db-1
      
  4. [A] 安裝 SAP HANA 高可用性套件:

    • 執行下列命令以安裝高可用性套件:

      sudo zypper install SAPHanaSR
      

    若要安裝 SAP HANA 系統複寫,請檢閱 SAP HANA SR 效能優化案例指南中的第 4 章。

  5. [A] 從 HANA 安裝媒體執行 hdblcm 程式。

    出現提示時,請輸入下列值:

    1. 選擇安裝:輸入 1
    2. 選取要安裝的其他元件:輸入 1
    3. 輸入安裝路徑:輸入 /hana/shared,然後選取 Enter
    4. 輸入本機主機名:輸入 ..,然後選取 Enter
    5. 您是否想要將其他主機新增至系統? (y/n):輸入 n,然後選取 Enter
    6. 輸入 SAP HANA 系統識別碼:輸入您的 HANA SID。
    7. 輸入實例號碼:輸入 HANA 實例編號。 如果您使用 Azure 範本進行部署,或遵循本文的手動部署一節,請輸入 03
    8. 選取資料庫模式/輸入索引:輸入或選取 1,然後選取 Enter。
    9. 選取系統使用量/輸入索引:選取系統使用量值 4
    10. 輸入數據磁碟區的位置:輸入 /hana/data/<HANA SID> ,然後選取 Enter。
    11. 輸入記錄磁碟區的位置:輸入 /hana/log/<HANA SID> ,然後選取 Enter。
    12. 限制記憶體配置上限?:輸入 n,然後選取 Enter
    13. 輸入主機的憑證主機名:輸入 ... ,然後選取 Enter。
    14. 輸入 SAP 主機代理程式使用者 (sapadm) 密碼:輸入主機代理程式使用者密碼,然後選取 Enter。
    15. 確認 SAP 主機代理程式使用者 (sapadm) 密碼:再次輸入主機代理程式使用者密碼,然後選取 Enter。
    16. 輸入系統管理員 (hdbadm) 密碼:輸入系統管理員密碼,然後選取 Enter。
    17. 確認系統管理員 (hdbadm) 密碼:再次輸入系統管理員密碼,然後選取 Enter。
    18. 輸入系統管理員主目錄:輸入 /usr/sap/<HANA SID>/home ,然後選取 Enter。
    19. 輸入系統管理員登入殼層:輸入 /bin/sh ,然後選取 Enter。
    20. 輸入系統管理員使用者標識碼:輸入 1001 ,然後選取 Enter。
    21. 輸入使用者群組的標識碼 (sapsys):輸入 79,然後選取 Enter
    22. 輸入資料庫使用者 (SYSTEM) 密碼:輸入資料庫用戶密碼,然後選取 Enter。
    23. 確認資料庫使用者 (SYSTEM) 密碼:再次輸入資料庫用戶密碼,然後選取 Enter。
    24. 機器重新啟動後重新啟動系統? (y/n):輸入 n,然後選取 Enter
    25. 您要繼續嗎? (y/n):驗證摘要。 輸入 y 繼續。
  6. [A] 升級 SAP 主機代理程式。

    SAP 軟體中心下載最新的 SAP 主機代理程式封存。 執行下列命令來升級代理程式。 取代封存的路徑,以指向您下載的檔案。

    sudo /usr/sap/hostctrl/exe/saphostexec -upgrade -archive <path to SAP host agent SAR>
    

設定 SAP Hana 2.0 系統複寫

本節中的步驟會使用下列首碼:

  • [A]:此步驟適用於所有節點。
  • [1]:此步驟僅適用於節點 1。
  • [2]:此步驟僅適用於 Pacemaker 叢集的節點 2。

將取代 <placeholders> 為您 SAP HANA 安裝的值。

  1. [1] 建立租用戶資料庫。

    如果您使用 SAP HANA 2.0 或 SAP HANA MDC,請為您的 SAP NetWeaver 系統建立租用戶資料庫。

    以 HANA SID>adm 身分<執行下列命令:

    hdbsql -u SYSTEM -p "<password>" -i <instance number> -d SYSTEMDB 'CREATE DATABASE <SAP SID> SYSTEM USER PASSWORD "<password>"'
    
  2. [1] 在第一個節點上設定系統複寫:

    首先,將資料庫備份為 <HANA SID>adm:

    hdbsql -d SYSTEMDB -u SYSTEM -p "<password>" -i <instance number> "BACKUP DATA USING FILE ('<name of initial backup file for SYS>')"
    hdbsql -d <HANA SID> -u SYSTEM -p "<password>" -i <instance number> "BACKUP DATA USING FILE ('<name of initial backup file for HANA SID>')"
    hdbsql -d <SAP SID> -u SYSTEM -p "<password>" -i <instance number> "BACKUP DATA USING FILE ('<name of initial backup file for SAP SID>')"
    

    然後,將系統公鑰基礎結構 (PKI) 檔案複製到次要月臺:

    scp /usr/sap/<HANA SID>/SYS/global/security/rsecssfs/data/SSFS_<HANA SID>.DAT   hn1-db-1:/usr/sap/<HANA SID>/SYS/global/security/rsecssfs/data/
    scp /usr/sap/<HANA SID>/SYS/global/security/rsecssfs/key/SSFS_<HANA SID>.KEY  hn1-db-1:/usr/sap/<HANA SID>/SYS/global/security/rsecssfs/key/
    

    建立主要站台:

    hdbnsutil -sr_enable --name=<site 1>
    
  3. [2] 在第二個節點上設定系統複寫:

    註冊第二個節點以開始系統複寫。

    以 HANA SID>adm 身分<執行下列命令:

    sapcontrol -nr <instance number> -function StopWait 600 10
    hdbnsutil -sr_register --remoteHost=hn1-db-0 --remoteInstance=<instance number> --replicationMode=sync --name=<site 2> 
    

設定 SAP HANA 1.0 系統複寫

本節中的步驟會使用下列首碼:

  • [A]:此步驟適用於所有節點。
  • [1]:此步驟僅適用於節點 1。
  • [2]:此步驟僅適用於 Pacemaker 叢集的節點 2。

將取代 <placeholders> 為您 SAP HANA 安裝的值。

  1. [1] 建立必要的使用者。

    以根使用者身分執行下列命令:

    PATH="$PATH:/usr/sap/<HANA SID>/HDB<instance number>/exe"
    hdbsql -u system -i <instance number> 'CREATE USER hdbhasync PASSWORD "<password>"'
    hdbsql -u system -i <instance number> 'GRANT DATA ADMIN TO hdbhasync'
    hdbsql -u system -i <instance number> 'ALTER USER hdbhasync DISABLE PASSWORD LIFETIME'
    
  2. [A] 建立金鑰儲存區項目。

    以根使用者身分執行下列命令來建立新的金鑰儲存區項目:

    PATH="$PATH:/usr/sap/<HANA SID>/HDB<instance number>/exe"
    hdbuserstore SET hdbhaloc localhost:3<instance number>15 hdbhasync <password>
    
  3. [1] 備份資料庫。

    以根使用者身分備份資料庫:

    PATH="$PATH:/usr/sap/<HANA SID>/HDB<instance number>/exe"
    hdbsql -d SYSTEMDB -u system -i <instance number> "BACKUP DATA USING FILE ('<name of initial backup file>')"
    

    若您使用多租用戶安裝,請一併備份租用戶資料庫:

    hdbsql -d <HANA SID> -u system -i <instance number> "BACKUP DATA USING FILE ('<name of initial backup file>')"
    
  4. [1] 在第一個節點上設定系統複寫。

    將主要月臺建立為 <HANA SID>adm:

    su - hdbadm
    hdbnsutil -sr_enable --name=<site 1>
    
  5. [2] 在次要節點上設定系統複寫。

    將次要月臺註冊為 <HANA SID>adm:

    sapcontrol -nr <instance number> -function StopWait 600 10
    hdbnsutil -sr_register --remoteHost=<HANA SID>-db-<database 1> --remoteInstance=<instance number> --replicationMode=sync --name=<site 2> 
    

實作 HANA 勾點 SAPHanaSR 和 susChkSrv

在此步驟中,您會優化與叢集的整合,並改善需要叢集故障轉移時的偵測。 強烈建議您設定 SAPHanaSR Python 勾點。 針對 HANA 2.0 SP5 和更新版本,建議您實作 SAPHanaSR 攔截和 susChkSrv 攔截。

susChkSrv 攔截可擴充主要 SAPHanaSR HA 提供者的功能。 當 HANA 進程 hdbindexserver 當機時,它會運作。 如果單一進程當機,HANA 通常會嘗試重新啟動它。 重新啟動索引伺服器流程可能需要較長時間,在此期間,HANA 資料庫無法回應。

實作 susChkSrv 時,會執行立即和可設定的動作。 動作會在設定的逾時期間觸發故障轉移,而不是等候 hdbindexserver 進程在同一個節點上重新啟動。

  1. [A] 安裝 HANA 系統複寫勾點。 掛勾必須安裝在兩個 HANA 資料庫節點上。

    提示

    SAPHanaSR Python 攔截只能針對 HANA 2.0 實作。 SAPHanaSR 套件至少必須是 0.153 版。

    susChkSrv Python 攔截需要安裝 SAP HANA 2.0 SP5 和 SAPHanaSR 版本0.161.1_BF或更新版本。

    1. 停止兩個節點上的 HANA。

      以 sapsid>adm 身分<執行下列程式代碼:

      sapcontrol -nr <instance number> -function StopSystem
      
    2. 在每個叢集節點上調整 global.ini 。 如果不符合 susChkSrv 攔截的需求,請從下列參數中移除整個 [ha_dr_provider_suschksrv] 區塊。

      您可以使用 參數來調整 的行為susChkSrvaction_on_lost。 有效值為 [ ignorestop | kill | fence | ]。

      # add to global.ini
      [ha_dr_provider_SAPHanaSR]
      provider = SAPHanaSR
      path = /usr/share/SAPHanaSR
      execution_order = 1
      
      [ha_dr_provider_suschksrv]
      provider = susChkSrv
      path = /usr/share/SAPHanaSR
      execution_order = 3
      action_on_lost = fence
      
      [trace]
      ha_dr_saphanasr = info
      

      如果您指向標準 /usr/share/SAPHanaSR 位置,Python 攔截程式代碼會自動透過OS更新或套件更新來更新。 HANA 會在下次重新啟動時使用攔截程式代碼更新。 使用類似 /hana/shared/myHooks選擇性路徑,您可以將作業系統更新與您使用的攔截版本分離。

  2. [A] 叢集需要在 SAP SID>adm 的每個叢集節點上<設定 sudoers。 在此範例中,建立新檔案可達成此目的。

    以根使用者身分執行下列命令:

     cat << EOF > /etc/sudoers.d/20-saphana
     # Needed for SAPHanaSR and susChkSrv Python hooks
     hn1adm ALL=(ALL) NOPASSWD: /usr/sbin/crm_attribute -n hana_hn1_site_srHook_*
     hn1adm ALL=(ALL) NOPASSWD: /usr/sbin/SAPHanaSR-hookHelper --sid=HN1 --case=fenceMe
     EOF
    

    如需實作 SAP HANA 系統複寫勾點的詳細資訊,請參閱 設定 HANA HA/DR 提供者

  3. [A] 在兩個節點上啟動 SAP Hana。

    以 SAP SID>adm 身分<執行下列命令:

     sapcontrol -nr <instance number> -function StartSystem 
    
  4. [1] 驗證勾點安裝。

    在作用中的 HANA 系統復寫網站上,以 SAP SID>adm 身分<執行下列命令:

     cdtrace
     awk '/ha_dr_SAPHanaSR.*crm_attribute/ \
     { printf "%s %s %s %s\n",$2,$3,$5,$16 }' nameserver_*
     # Example output
     # 2021-04-08 22:18:15.877583 ha_dr_SAPHanaSR SFAIL
     # 2021-04-08 22:18:46.531564 ha_dr_SAPHanaSR SFAIL
     # 2021-04-08 22:21:26.816573 ha_dr_SAPHanaSR SOK
    

    驗證 susChkSrv 勾點安裝。

    在所有 HANA VM 上以 SAP SID>adm 身分<執行下列命令:

     cdtrace
     egrep '(LOST:|STOP:|START:|DOWN:|init|load|fail)' nameserver_suschksrv.trc
     # Example output
     # 2022-11-03 18:06:21.116728  susChkSrv.init() version 0.7.7, parameter info: action_on_lost=fence stop_timeout=20 kill_signal=9
     # 2022-11-03 18:06:27.613588  START: indexserver event looks like graceful tenant start
     # 2022-11-03 18:07:56.143766  START: indexserver event looks like graceful tenant start (indexserver started)
    

建立 SAP HANA 叢集資源

首先,建立 HANA 拓撲。

在其中一個 Pacemaker 叢集節點上執行下列命令:

sudo crm configure property maintenance-mode=true

# Replace <placeholders> with your instance number and HANA system ID

sudo crm configure primitive rsc_SAPHanaTopology_<HANA SID>_HDB<instance number> ocf:suse:SAPHanaTopology \
  operations \$id="rsc_sap2_<HANA SID>_HDB<instance number>-operations" \
  op monitor interval="10" timeout="600" \
  op start interval="0" timeout="600" \
  op stop interval="0" timeout="300" \
  params SID="<HANA SID>" InstanceNumber="<instance number>"

sudo crm configure clone cln_SAPHanaTopology_<HANA SID>_HDB<instance number> rsc_SAPHanaTopology_<HANA SID>_HDB<instance number> \
  meta clone-node-max="1" target-role="Started" interleave="true"

接下來,建立 HANA 資源:

重要

在最近的測試中, netcat 會因為待辦專案而停止回應要求,以及因為其只處理一個連線的限制。 資源 netcat 會停止接聽 Azure Load Balancer 要求,而浮動 IP 會變成無法使用。

針對現有的 Pacemaker 叢集,我們先前建議您將 取代 netcatsocat。 目前,我們建議您使用 azure-lb 資源代理程式,這是 封裝的 resource-agents一部分。 需要下列套件版本:

  • 針對 SLES 12 SP4/SP5,版本必須至少為 resource-agents-4.3.018.a7fb5035-3.30.1。
  • 針對 SLES 15/15 SP1,版本必須至少為 resource-agents-4.3.0184.6ee15eb2-4.13.1。

進行這項變更需要短暫的停機時間。

針對現有的 Pacemaker 叢集,如果您的設定已變更為使用socat,如 Azure Load Balancer 偵測強化中所述,就不需要立即切換至azure-lb資源代理程式。

注意

本文包含 Microsoft 不再使用的詞彙參考。 當這些字詞在軟體中移除時,也會在本文中移除。

# Replace <placeholders> with your instance number, HANA system ID, and the front-end IP address of the Azure load balancer. 

sudo crm configure primitive rsc_SAPHana_<HANA SID>_HDB<instance number> ocf:suse:SAPHana \
  operations \$id="rsc_sap_<HANA SID>_HDB<instance number>-operations" \
  op start interval="0" timeout="3600" \
  op stop interval="0" timeout="3600" \
  op promote interval="0" timeout="3600" \
  op monitor interval="60" role="Master" timeout="700" \
  op monitor interval="61" role="Slave" timeout="700" \
  params SID="<HANA SID>" InstanceNumber="<instance number>" PREFER_SITE_TAKEOVER="true" \
  DUPLICATE_PRIMARY_TIMEOUT="7200" AUTOMATED_REGISTER="false"

sudo crm configure ms msl_SAPHana_<HANA SID>_HDB<instance number> rsc_SAPHana_<HANA SID>_HDB<instance number> \
  meta notify="true" clone-max="2" clone-node-max="1" \
  target-role="Started" interleave="true"

sudo crm resource meta msl_SAPHana_<HANA SID>_HDB<instance number> set priority 100

sudo crm configure primitive rsc_ip_<HANA SID>_HDB<instance number> ocf:heartbeat:IPaddr2 \
  meta target-role="Started" \
  operations \$id="rsc_ip_<HANA SID>_HDB<instance number>-operations" \
  op monitor interval="10s" timeout="20s" \
  params ip="<front-end IP address>"

sudo crm configure primitive rsc_nc_<HANA SID>_HDB<instance number> azure-lb port=625<instance number> \
  op monitor timeout=20s interval=10 \
  meta resource-stickiness=0

sudo crm configure group g_ip_<HANA SID>_HDB<instance number> rsc_ip_<HANA SID>_HDB<instance number> rsc_nc_<HANA SID>_HDB<instance number>

sudo crm configure colocation col_saphana_ip_<HANA SID>_HDB<instance number> 4000: g_ip_<HANA SID>_HDB<instance number>:Started \
  msl_SAPHana_<HANA SID>_HDB<instance number>:Master  

sudo crm configure order ord_SAPHana_<HANA SID>_HDB<instance number> Optional: cln_SAPHanaTopology_<HANA SID>_HDB<instance number> \
  msl_SAPHana_<HANA SID>_HDB<instance number>

# Clean up the HANA resources. The HANA resources might have failed because of a known issue.
sudo crm resource cleanup rsc_SAPHana_<HANA SID>_HDB<instance number>

sudo crm configure property priority-fencing-delay=30

sudo crm configure property maintenance-mode=false
sudo crm configure rsc_defaults resource-stickiness=1000
sudo crm configure rsc_defaults migration-threshold=5000

重要

建議您只在完成徹底的故障轉移測試時,將 設定 AUTOMATED_REGISTERfalse ,以防止失敗的主要實例自動註冊為次要實例。 順利完成故障轉移測試時,請將 設定 AUTOMATED_REGISTERtrue,以便在接管之後,系統複寫會自動繼續。

請確定叢集狀態為 OK ,且所有資源都已啟動。 資源執行所在的節點並不重要。

sudo crm_mon -r

# Online: [ hn1-db-0 hn1-db-1 ]
#
# Full list of resources:
#
# stonith-sbd     (stonith:external/sbd): Started hn1-db-0
# Clone Set: cln_SAPHanaTopology_HN1_HDB03 [rsc_SAPHanaTopology_HN1_HDB03]
#     Started: [ hn1-db-0 hn1-db-1 ]
# Master/Slave Set: msl_SAPHana_HN1_HDB03 [rsc_SAPHana_HN1_HDB03]
#     Masters: [ hn1-db-0 ]
#     Slaves: [ hn1-db-1 ]
# Resource Group: g_ip_HN1_HDB03
#     rsc_ip_HN1_HDB03   (ocf::heartbeat:IPaddr2):       Started hn1-db-0
#     rsc_nc_HN1_HDB03   (ocf::heartbeat:azure-lb):      Started hn1-db-0

在 Pacemaker 叢集中設定 HANA 主動/讀取啟用的系統複寫

在 SAP HANA 2.0 SPS 01 和更新版本中,SAP 允許 SAP HANA 系統復寫的作用中/讀取設定。 在此案例中,SAP HANA 系統復寫的次要系統可以主動用於大量讀取工作負載。

若要在叢集中支援此設定,則需要第二個虛擬IP位址,讓用戶端可以存取已啟用次要讀取的SAP HANA資料庫。 為了確保在接管之後仍可存取次要復寫網站,叢集必須移動虛擬IP位址與SAPHana資源的次要複本。

本節說明管理 SUSE 高可用性叢集中使用第二個虛擬 IP 位址之 HANA 主動/讀取啟用系統復寫所需的額外步驟。

繼續之前,請確定您已完整設定 SUSE 高可用性叢集,以管理 SAP HANA 資料庫,如先前各節所述。

此圖顯示具有讀取功能的次要IP的SAP HANA高可用性範例。

設定已啟用主動/讀取的系統復寫負載平衡器

若要繼續進行額外的步驟來布建第二個虛擬IP,請確定您已設定 Azure Load Balancer,如透過 Azure 入口網站 手動部署Linux VM 中所述

針對標準負載平衡器,請在您稍早建立的相同負載平衡器上完成這些額外步驟。

  1. 建立第二個前端 IP 集區:
    1. 開啟負載平衡器,選取 [前端 IP 集區],然後選取 [新增]
    2. 輸入第二個前端 IP 集區的名稱 (例如 hana-secondaryIP)。
    3. 將 [指派] 設為 [靜態],然後輸入 IP 位址 (例如 10.0.0.14)。
    4. 選取 [確定]。
    5. 建立新的前端IP集區之後,請注意前端IP位址。
  2. 建立健康情況探查:
    1. 在負載平衡器中,選取 健康情況探查,然後選取 [ 新增]。
    2. 輸入新的健全狀態探查名稱 (例如 hana-secondaryhp)。
    3. 選取 [TCP] 作為通訊 協定和埠 626<實例編號>將 [間隔] 值設定為 5,並將 [狀況不良] 閾值設定為 2
    4. 選取 [確定]。
  3. 建立負載平衡規則:
    1. 在負載平衡器中,選取 負載平衡規則,然後選取 [ 新增]。
    2. 輸入新的負載平衡器規則名稱 (例如 hana-secondarylb)。
    3. 選取您稍早建立的前端 IP 位址、後端集區及健全狀態探查 (例如,hana-secondaryIPhana-backendhana-secondaryhp)。
    4. 選取 [HA 連接埠]
    5. 將閒置逾時增加為 30 分鐘。
    6. 請確定您 啟用浮動IP
    7. 選取 [確定]。

設定 HANA 主動/已啟用讀取的系統複寫

設定 SAP HANA 2.0 系統複寫中所述 設定 HANA 系統複寫的步驟。 如果您要部署已啟用讀取的次要案例,當您在第二個節點上設定系統複寫時,請以 HANA SID>adm 身分<執行下列命令:

sapcontrol -nr <instance number> -function StopWait 600 10 

hdbnsutil -sr_register --remoteHost=hn1-db-0 --remoteInstance=<instance number> --replicationMode=sync --name=<site 2> --operationMode=logreplay_readaccess 

新增次要虛擬IP位址資源

您可以使用下列命令來設定第二個虛擬 IP 和適當的共置條件約束:

crm configure property maintenance-mode=true

crm configure primitive rsc_secip_<HANA SID>_HDB<instance number> ocf:heartbeat:IPaddr2 \
 meta target-role="Started" \
 operations \$id="rsc_secip_<HANA SID>_HDB<instance number>-operations" \
 op monitor interval="10s" timeout="20s" \
 params ip="<secondary IP address>"

crm configure primitive rsc_secnc_<HANA SID>_HDB<instance number> azure-lb port=626<instance number> \
 op monitor timeout=20s interval=10 \
 meta resource-stickiness=0

crm configure group g_secip_<HANA SID>_HDB<instance number> rsc_secip_<HANA SID>_HDB<instance number> rsc_secnc_<HANA SID>_HDB<instance number>

crm configure colocation col_saphana_secip_<HANA SID>_HDB<instance number> 4000: g_secip_<HANA SID>_HDB<instance number>:Started \
 msl_SAPHana_<HANA SID>_HDB<instance number>:Slave 

crm configure property maintenance-mode=false

請確定叢集狀態為 OK ,且所有資源都已啟動。 第二個虛擬IP會在次要網站上與SAPHana次要資源一起執行。

sudo crm_mon -r

# Online: [ hn1-db-0 hn1-db-1 ]
#
# Full list of resources:
#
# stonith-sbd     (stonith:external/sbd): Started hn1-db-0
# Clone Set: cln_SAPHanaTopology_HN1_HDB03 [rsc_SAPHanaTopology_HN1_HDB03]
#     Started: [ hn1-db-0 hn1-db-1 ]
# Master/Slave Set: msl_SAPHana_HN1_HDB03 [rsc_SAPHana_HN1_HDB03]
#     Masters: [ hn1-db-0 ]
#     Slaves: [ hn1-db-1 ]
# Resource Group: g_ip_HN1_HDB03
#     rsc_ip_HN1_HDB03   (ocf::heartbeat:IPaddr2):       Started hn1-db-0
#     rsc_nc_HN1_HDB03   (ocf::heartbeat:azure-lb):      Started hn1-db-0
# Resource Group: g_secip_HN1_HDB03:
#     rsc_secip_HN1_HDB03       (ocf::heartbeat:IPaddr2):        Started hn1-db-1
#     rsc_secnc_HN1_HDB03       (ocf::heartbeat:azure-lb):       Started hn1-db-1

下一節說明要執行的一組一般故障轉移測試。

當您測試使用已啟用讀取的次要複本設定的 HANA 叢集時的考慮:

  • 當您將 SAPHana_<HANA SID>_HDB<instance number> 叢集資源移至 hn1-db-1時,第二個虛擬IP會移至 hn1-db-0。 如果您已設定 AUTOMATED_REGISTER="false" 且 HANA 系統復寫未自動註冊,則第二個虛擬 IP 會執行, hn1-db-0 因為伺服器可用且叢集服務已上線。

  • 當您測試伺服器當機時,第二個虛擬IP資源(rsc_secip_<HANA SID>_HDB<instance number>) 和 Azure 負載平衡器埠資源 (rsc_secnc_<HANA SID>_HDB<instance number>) 會與主要虛擬 IP 資源一起在主伺服器上執行。 當輔助伺服器關閉時,連線到已啟用讀取的 HANA 資料庫的應用程式會連線到主要 HANA 資料庫。 這是預期的行為,因為您不希望連線到已啟用讀取功能的 HANA 資料庫的應用程式在輔助伺服器無法使用時無法存取。

  • 當輔助伺服器可供使用且叢集服務處於在線狀態時,即使 HANA 系統複寫可能未註冊為次要伺服器,第二個虛擬 IP 和埠資源仍會自動移至輔助伺服器。 在啟動該伺服器上的叢集服務之前,請務必先將輔助 HANA 資料庫註冊為可讀取的。 您可以藉由設定 參數 AUTOMATED_REGISTER="true",將 HANA 實例叢集資源設定為自動註冊次要資料庫。

  • 在故障轉移和後援期間,使用第二個虛擬IP連線到HANA資料庫的現有連線可能會中斷。

測試叢集設定

本節將說明如何測試您的設定。 每個測試都會假設您已以 root 身分登入,且 SAP HANA 主機正在 VM 上 hn1-db-0 執行。

測試移轉

在開始測試之前,請確定 Pacemaker 沒有任何失敗的動作(執行 crm_mon -r)、沒有未預期的位置條件約束(例如移轉測試的剩餘專案),以及 HANA 處於同步狀態,例如執行 SAPHanaSR-showAttr

hn1-db-0:~ # SAPHanaSR-showAttr
Sites    srHook
----------------
SITE2    SOK
Global cib-time
--------------------------------
global Mon Aug 13 11:26:04 2018
Hosts    clone_state lpa_hn1_lpt node_state op_mode   remoteHost    roles                            score site  srmode sync_state version                vhost
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------
hn1-db-0 PROMOTED    1534159564  online     logreplay nws-hana-vm-1 4:P:master1:master:worker:master 150   SITE1 sync   PRIM       2.00.030.00.1522209842 nws-hana-vm-0
hn1-db-1 DEMOTED     30          online     logreplay nws-hana-vm-0 4:S:master1:master:worker:master 100   SITE2 sync   SOK        2.00.030.00.1522209842 nws-hana-vm-1

您可以執行下列命令來移轉 SAP HANA 主要節點:

crm resource move msl_SAPHana_<HANA SID>_HDB<instance number> hn1-db-1 force

叢集會將 SAP HANA 主要節點和包含虛擬 IP 位址的群組移轉至 hn1-db-1

移轉完成時, crm_mon -r 輸出看起來會像下列範例:

Online: [ hn1-db-0 hn1-db-1 ]

Full list of resources:
stonith-sbd     (stonith:external/sbd): Started hn1-db-1
 Clone Set: cln_SAPHanaTopology_HN1_HDB03 [rsc_SAPHanaTopology_HN1_HDB03]
     Started: [ hn1-db-0 hn1-db-1 ]
 Master/Slave Set: msl_SAPHana_HN1_HDB03 [rsc_SAPHana_HN1_HDB03]
     Masters: [ hn1-db-1 ]
     Stopped: [ hn1-db-0 ]
 Resource Group: g_ip_HN1_HDB03
     rsc_ip_HN1_HDB03   (ocf::heartbeat:IPaddr2):       Started hn1-db-1
     rsc_nc_HN1_HDB03   (ocf::heartbeat:azure-lb):      Started hn1-db-1
Failed Actions:
* rsc_SAPHana_HN1_HDB03_start_0 on hn1-db-0 'not running' (7): call=84, status=complete, exitreason='none',
    last-rc-change='Mon Aug 13 11:31:37 2018', queued=0ms, exec=2095ms

使用 AUTOMATED_REGISTER="false"時,叢集不會重新啟動失敗的 HANA 資料庫,也不會對 上的 hn1-db-0新主資料庫進行註冊。 在此情況下,請執行下列命令,將 HANA 實例設定為次要實例:

su - <hana sid>adm

# Stop the HANA instance, just in case it is running
hn1adm@hn1-db-0:/usr/sap/HN1/HDB03> sapcontrol -nr <instance number> -function StopWait 600 10
hn1adm@hn1-db-0:/usr/sap/HN1/HDB03> hdbnsutil -sr_register --remoteHost=hn1-db-1 --remoteInstance=<instance number> --replicationMode=sync --name=<site 1>

移轉會建立必須再次刪除的位置限制式:

# Switch back to root and clean up the failed state
exit
hn1-db-0:~ # crm resource clear msl_SAPHana_<HANA SID>_HDB<instance number>

您也必須清除次要節點資源的狀態:

hn1-db-0:~ # crm resource cleanup msl_SAPHana_<HANA SID>_HDB<instance number> hn1-db-0

使用 crm_mon -r監視 HANA 資源的狀態。 當 HANA 啟動時 hn1-db-0,輸出看起來會像下列範例:

Online: [ hn1-db-0 hn1-db-1 ]

Full list of resources:
stonith-sbd     (stonith:external/sbd): Started hn1-db-1
 Clone Set: cln_SAPHanaTopology_HN1_HDB03 [rsc_SAPHanaTopology_HN1_HDB03]
     Started: [ hn1-db-0 hn1-db-1 ]
 Master/Slave Set: msl_SAPHana_HN1_HDB03 [rsc_SAPHana_HN1_HDB03]
     Masters: [ hn1-db-1 ]
     Slaves: [ hn1-db-0 ]
 Resource Group: g_ip_HN1_HDB03
     rsc_ip_HN1_HDB03   (ocf::heartbeat:IPaddr2):       Started hn1-db-1
     rsc_nc_HN1_HDB03   (ocf::heartbeat:azure-lb):      Started hn1-db-1

封鎖網路通訊

開始測試之前的資源狀態:

Online: [ hn1-db-0 hn1-db-1 ]

Full list of resources:
stonith-sbd     (stonith:external/sbd): Started hn1-db-1
 Clone Set: cln_SAPHanaTopology_HN1_HDB03 [rsc_SAPHanaTopology_HN1_HDB03]
     Started: [ hn1-db-0 hn1-db-1 ]
 Master/Slave Set: msl_SAPHana_HN1_HDB03 [rsc_SAPHana_HN1_HDB03]
     Masters: [ hn1-db-1 ]
     Slaves: [ hn1-db-0 ]
 Resource Group: g_ip_HN1_HDB03
     rsc_ip_HN1_HDB03   (ocf::heartbeat:IPaddr2):       Started hn1-db-1
     rsc_nc_HN1_HDB03   (ocf::heartbeat:azure-lb):      Started hn1-db-1

執行防火牆規則來封鎖其中一個節點上的通訊。

# Execute iptable rule on hn1-db-1 (10.0.0.6) to block the incoming and outgoing traffic to hn1-db-0 (10.0.0.5)
iptables -A INPUT -s 10.0.0.5 -j DROP; iptables -A OUTPUT -d 10.0.0.5 -j DROP

當叢集節點無法彼此通訊時,有分割腦案例的風險。 在這種情況下,叢集節點會嘗試同時互相隔離,導致圍欄競爭。

設定隔離裝置時,建議您設定 pcmk_delay_max 屬性。 因此,在分割大腦案例的情況下,叢集會將隨機延遲引入到 pcmk_delay_max 每個節點上的隔離動作。 系統會選取具有最短延遲的節點進行隔離。

此外,若要確保執行 HANA 主要節點的節點優先,並在分割大腦案例中贏得圍欄競爭,建議您在叢集組態中設定 priority-fencing-delay 屬性。 藉由啟用 priority-fencing-delay 屬性,叢集可以在裝載 HANA 主要資源的節點上特別導入隔離動作的額外延遲,讓節點贏得圍欄競爭。

執行下列命令以刪除防火牆規則。

# If the iptables rule set on the server gets reset after a reboot, the rules will be cleared out. In case they have not been reset, please proceed to remove the iptables rule using the following command.
iptables -D INPUT -s 10.0.0.5 -j DROP; iptables -D OUTPUT -d 10.0.0.5 -j DROP

測試 SBD 隔離

您可以藉由終止詢問器程式來測試 SBD 的設定:

hn1-db-0:~ # ps aux | grep sbd
root       1912  0.0  0.0  85420 11740 ?        SL   12:25   0:00 sbd: inquisitor
root       1929  0.0  0.0  85456 11776 ?        SL   12:25   0:00 sbd: watcher: /dev/disk/by-id/scsi-360014056f268462316e4681b704a9f73 - slot: 0 - uuid: 7b862dba-e7f7-4800-92ed-f76a4e3978c8
root       1930  0.0  0.0  85456 11776 ?        SL   12:25   0:00 sbd: watcher: /dev/disk/by-id/scsi-360014059bc9ea4e4bac4b18808299aaf - slot: 0 - uuid: 5813ee04-b75c-482e-805e-3b1e22ba16cd
root       1931  0.0  0.0  85456 11776 ?        SL   12:25   0:00 sbd: watcher: /dev/disk/by-id/scsi-36001405b8dddd44eb3647908def6621c - slot: 0 - uuid: 986ed8f8-947d-4396-8aec-b933b75e904c
root       1932  0.0  0.0  90524 16656 ?        SL   12:25   0:00 sbd: watcher: Pacemaker
root       1933  0.0  0.0 102708 28260 ?        SL   12:25   0:00 sbd: watcher: Cluster
root      13877  0.0  0.0   9292  1572 pts/0    S+   12:27   0:00 grep sbd

hn1-db-0:~ # kill -9 1912

<HANA SID>-db-<database 1> 集節點會重新啟動。 Pacemaker 服務可能不會重新啟動。 請確定您再次啟動它。

測試手動容錯移轉

您可以藉由停止節點上的 hn1-db-0 Pacemaker 服務來測試手動故障轉移:

service pacemaker stop

容錯移轉之後,您可以再次啟動服務。 如果您設定 AUTOMATED_REGISTER="false",節點上的 hn1-db-0 SAP HANA 資源無法以次要身分啟動。

在此情況下,請執行下列命令,將 HANA 實例設定為次要實例:

service pacemaker start
su - <hana sid>adm

# Stop the HANA instance, just in case it is running
sapcontrol -nr <instance number> -function StopWait 600 10
hdbnsutil -sr_register --remoteHost=hn1-db-1 --remoteInstance=<instance number> --replicationMode=sync --name=<site 1> 

# Switch back to root and clean up the failed state
exit
crm resource cleanup msl_SAPHana_<HANA SID>_HDB<instance number> hn1-db-0

SUSE 測試

重要

請確定您選取的 OS 已針對您計畫使用的特定 VM 類型,針對 SAP HANA 認證。 您可以在 SAP HANA 認證 IaaS 平臺查閱 SAP HANA 認證的 VM 類型和其 OS 版本。 請務必查看您打算用來取得該 VM 類型 SAP HANA 支援的 OS 版本完整清單的詳細數據。

根據您的案例,執行SAP HANA SR效能優化案例指南或 SAP HANA SR 成本優化案例指南中列出的所有測試案例。 您可以在 SLES for SAP 最佳做法中找到所列的指南。

下列測試是 SAP HANA SR 效能最佳化案例 SUSE Linux Enterprise Server for SAP Applications 12 SP1 指南的測試描述複本。 如需最新的版本,也請閱讀指南本身。 請務必確定 HANA 在您開始測試之前處於同步狀態,並確定 Pacemaker 組態正確無誤。

在下列測試描述中,我們假設 PREFER_SITE_TAKEOVER="true"AUTOMATED_REGISTER="false"

注意

下列測試的設計目的是要依序執行。 每個測試都取決於上述測試的結束狀態。

  1. 測試 1:停止節點 1 上的主資料庫。

    開始測試之前的資源狀態:

    Clone Set: cln_SAPHanaTopology_HN1_HDB03 [rsc_SAPHanaTopology_HN1_HDB03]
       Started: [ hn1-db-0 hn1-db-1 ]
    Master/Slave Set: msl_SAPHana_HN1_HDB03 [rsc_SAPHana_HN1_HDB03]
       Masters: [ hn1-db-0 ]
       Slaves: [ hn1-db-1 ]
    Resource Group: g_ip_HN1_HDB03
       rsc_ip_HN1_HDB03   (ocf::heartbeat:IPaddr2):       Started hn1-db-0
       rsc_nc_HN1_HDB03   (ocf::heartbeat:azure-lb):      Started hn1-db-0
    

    在節點上以 hana sid>adm hn1-db-0 身分<執行下列命令:

    hn1adm@hn1-db-0:/usr/sap/HN1/HDB03> HDB stop
    

    Pacemaker 會偵測已停止的 HANA 實例,並故障轉移至其他節點。 故障轉移完成時,節點上的 hn1-db-0 HANA 實例會停止,因為 Pacemaker 不會自動將節點註冊為 HANA 次要節點。

    執行下列命令,將節點註冊 hn1-db-0 為次要節點,並清除失敗的資源:

    hn1adm@hn1-db-0:/usr/sap/HN1/HDB03> hdbnsutil -sr_register --remoteHost=hn1-db-1 --remoteInstance=<instance number> --replicationMode=sync --name=<site 1>
    
    # run as root
    hn1-db-0:~ # crm resource cleanup msl_SAPHana_<HANA SID>_HDB<instance number> hn1-db-0
    

    測試之後的資源狀態:

    Clone Set: cln_SAPHanaTopology_HN1_HDB03 [rsc_SAPHanaTopology_HN1_HDB03]
       Started: [ hn1-db-0 hn1-db-1 ]
    Master/Slave Set: msl_SAPHana_HN1_HDB03 [rsc_SAPHana_HN1_HDB03]
       Masters: [ hn1-db-1 ]
       Slaves: [ hn1-db-0 ]
    Resource Group: g_ip_HN1_HDB03
       rsc_ip_HN1_HDB03   (ocf::heartbeat:IPaddr2):       Started hn1-db-1
       rsc_nc_HN1_HDB03   (ocf::heartbeat:azure-lb):      Started hn1-db-1
    
  2. 測試 2:停止節點 2 上的主資料庫。

    開始測試之前的資源狀態:

    Clone Set: cln_SAPHanaTopology_HN1_HDB03 [rsc_SAPHanaTopology_HN1_HDB03]
       Started: [ hn1-db-0 hn1-db-1 ]
    Master/Slave Set: msl_SAPHana_HN1_HDB03 [rsc_SAPHana_HN1_HDB03]
       Masters: [ hn1-db-1 ]
       Slaves: [ hn1-db-0 ]
    Resource Group: g_ip_HN1_HDB03
       rsc_ip_HN1_HDB03   (ocf::heartbeat:IPaddr2):       Started hn1-db-1
       rsc_nc_HN1_HDB03   (ocf::heartbeat:azure-lb):      Started hn1-db-1
    

    在節點上以 hana sid>adm hn1-db-1 身分<執行下列命令:

    hn1adm@hn1-db-1:/usr/sap/HN1/HDB01> HDB stop
    

    Pacemaker 會偵測已停止的 HANA 實例,並故障轉移至其他節點。 故障轉移完成時,節點上的 hn1-db-1 HANA 實例會停止,因為 Pacemaker 不會自動將節點註冊為 HANA 次要節點。

    執行下列命令,將節點註冊 hn1-db-1 為次要節點,並清除失敗的資源:

    hn1adm@hn1-db-1:/usr/sap/HN1/HDB03> hdbnsutil -sr_register --remoteHost=hn1-db-0 --remoteInstance=<instance number> --replicationMode=sync --name=<site 2>
    
    # run as root
    hn1-db-1:~ # crm resource cleanup msl_SAPHana_<HANA SID>_HDB<instance number> hn1-db-1
    

    測試之後的資源狀態:

    Clone Set: cln_SAPHanaTopology_HN1_HDB03 [rsc_SAPHanaTopology_HN1_HDB03]
       Started: [ hn1-db-0 hn1-db-1 ]
    Master/Slave Set: msl_SAPHana_HN1_HDB03 [rsc_SAPHana_HN1_HDB03]
       Masters: [ hn1-db-0 ]
       Slaves: [ hn1-db-1 ]
    Resource Group: g_ip_HN1_HDB03
       rsc_ip_HN1_HDB03   (ocf::heartbeat:IPaddr2):       Started hn1-db-0
       rsc_nc_HN1_HDB03   (ocf::heartbeat:azure-lb):      Started hn1-db-0
    
  3. 測試 3:當機節點 1 上的主資料庫。

    開始測試之前的資源狀態:

    Clone Set: cln_SAPHanaTopology_HN1_HDB03 [rsc_SAPHanaTopology_HN1_HDB03]
       Started: [ hn1-db-0 hn1-db-1 ]
    Master/Slave Set: msl_SAPHana_HN1_HDB03 [rsc_SAPHana_HN1_HDB03]
       Masters: [ hn1-db-0 ]
       Slaves: [ hn1-db-1 ]
    Resource Group: g_ip_HN1_HDB03
       rsc_ip_HN1_HDB03   (ocf::heartbeat:IPaddr2):       Started hn1-db-0
       rsc_nc_HN1_HDB03   (ocf::heartbeat:azure-lb):      Started hn1-db-0
    

    在節點上以 hana sid>adm hn1-db-0 身分<執行下列命令:

    hn1adm@hn1-db-0:/usr/sap/HN1/HDB03> HDB kill-9
    

    Pacemaker 會偵測已終止的 HANA 實例,並故障轉移至其他節點。 故障轉移完成時,節點上的 hn1-db-0 HANA 實例會停止,因為 Pacemaker 不會自動將節點註冊為 HANA 次要節點。

    執行下列命令,將節點註冊 hn1-db-0 為次要節點,並清除失敗的資源:

    hn1adm@hn1-db-0:/usr/sap/HN1/HDB03> hdbnsutil -sr_register --remoteHost=hn1-db-1 --remoteInstance=<instance number> --replicationMode=sync --name=<site 1>
    
    # run as root
    hn1-db-0:~ # crm resource cleanup msl_SAPHana_<HANA SID>_HDB<instance number> hn1-db-0
    

    測試之後的資源狀態:

    Clone Set: cln_SAPHanaTopology_HN1_HDB03 [rsc_SAPHanaTopology_HN1_HDB03]
       Started: [ hn1-db-0 hn1-db-1 ]
    Master/Slave Set: msl_SAPHana_HN1_HDB03 [rsc_SAPHana_HN1_HDB03]
       Masters: [ hn1-db-1 ]
       Slaves: [ hn1-db-0 ]
    Resource Group: g_ip_HN1_HDB03
       rsc_ip_HN1_HDB03   (ocf::heartbeat:IPaddr2):       Started hn1-db-1
       rsc_nc_HN1_HDB03   (ocf::heartbeat:azure-lb):      Started hn1-db-1
    
  4. 測試 4:當機節點 2 上的主資料庫。

    開始測試之前的資源狀態:

    Clone Set: cln_SAPHanaTopology_HN1_HDB03 [rsc_SAPHanaTopology_HN1_HDB03]
       Started: [ hn1-db-0 hn1-db-1 ]
    Master/Slave Set: msl_SAPHana_HN1_HDB03 [rsc_SAPHana_HN1_HDB03]
       Masters: [ hn1-db-1 ]
       Slaves: [ hn1-db-0 ]
    Resource Group: g_ip_HN1_HDB03
       rsc_ip_HN1_HDB03   (ocf::heartbeat:IPaddr2):       Started hn1-db-1
       rsc_nc_HN1_HDB03   (ocf::heartbeat:azure-lb):      Started hn1-db-1
    

    在節點上以 hana sid>adm hn1-db-1 身分<執行下列命令:

    hn1adm@hn1-db-1:/usr/sap/HN1/HDB03> HDB kill-9
    

    Pacemaker 會偵測已終止的 HANA 實例,並故障轉移至其他節點。 故障轉移完成時,節點上的 hn1-db-1 HANA 實例會停止,因為 Pacemaker 不會自動將節點註冊為 HANA 次要節點。

    執行下列命令,將節點註冊 hn1-db-1 為次要節點,並清除失敗的資源。

    hn1adm@hn1-db-1:/usr/sap/HN1/HDB03> hdbnsutil -sr_register --remoteHost=hn1-db-0 --remoteInstance=<instance number> --replicationMode=sync --name=<site 2>
    
    # run as root
    hn1-db-1:~ # crm resource cleanup msl_SAPHana_<HANA SID>_HDB<instance number> hn1-db-1
    

    測試之後的資源狀態:

    Clone Set: cln_SAPHanaTopology_HN1_HDB03 [rsc_SAPHanaTopology_HN1_HDB03]
       Started: [ hn1-db-0 hn1-db-1 ]
    Master/Slave Set: msl_SAPHana_HN1_HDB03 [rsc_SAPHana_HN1_HDB03]
       Masters: [ hn1-db-0 ]
       Slaves: [ hn1-db-1 ]
    Resource Group: g_ip_HN1_HDB03
       rsc_ip_HN1_HDB03   (ocf::heartbeat:IPaddr2):       Started hn1-db-0
       rsc_nc_HN1_HDB03   (ocf::heartbeat:azure-lb):      Started hn1-db-0
    
  5. 測試 5:當機主要站台節點 (節點 1)。

    開始測試之前的資源狀態:

    Clone Set: cln_SAPHanaTopology_HN1_HDB03 [rsc_SAPHanaTopology_HN1_HDB03]
       Started: [ hn1-db-0 hn1-db-1 ]
    Master/Slave Set: msl_SAPHana_HN1_HDB03 [rsc_SAPHana_HN1_HDB03]
       Masters: [ hn1-db-0 ]
       Slaves: [ hn1-db-1 ]
    Resource Group: g_ip_HN1_HDB03
       rsc_ip_HN1_HDB03   (ocf::heartbeat:IPaddr2):       Started hn1-db-0
       rsc_nc_HN1_HDB03   (ocf::heartbeat:azure-lb):      Started hn1-db-0
    

    在節點上以根 hn1-db-0 目錄身分執行下列命令:

    hn1-db-0:~ #  echo 'b' > /proc/sysrq-trigger
    

    Pacemaker 會偵測已終止的叢集節點,並隔離節點。 當節點受到圍欄時,Pacemaker 會觸發 HANA 實例的接管。 當隔離節點重新啟動時,Pacemaker 不會自動啟動。

    執行下列命令以啟動 Pacemaker、清除節點的 hn1-db-0 SBD 訊息、將節點註冊 hn1-db-0 為次要節點,以及清除失敗的資源:

    # run as root
    # list the SBD device(s)
    hn1-db-0:~ # cat /etc/sysconfig/sbd | grep SBD_DEVICE=
    # SBD_DEVICE="/dev/disk/by-id/scsi-36001405772fe8401e6240c985857e116;/dev/disk/by-id/scsi-36001405034a84428af24ddd8c3a3e9e1;/dev/disk/by-id/scsi-36001405cdd5ac8d40e548449318510c3"
    
    hn1-db-0:~ # sbd -d /dev/disk/by-id/scsi-36001405772fe8401e6240c985857e116 -d /dev/disk/by-id/scsi-36001405034a84428af24ddd8c3a3e9e1 -d /dev/disk/by-id/scsi-36001405cdd5ac8d40e548449318510c3 message hn1-db-0 clear
    
    hn1-db-0:~ # systemctl start pacemaker
    
    # run as <hana sid>adm
    hn1adm@hn1-db-0:/usr/sap/HN1/HDB03> hdbnsutil -sr_register --remoteHost=hn1-db-1 --remoteInstance=<instance number> --replicationMode=sync --name=<site 1>
    
    # run as root
    hn1-db-0:~ # crm resource cleanup msl_SAPHana_<HANA SID>_HDB<instance number> hn1-db-0
    

    測試之後的資源狀態:

    Clone Set: cln_SAPHanaTopology_HN1_HDB03 [rsc_SAPHanaTopology_HN1_HDB03]
       Started: [ hn1-db-0 hn1-db-1 ]
    Master/Slave Set: msl_SAPHana_HN1_HDB03 [rsc_SAPHana_HN1_HDB03]
       Masters: [ hn1-db-1 ]
       Slaves: [ hn1-db-0 ]
    Resource Group: g_ip_HN1_HDB03
       rsc_ip_HN1_HDB03   (ocf::heartbeat:IPaddr2):       Started hn1-db-1
       rsc_nc_HN1_HDB03   (ocf::heartbeat:azure-lb):      Started hn1-db-1
    
  6. 測試 6:當機次要月臺節點 (節點 2)。

    開始測試之前的資源狀態:

    Clone Set: cln_SAPHanaTopology_HN1_HDB03 [rsc_SAPHanaTopology_HN1_HDB03]
       Started: [ hn1-db-0 hn1-db-1 ]
    Master/Slave Set: msl_SAPHana_HN1_HDB03 [rsc_SAPHana_HN1_HDB03]
       Masters: [ hn1-db-1 ]
       Slaves: [ hn1-db-0 ]
    Resource Group: g_ip_HN1_HDB03
       rsc_ip_HN1_HDB03   (ocf::heartbeat:IPaddr2):       Started hn1-db-1
       rsc_nc_HN1_HDB03   (ocf::heartbeat:azure-lb):      Started hn1-db-1
    

    在節點上以根 hn1-db-1 目錄身分執行下列命令:

    hn1-db-1:~ #  echo 'b' > /proc/sysrq-trigger
    

    Pacemaker 會偵測已終止的叢集節點,並隔離節點。 當節點受到圍欄時,Pacemaker 會觸發 HANA 實例的接管。 當隔離節點重新啟動時,Pacemaker 不會自動啟動。

    執行下列命令以啟動 Pacemaker、清除節點的 hn1-db-1 SBD 訊息、將節點註冊 hn1-db-1 為次要節點,以及清除失敗的資源:

    # run as root
    # list the SBD device(s)
    hn1-db-1:~ # cat /etc/sysconfig/sbd | grep SBD_DEVICE=
    # SBD_DEVICE="/dev/disk/by-id/scsi-36001405772fe8401e6240c985857e116;/dev/disk/by-id/scsi-36001405034a84428af24ddd8c3a3e9e1;/dev/disk/by-id/scsi-36001405cdd5ac8d40e548449318510c3"
    
    hn1-db-1:~ # sbd -d /dev/disk/by-id/scsi-36001405772fe8401e6240c985857e116 -d /dev/disk/by-id/scsi-36001405034a84428af24ddd8c3a3e9e1 -d /dev/disk/by-id/scsi-36001405cdd5ac8d40e548449318510c3 message hn1-db-1 clear
    
    hn1-db-1:~ # systemctl start pacemaker
    
    # run as <hana sid>adm
    hn1adm@hn1-db-1:/usr/sap/HN1/HDB03> hdbnsutil -sr_register --remoteHost=hn1-db-0 --remoteInstance=<instance number> --replicationMode=sync --name=<site 2>
    
    # run as root
    hn1-db-1:~ # crm resource cleanup msl_SAPHana_<HANA SID>_HDB<instance number> hn1-db-1
    

    測試之後的資源狀態:

    Clone Set: cln_SAPHanaTopology_HN1_HDB03 [rsc_SAPHanaTopology_HN1_HDB03]
       Started: [ hn1-db-0 hn1-db-1 ]
    Master/Slave Set: msl_SAPHana_HN1_HDB03 [rsc_SAPHana_HN1_HDB03]
       Masters: [ hn1-db-0 ]
       Slaves: [ hn1-db-1 ]
    Resource Group: g_ip_HN1_HDB03
       rsc_ip_HN1_HDB03   (ocf::heartbeat:IPaddr2):       Started hn1-db-0
       rsc_nc_HN1_HDB03   (ocf::heartbeat:azure-lb):      Started hn1-db-0
    </code></pre>
    
  7. 測試 7:停止節點 2 上的輔助資料庫。

    開始測試之前的資源狀態:

    Clone Set: cln_SAPHanaTopology_HN1_HDB03 [rsc_SAPHanaTopology_HN1_HDB03]
       Started: [ hn1-db-0 hn1-db-1 ]
    Master/Slave Set: msl_SAPHana_HN1_HDB03 [rsc_SAPHana_HN1_HDB03]
       Masters: [ hn1-db-0 ]
       Slaves: [ hn1-db-1 ]
    Resource Group: g_ip_HN1_HDB03
       rsc_ip_HN1_HDB03   (ocf::heartbeat:IPaddr2):       Started hn1-db-0
       rsc_nc_HN1_HDB03   (ocf::heartbeat:azure-lb):      Started hn1-db-0
    

    在節點上以 hana sid>adm hn1-db-1 身分<執行下列命令:

    hn1adm@hn1-db-1:/usr/sap/HN1/HDB03> HDB stop
    

    Pacemaker 會偵測已停止的 HANA 實例,並將資源標示為節點上失敗 hn1-db-1 。 Pacemaker 會自動重新啟動 HANA 實例。

    執行下列命令以清除失敗的狀態:

    # run as root
    hn1-db-1>:~ # crm resource cleanup msl_SAPHana_<HANA SID>_HDB<instance number> hn1-db-1
    

    測試之後的資源狀態:

    Clone Set: cln_SAPHanaTopology_HN1_HDB03 [rsc_SAPHanaTopology_HN1_HDB03]
       Started: [ hn1-db-0 hn1-db-1 ]
    Master/Slave Set: msl_SAPHana_HN1_HDB03 [rsc_SAPHana_HN1_HDB03]
       Masters: [ hn1-db-0 ]
       Slaves: [ hn1-db-1 ]
    Resource Group: g_ip_HN1_HDB03
       rsc_ip_HN1_HDB03   (ocf::heartbeat:IPaddr2):       Started hn1-db-0
       rsc_nc_HN1_HDB03   (ocf::heartbeat:azure-lb):      Started hn1-db-0
    
  8. 測試 8:當機節點 2 上的輔助資料庫。

    開始測試之前的資源狀態:

    Clone Set: cln_SAPHanaTopology_HN1_HDB03 [rsc_SAPHanaTopology_HN1_HDB03]
       Started: [ hn1-db-0 hn1-db-1 ]
    Master/Slave Set: msl_SAPHana_HN1_HDB03 [rsc_SAPHana_HN1_HDB03]
       Masters: [ hn1-db-0 ]
       Slaves: [ hn1-db-1 ]
    Resource Group: g_ip_HN1_HDB03
       rsc_ip_HN1_HDB03   (ocf::heartbeat:IPaddr2):       Started hn1-db-0
       rsc_nc_HN1_HDB03   (ocf::heartbeat:azure-lb):      Started hn1-db-0
    

    在節點上以 hana sid>adm hn1-db-1 身分<執行下列命令:

    hn1adm@hn1-db-1:/usr/sap/HN1/HDB03> HDB kill-9
    

    Pacemaker 會偵測已終止的 HANA 實例,並將資源標示為節點上失敗 hn1-db-1 。 執行下列命令以清除失敗的狀態。 Pacemaker 接著會自動重新啟動 HANA 實例。

    # run as root
    hn1-db-1:~ # crm resource cleanup msl_SAPHana_<HANA SID>_HDB<instance number> HN1-db-1
    

    測試之後的資源狀態:

    Clone Set: cln_SAPHanaTopology_HN1_HDB03 [rsc_SAPHanaTopology_HN1_HDB03]
       Started: [ hn1-db-0 hn1-db-1 ]
    Master/Slave Set: msl_SAPHana_HN1_HDB03 [rsc_SAPHana_HN1_HDB03]
       Masters: [ hn1-db-0 ]
       Slaves: [ hn1-db-1 ]
    Resource Group: g_ip_HN1_HDB03
       rsc_ip_HN1_HDB03   (ocf::heartbeat:IPaddr2):       Started hn1-db-0
       rsc_nc_HN1_HDB03   (ocf::heartbeat:azure-lb):      Started hn1-db-0
    
  9. 測試 9:當機執行次要 HANA 資料庫的次要月臺節點(節點 2)。

    開始測試之前的資源狀態:

    Clone Set: cln_SAPHanaTopology_HN1_HDB03 [rsc_SAPHanaTopology_HN1_HDB03]
       Started: [ hn1-db-0 hn1-db-1 ]
    Master/Slave Set: msl_SAPHana_HN1_HDB03 [rsc_SAPHana_HN1_HDB03]
       Masters: [ hn1-db-0 ]
       Slaves: [ hn1-db-1 ]
    Resource Group: g_ip_HN1_HDB03
       rsc_ip_HN1_HDB03   (ocf::heartbeat:IPaddr2):       Started hn1-db-0
       rsc_nc_HN1_HDB03   (ocf::heartbeat:azure-lb):      Started hn1-db-0
    

    在節點上以根 hn1-db-1 目錄身分執行下列命令:

    hn1-db-1:~ # echo b > /proc/sysrq-trigger
    

    Pacemaker 會偵測已終止的叢集節點,並隔離節點。 當隔離節點重新啟動時,Pacemaker 不會自動啟動。

    執行下列命令以啟動 Pacemaker、清除節點的 hn1-db-1 SBD 訊息,以及清除失敗的資源:

    # run as root
    # list the SBD device(s)
    hn1-db-1:~ # cat /etc/sysconfig/sbd | grep SBD_DEVICE=
    # SBD_DEVICE="/dev/disk/by-id/scsi-36001405772fe8401e6240c985857e116;/dev/disk/by-id/scsi-36001405034a84428af24ddd8c3a3e9e1;/dev/disk/by-id/scsi-36001405cdd5ac8d40e548449318510c3"
    
    hn1-db-1:~ # sbd -d /dev/disk/by-id/scsi-36001405772fe8401e6240c985857e116 -d /dev/disk/by-id/scsi-36001405034a84428af24ddd8c3a3e9e1 -d /dev/disk/by-id/scsi-36001405cdd5ac8d40e548449318510c3 message hn1-db-1 clear
    
    hn1-db-1:~ # systemctl start pacemaker  
    
    hn1-db-1:~ # crm resource cleanup msl_SAPHana_<HANA SID>_HDB<instance number> hn1-db-1
    

    測試之後的資源狀態:

    Clone Set: cln_SAPHanaTopology_HN1_HDB03 [rsc_SAPHanaTopology_HN1_HDB03]
       Started: [ hn1-db-0 hn1-db-1 ]
    Master/Slave Set: msl_SAPHana_HN1_HDB03 [rsc_SAPHana_HN1_HDB03]
       Masters: [ hn1-db-0 ]
       Slaves: [ hn1-db-1 ]
    Resource Group: g_ip_HN1_HDB03
       rsc_ip_HN1_HDB03   (ocf::heartbeat:IPaddr2):       Started hn1-db-0
       rsc_nc_HN1_HDB03   (ocf::heartbeat:azure-lb):      Started hn1-db-0
    
  10. 測試 10:當機主資料庫索引伺服器

    只有在您已設定 susChkSrv 勾點時,此測試才相關,如實作 HANA 勾點 SAPHanaSR 和 susChkSrv 中所述

    開始測試之前的資源狀態:

    Clone Set: cln_SAPHanaTopology_HN1_HDB03 [rsc_SAPHanaTopology_HN1_HDB03]
       Started: [ hn1-db-0 hn1-db-1 ]
    Master/Slave Set: msl_SAPHana_HN1_HDB03 [rsc_SAPHana_HN1_HDB03]
       Masters: [ hn1-db-0 ]
       Slaves: [ hn1-db-1 ]
    Resource Group: g_ip_HN1_HDB03
       rsc_ip_HN1_HDB03   (ocf::heartbeat:IPaddr2):       Started hn1-db-0
       rsc_nc_HN1_HDB03   (ocf::heartbeat:azure-lb):      Started hn1-db-0
    

    在節點上以根 hn1-db-0 目錄身分執行下列命令:

    hn1-db-0:~ # killall -9 hdbindexserver
    

    當索引伺服器終止時,susChkSrv 攔截會偵測事件,並觸發動作來隔離 『hn1-db-0』 節點並起始接管程式。

    執行下列命令,將節點註冊 hn1-db-0 為次要節點,並清除失敗的資源:

    # run as <hana sid>adm
    hn1adm@hn1-db-0:/usr/sap/HN1/HDB03> hdbnsutil -sr_register --remoteHost=hn1-db-1 --remoteInstance=<instance number> --replicationMode=sync --name=<site 1>
    
    # run as root
    hn1-db-0:~ # crm resource cleanup msl_SAPHana_<HANA SID>_HDB<instance number> hn1-db-0
    

    測試之後的資源狀態:

    Clone Set: cln_SAPHanaTopology_HN1_HDB03 [rsc_SAPHanaTopology_HN1_HDB03]
       Started: [ hn1-db-0 hn1-db-1 ]
    Master/Slave Set: msl_SAPHana_HN1_HDB03 [rsc_SAPHana_HN1_HDB03]
       Masters: [ hn1-db-1 ]
       Slaves: [ hn1-db-0 ]
    Resource Group: g_ip_HN1_HDB03
       rsc_ip_HN1_HDB03   (ocf::heartbeat:IPaddr2):       Started hn1-db-1
       rsc_nc_HN1_HDB03   (ocf::heartbeat:azure-lb):      Started hn1-db-1
    

    您可以藉由造成次要節點上的索引伺服器當機來執行類似的測試案例。 當索引伺服器當機時,susChkSrv 攔截會辨識發生次數,並起始動作來隔離次要節點。

下一步