在 RHEL 上使用 Azure NetApp Files 相應增加 SAP HANA 的高可用性

本文說明如何使用 Azure NetApp Files 在透過 NFS 掛接 HANA 文件系統時,在相應增加部署中設定 SAP HANA 系統復寫。 在範例組態和安裝命令中,會使用實例號碼 03 和 HANA 系統識別碼 HN1 。 SAP HANA 系統復寫包含一個主要節點和至少一個次要節點。

當本檔中的步驟標示為下列前置詞時,意義如下:

  • [A]:此步驟適用於所有節點
  • [1]:此步驟僅適用於 node1
  • [2]:此步驟僅適用於 node2

必要條件

請先閱讀下列 SAP 附註和檔案:

概觀

傳統上,在相應增加環境中,SAP HANA 的所有文件系統都會從本機記憶體掛接。 在 Red Hat Enterprise Linux 上設定 SAP HANA 系統複寫的高可用性 (HA) 已發佈在 RHEL 上設定 SAP HANA 系統複寫。

若要在 Azure NetApp Files NFS 共用上達到相應增加系統的 SAP HANA HA,我們需要叢集中更多資源設定,以便讓 HANA 資源復原,當一個節點失去 Azure NetApp Files 上 NFS 共用的存取權時。 叢集會管理 NFS 掛接,讓它能夠監視資源的健康情況。 系統會強制執行文件系統掛接與 SAP HANA 資源之間的相依性。

Diagram that shows SAP HANA HA scale-up on Azure NetApp Files.

SAP HANA 檔系統會在每個節點上使用 Azure NetApp Files 掛接在 NFS 共用上。 檔系統 /hana/data/hana/log/hana/shared 對每個節點而言都是唯一的。

掛接在 node1 上 (hanadb1):

  • /hana/data 上的 10.32.2.4:/hanadb1-data-mnt00001
  • /hana/log 上的 10.32.2.4:/hanadb1-log-mnt00001
  • /hana/shared 上的 10.32.2.4:/hanadb1-shared-mnt00001

掛接在 node2 上 (hanadb2):

  • 10.32.2.4:/hanadb2-data-mnt00001 on /hana/data
  • /hana/log 上的 10.32.2.4:/hanadb2-log-mnt00001
  • /hana/shared 上的 10.32.2.4:/hanadb2-shared-mnt00001

注意

檔系統 /hana/shared/hana/data/hana/log 不會在兩個節點之間共用。 每個叢集節點都有自己的個別文件系統。

SAP HANA 系統複寫組態會使用專用的虛擬主機名和虛擬IP位址。 在 Azure 上必須有負載平衡器才能使用虛擬 IP 位址。 此處顯示的組態具有具有下列功能的負載平衡器:

  • 前端IP位址:hn1-db的10.32.0.10
  • 探查埠:62503

設定 Azure NetApp Files 基礎結構

在繼續設定 Azure NetApp Files 基礎結構之前,請先熟悉 Azure NetApp Files 檔

Azure NetApp Files 可在數個 Azure 區域中使用。 檢查您選取的 Azure 區域是否提供 Azure NetApp Files。

如需依 Azure 區域提供 Azure NetApp Files 可用性的詳細資訊,請參閱 Azure 區域的 Azure NetApp Files 可用性。

重要考量

當您為 SAP HANA 相應增加系統建立 Azure NetApp Files 磁碟區時,請注意 Azure NetApp Files for SAP HANA 上 NFS v4.1 磁碟區中所述的重要考慮。

Azure NetApp Files 上的 HANA 資料庫大小調整

Azure NetApp Files 磁碟區的輸送量是磁碟區大小和服務等級的函式,如 Azure NetApp Files 的服務等級中所述

當您使用 Azure NetApp Files 在 Azure 上設計 SAP HANA 的基礎結構時,請注意適用於 SAP HANA 的 Azure NetApp Files 上 NFS v4.1 磁碟區的建議

本文中的設定會顯示簡單的 Azure NetApp Files 磁碟區。

重要

對於效能是關鍵的生產系統,建議您評估並考慮使用 適用於 SAP HANA 的 Azure NetApp Files 應用程式磁碟區群組。

部署 Azure NetApp Files 資源

下列指示假設您已部署 Azure 虛擬網路。 將掛接 Azure NetApp Files 資源的 Azure NetApp Files 資源和 VM,必須部署在相同的 Azure 虛擬網路或對等互連 Azure 虛擬網路中。

  1. 依照建立 NetApp 帳戶中的 指示,在選取的 Azure 區域中建立 NetApp 帳戶

  2. 遵循設定 Azure NetApp Files 容量集區中的 指示,設定 Azure NetApp Files 容量集區

    本文中顯示的 HANA 架構會使用 Ultra 服務層級的單一 Azure NetApp Files 容量集區。 針對 Azure 上的 HANA 工作負載,我們建議使用 Azure NetApp Files Ultra進階版 服務層級

  3. 將子網委派給 Azure NetApp Files,如將子網委派給 Azure NetApp Files 中的指示所述。

  4. 遵循為 Azure NetApp Files 建立 NFS 磁碟區中的 指示,部署 Azure NetApp Files 磁碟區。

    當您部署磁碟區時,請務必選取 NFSv4.1 版本。 在指定的 Azure NetApp Files 子網中部署磁碟區。 Azure NetApp 磁碟區的IP位址會自動指派。

    請記住,Azure NetApp Files 資源和 Azure VM 必須位於相同的 Azure 虛擬網路或對等互連的 Azure 虛擬網路中。 例如, hanadb1-data-mnt00001hanadb1-log-mnt00001 是磁碟區名稱,而 nfs://10.32.2.4/hanadb1-data-mnt00001nfs://10.32.2.4/hanadb1-log-mnt00001 是 Azure NetApp Files 磁碟區的檔案路徑。

    在 hanadb1

    • 磁碟區 hanadb1-data-mnt00001 (nfs://10.32.2.4:/hanadb1-data-mnt00001)
    • 磁碟區 hanadb1-log-mnt00001 (nfs://10.32.2.4:/hanadb1-log-mnt00001)
    • Volume hanadb1-shared-mnt00001 (nfs://10.32.2.4:/hanadb1-shared-mnt00001)

    在 hanadb2

    • 磁碟區 hanadb2-data-mnt00001 (nfs://10.32.2.4:/hanadb2-data-mnt00001)
    • 磁碟區 hanadb2-log-mnt00001 (nfs://10.32.2.4:/hanadb2-log-mnt00001)
    • 磁碟區 hanadb2-shared-mnt00001 (nfs://10.32.2.4:/hanadb2-shared-mnt00001)

注意

本文中要掛接 /hana/shared 的所有命令都會針對 NFSv4.1 /hana/shared 磁碟區提供。 如果您將磁碟 /hana/shared 區部署為 NFSv3 磁碟區,別忘了調整 NFSv3 的 /hana/shared 掛接命令。

準備基礎結構

Azure Marketplace 包含具有高可用性附加元件之 SAP HANA 的映射,您可以使用各種版本的 Red Hat 來部署新的 VM。

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

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

部署 SAP HANA 的 VM。 選擇 HANA 系統支援的合適 RHEL 映像。 您可以在任一可用性選項中部署 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。 選取與 DB 虛擬機相同的虛擬網路和子網。
  2. 後端集區: 建立後端集區並新增 DB VM。
  3. 輸入規則: 建立負載平衡規則。 針對這兩個負載平衡規則,請遵循相同的步驟。
    • 前端IP位址:選取前端IP
    • 後端集區:選取後端集區
    • 檢查「高可用性埠」
    • 通訊協定:TCP
    • 健康情況探查:使用下列詳細數據建立健康情況探查
      • 通訊協定:TCP
      • 埠:[例如:625<實例否。>]
      • 間隔: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 Load Balancer 的虛擬機公用端點連線。

重要

請勿在位於 Azure Load Balancer 後方的 Azure VM 上啟用 TCP 時間戳。 啟用 TCP 時間戳可能會導致健康情況探查失敗。 將參數 net.ipv4.tcp_timestamps 設為 0。 如需詳細資訊,請參閱 Load Balancer健康情況探查 和 SAP 附注 2382421

掛接 Azure NetApp Files 磁碟區

  1. [A] 建立 HANA 資料庫磁碟區的裝入點。

    sudo mkdir -p /hana/data
    sudo mkdir -p /hana/log
    sudo mkdir -p /hana/shared
    
  2. [A] 確認 NFS 網域設定。 請確定網域已設定為預設的 Azure NetApp Files 網域,也就是 defaultv4iddomain.com,且對應設定為 沒有人

    sudo cat /etc/idmapd.conf
    

    範例輸出︰

    [General]
    Domain = defaultv4iddomain.com
    [Mapping]
    Nobody-User = nobody
    Nobody-Group = nobody
    

    重要

    請務必在 VM 上設定 NFS 網域 /etc/idmapd.conf ,以符合 Azure NetApp Files 上的預設網域組態: defaultv4iddomain.com。 如果 NFS 用戶端上的網域組態(也就是 VM)與 NFS 伺服器(也就是 Azure NetApp Files 組態)不符,則裝載在 VM 上之 Azure NetApp Files 磁碟區上的檔案權限會顯示為 nobody

  3. [1] 在 node1 上掛接節點特定磁碟區 (hanadb1)。

    sudo mount -o rw,nfsvers=4.1,hard,timeo=600,rsize=262144,wsize=262144,noatime,lock,_netdev,sec=sys 10.32.2.4:/hanadb1-shared-mnt00001 /hana/shared
    sudo mount -o rw,nfsvers=4.1,hard,timeo=600,rsize=262144,wsize=262144,noatime,lock,_netdev,sec=sys 10.32.2.4:/hanadb1-log-mnt00001 /hana/log
    sudo mount -o rw,nfsvers=4.1,hard,timeo=600,rsize=262144,wsize=262144,noatime,lock,_netdev,sec=sys 10.32.2.4:/hanadb1-data-mnt00001 /hana/data
    
  4. [2] 在 node2 上掛接節點特定磁碟區 (hanadb2)。

    sudo mount -o rw,nfsvers=4.1,hard,timeo=600,rsize=262144,wsize=262144,noatime,lock,_netdev,sec=sys 10.32.2.4:/hanadb2-shared-mnt00001 /hana/shared
    sudo mount -o rw,nfsvers=4.1,hard,timeo=600,rsize=262144,wsize=262144,noatime,lock,_netdev,sec=sys 10.32.2.4:/hanadb2-log-mnt00001 /hana/log
    sudo mount -o rw,nfsvers=4.1,hard,timeo=600,rsize=262144,wsize=262144,noatime,lock,_netdev,sec=sys 10.32.2.4:/hanadb2-data-mnt00001 /hana/data
    
  5. [A] 確認所有 HANA 磁碟區都已掛接 NFS 通訊協定版本 NFSv4。

    sudo nfsstat -m
    

    確認旗標 vers 已設定為 4.1。 hanadb1 的範例:

    /hana/log from 10.32.2.4:/hanadb1-log-mnt00001
    Flags: rw,noatime,vers=4.1,rsize=262144,wsize=262144,namlen=255,hard,proto=tcp,timeo=600,retrans=2,sec=sys,clientaddr=10.32.0.4,local_lock=none,addr=10.32.2.4
    /hana/data from 10.32.2.4:/hanadb1-data-mnt00001
    Flags: rw,noatime,vers=4.1,rsize=262144,wsize=262144,namlen=255,hard,proto=tcp,timeo=600,retrans=2,sec=sys,clientaddr=10.32.0.4,local_lock=none,addr=10.32.2.4
    /hana/shared from 10.32.2.4:/hanadb1-shared-mnt00001
    Flags: rw,noatime,vers=4.1,rsize=262144,wsize=262144,namlen=255,hard,proto=tcp,timeo=600,retrans=2,sec=sys,clientaddr=10.32.0.4,local_lock=none,addr=10.32.2.4
    
  6. [A] 確認 nfs4_disable_idmapping。 它應該設定為 Y。若要建立nfs4_disable_idmapping所在的目錄結構,請執行掛接命令。 您無法手動建立下的 /sys/modules 目錄,因為存取權會保留給核心和驅動程式。

    檢查 nfs4_disable_idmapping

    sudo cat /sys/module/nfs/parameters/nfs4_disable_idmapping
    

    如果您需要將 設定 nfs4_disable_idmapping 為:

    sudo echo "Y" > /sys/module/nfs/parameters/nfs4_disable_idmapping
    

    讓組態成為永久的。

    sudo echo "options nfs nfs4_disable_idmapping=Y" >> /etc/modprobe.d/nfs.conf
    

    如需如何變更 nfs_disable_idmapping 參數的詳細資訊,請參閱 Red Hat 知識庫

SAP HANA 安裝

  1. [A] 設定所有主機的主機名解析。

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

    sudo vi /etc/hosts
    

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

    10.32.0.4   hanadb1
    10.32.0.5   hanadb2
    
  2. [A] 準備操作系統以使用 NFS 在 Azure NetApp 上執行 SAP HANA,如 SAP 附注3024346 - NetApp NFS 的 Linux 核心 設定 中所述。 建立 NetApp 組態設定的組態檔 /etc/sysctl.d/91-NetApp-HANA.conf

    sudo vi /etc/sysctl.d/91-NetApp-HANA.conf
    

    在組態檔中新增下列專案。

    net.core.rmem_max = 16777216
    net.core.wmem_max = 16777216
    net.ipv4.tcp_rmem = 4096 131072 16777216
    net.ipv4.tcp_wmem = 4096 16384 16777216
    net.core.netdev_max_backlog = 300000 
    net.ipv4.tcp_slow_start_after_idle=0 
    net.ipv4.tcp_no_metrics_save = 1
    net.ipv4.tcp_moderate_rcvbuf = 1
    net.ipv4.tcp_window_scaling = 1    
    net.ipv4.tcp_sack = 1
    
  3. [A] 使用更多優化設定建立組態檔 /etc/sysctl.d/ms-az.conf

    sudo vi /etc/sysctl.d/ms-az.conf
    

    在組態檔中新增下列專案。

    net.ipv6.conf.all.disable_ipv6 = 1
    net.ipv4.tcp_max_syn_backlog = 16348
    net.ipv4.conf.all.rp_filter = 0
    sunrpc.tcp_slot_table_entries = 128
    vm.swappiness=10
    

    提示

    請避免在net.ipv4.ip_local_port_range組態檔中sysctl設定並net.ipv4.ip_local_reserved_ports明確設定 ,以允許 SAP 主機代理程式管理埠範圍。 如需詳細資訊,請參閱 SAP 附注 2382421

  4. [A] 調整sunrpc設定,如 SAP 附注3024346 - NetApp NFS 的 Linux 核心 設定 所建議。

    sudo vi /etc/modprobe.d/sunrpc.conf
    

    插入下列程式碼行:

    options sunrpc tcp_max_slot_table_entries=128
    
  5. [A] 執行 HANA 的 RHEL OS 組態。

    根據 RHEL 版本設定下列 SAP 附注中所述的 OS:

  6. [A] 安裝 SAP HANA。

    從 HANA 2.0 SPS 01 開始,MDC 是預設選項。 當您安裝 HANA 系統時,系統會一起建立具有相同 SID 的 SYSTEMDB 和租使用者。 在某些情況下,您不希望預設租使用者。 如果您不想建立初始租使用者以及安裝,您可以遵循 SAP 附注 2629711

    從 HANA DVD 執行 hdblcm 程式。 出現提示時,輸入下列值:

    1. 選擇安裝:輸入 1 (用於安裝)。
    2. 選取更多要安裝的元件:輸入 1
    3. 輸入安裝路徑 [/hana/shared]:選取 Enter 以接受預設值。
    4. 輸入本機主機名 [..]:選取 Enter 以接受預設值。 您是否想要將其他主機新增至系統? (y/n) [n]: n.
    5. 輸入 SAP HANA 系統識別碼:輸入 HN1
    6. 輸入 實例號碼 [00]:輸入 03
    7. 選取 [資料庫模式]/輸入索引 [1]:選取 Enter 以接受預設值。
    8. 選取 [系統使用量] / 輸入索引 [4]:輸入 4 (針對自定義)。
    9. 輸入數據磁碟區的位置 [/hana/data]:選取 Enter 以接受預設值。
    10. 輸入記錄磁碟區的位置 [/hana/log]:選取 Enter 以接受預設值。
    11. 是否限制最大記憶體配置? [n]:選取 Enter 以接受預設值。
    12. 輸入主機 '...' 的憑證主機名 [...]:選取 Enter 以接受預設值。
    13. 輸入 SAP 主機代理程式使用者 (sapadm) 密碼:輸入主機代理程式用戶密碼。
    14. 確認 SAP 主機代理程式使用者 (sapadm) 密碼:再次輸入主機代理程式用戶密碼以確認。
    15. 輸入系統 管理員 istrator (hn1adm) 密碼:輸入系統管理員密碼。
    16. 確認系統 管理員 istrator (hn1adm) 密碼:再次輸入系統管理員密碼以確認。
    17. 輸入 System 管理員 istrator Home Directory [/usr/sap/HN1/home]:選取 Enter 以接受預設值。
    18. 輸入系統 管理員 istrator 登入殼層 [/bin/sh]:選取 Enter 以接受預設值。
    19. 輸入系統 管理員 istrator 使用者識別碼 [1001]:選取 Enter 以接受預設值。
    20. 輸入使用者群組的標識碼 [79]:選取 Enter 以接受預設值。
    21. 輸入 資料庫使用者 (SYSTEM) 密碼:輸入資料庫用戶密碼。
    22. 確認 資料庫使用者 (SYSTEM) 密碼:再次輸入資料庫用戶密碼以確認。
    23. 是否在電腦重新開機後重新啟動系統? [n]:選取 Enter 以接受預設值。
    24. 您要繼續嗎? (y/n):驗證摘要。 輸入 y 以繼續。
  7. [A] 升級 SAP 主機代理程式。

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

    sudo /usr/sap/hostctrl/exe/saphostexec -upgrade -archive <path to SAP Host Agent SAR>
    
  8. [A] 設定防火牆。

    建立 Azure Load Balancer 探查埠的防火牆規則。

    sudo firewall-cmd --zone=public --add-port=62503/tcp
    sudo firewall-cmd --zone=public --add-port=62503/tcp –permanent
    

設定SAP HANA系統複寫

請遵循設定 SAP HANA 系統複寫中的步驟來設定 SAP HANA 系統複寫。

叢集組態

本節說明使用 Azure NetApp Files 在 NFS 共用上安裝 SAP HANA 時,叢集運作順暢所需的步驟。

建立 Pacemaker 叢集

請遵循在 Azure 中的 Red Hat Enterprise Linux 上設定 Pacemaker 中的步驟,為此 HANA 伺服器建立基本的 Pacemaker 叢集。

重要

使用以系統為基礎的 SAP 啟動架構,SAP HANA 實例現在可以由 systemd 管理。 最低需要的 Red Hat Enterprise Linux (RHEL) 版本是適用於 SAP 的 RHEL 8。 如 SAP 附注 3189534所述,任何新的 SAP HANA SPS07 修訂 70 或更新版本,或 HANA 系統更新為 HANA 2.0 SPS07 修訂 70 或更新版本,SAP 啟動架構都會自動向 systemd 註冊。

使用HA解決方案來管理SAP HANA系統複寫與已啟用系統功能的SAP HANA 實例(請參閱 SAP 附注 3189534),需要額外的步驟,以確保HA叢集可以管理 SAP 實例,而不會受到系統干擾。 因此,針對與 systemd 整合的 SAP HANA 系統,必須在所有叢集節點上遵循 Red Hat KBA 7029705中所述的其他步驟。

實作 Python 系統復寫攔截 SAPHanaSR

此步驟是優化與叢集整合的重要步驟,並在需要叢集故障轉移時改善偵測。 強烈建議您設定 SAPHanaSR Python 勾點。 請遵循實作 Python 系統復寫攔截 SAPHanaSR 中的步驟。

設定檔案系統資源

在這裡範例中,每個叢集節點都有自己的 HANA NFS 檔案系統 /hana/shared/hana/data/hana/log

  1. [1] 將叢集置於維護模式。

    sudo pcs property set maintenance-mode=true
    
  2. [1] 建立 hanadb1 掛接的文件系統資源。

    sudo pcs resource create hana_data1 ocf:heartbeat:Filesystem device=10.32.2.4:/hanadb1-data-mnt00001 directory=/hana/data fstype=nfs options=rw,nfsvers=4.1,hard,timeo=600,rsize=262144,wsize=262144,noatime,lock,_netdev,sec=sys op monitor interval=20s on-fail=fence timeout=120s OCF_CHECK_LEVEL=20 --group hanadb1_nfs
    sudo pcs resource create hana_log1 ocf:heartbeat:Filesystem device=10.32.2.4:/hanadb1-log-mnt00001 directory=/hana/log fstype=nfs options=rw,nfsvers=4.1,hard,timeo=600,rsize=262144,wsize=262144,noatime,lock,_netdev,sec=sys op monitor interval=20s on-fail=fence timeout=120s OCF_CHECK_LEVEL=20 --group hanadb1_nfs
    sudo pcs resource create hana_shared1 ocf:heartbeat:Filesystem device=10.32.2.4:/hanadb1-shared-mnt00001 directory=/hana/shared fstype=nfs options=rw,nfsvers=4.1,hard,timeo=600,rsize=262144,wsize=262144,noatime,lock,_netdev,sec=sys op monitor interval=20s on-fail=fence timeout=120s OCF_CHECK_LEVEL=20 --group hanadb1_nfs
    
  3. [2] 建立 hanadb2 掛接的文件系統資源。

    sudo pcs resource create hana_data2 ocf:heartbeat:Filesystem device=10.32.2.4:/hanadb2-data-mnt00001 directory=/hana/data fstype=nfs options=rw,nfsvers=4.1,hard,timeo=600,rsize=262144,wsize=262144,noatime,lock,_netdev,sec=sys op monitor interval=20s on-fail=fence timeout=120s OCF_CHECK_LEVEL=20 --group hanadb2_nfs
    sudo pcs resource create hana_log2 ocf:heartbeat:Filesystem device=10.32.2.4:/hanadb2-log-mnt00001 directory=/hana/log fstype=nfs options=rw,nfsvers=4.1,hard,timeo=600,rsize=262144,wsize=262144,noatime,lock,_netdev,sec=sys op monitor interval=20s on-fail=fence timeout=120s OCF_CHECK_LEVEL=20 --group hanadb2_nfs
    sudo pcs resource create hana_shared2 ocf:heartbeat:Filesystem device=10.32.2.4:/hanadb2-shared-mnt00001 directory=/hana/shared fstype=nfs options=rw,nfsvers=4.1,hard,timeo=600,rsize=262144,wsize=262144,noatime,lock,_netdev,sec=sys op monitor interval=20s on-fail=fence timeout=120s OCF_CHECK_LEVEL=20 --group hanadb2_nfs
    

    屬性 OCF_CHECK_LEVEL=20 會新增至監視作業,讓每個監視器在檔案系統上執行讀取/寫入測試。 如果沒有這個屬性,監視作業只會驗證文件系統是否已掛接。 這可能是個問題,因為當連線中斷時,即使無法存取文件系統,仍可能會掛接文件系統。

    屬性 on-fail=fence 也會新增至監視作業。 使用此選項時,如果監視作業在節點上失敗,該節點會立即受到隔離。 如果沒有此選項,默認行為是停止所有相依於失敗資源的資源、重新啟動失敗的資源,然後啟動所有相依於失敗資源的資源。

    當 SAPHana 資源相依於失敗的資源時,此行為不僅需要很長的時間,而且可能會完全失敗。 如果無法存取保存 HANA 可執行檔的 NFS 伺服器,SAPHana 資源就無法成功停止。

    建議的逾時值可讓叢集資源承受與 NFSv4.1 租用更新相關的通訊協定特定暫停。 如需詳細資訊,請參閱 NetApp 最佳做法中的 NFS。 上述設定中的逾時可能需要調整為特定的 SAP 設定。

    針對需要較高輸送量的工作負載,請考慮使用nconnect掛接選項,如適用於 SAP HANA 的 Azure NetApp Files 上的 NFS v4.1 磁碟區中所述。 檢查 Linux 版本上的 Azure NetApp Files 是否nconnect支援。

  4. [1] 設定位置條件約束。

    設定位置條件約束,以確保管理 hanadb1 唯一掛接的資源永遠不能在 hanadb2 上執行,反之亦然。

    sudo pcs constraint location hanadb1_nfs rule score=-INFINITY resource-discovery=never \#uname eq hanadb2
    sudo pcs constraint location hanadb2_nfs rule score=-INFINITY resource-discovery=never \#uname eq hanadb1
    

    因為每個節點的唯一掛接都會共用相同的裝入點,因此 resource-discovery=never 會設定此選項。 例如,hana_data1使用載入點 ,也會hana_data2使用裝入點 /hana/data/hana/data。 當叢集啟動時檢查資源狀態時,共用相同的裝入點可能會導致探查作業誤判,而且這反過來可能會導致不必要的復原行為。 若要避免這種情況,請設定 resource-discovery=never

  5. [1] 設定屬性資源。

    設定屬性資源。 如果掛接節點的所有 NFS 掛接 (/hana/data/hana/log/hana/data) ,則這些屬性會設定為 true。 否則,它們會設定為 false。

    sudo pcs resource create hana_nfs1_active ocf:pacemaker:attribute active_value=true inactive_value=false name=hana_nfs1_active
    sudo pcs resource create hana_nfs2_active ocf:pacemaker:attribute active_value=true inactive_value=false name=hana_nfs2_active
    
  6. [1] 設定位置條件約束。

    設定位置條件約束,以確保hanadb1的屬性資源永遠不會在hanadb2上執行,反之亦然。

    sudo pcs constraint location hana_nfs1_active avoids hanadb2
    sudo pcs constraint location hana_nfs2_active avoids hanadb1
    
  7. [1] 建立排序條件約束。

    設定排序條件約束,讓節點的屬性資源只有在掛接所有節點的 NFS 掛接之後才會啟動。

    sudo pcs constraint order hanadb1_nfs then hana_nfs1_active
    sudo pcs constraint order hanadb2_nfs then hana_nfs2_active
    

    提示

    如果您的組態包含檔案系統、群組 hanadb1_nfs 外部或 hanadb2_nfs,請包含 sequential=false 選項,讓檔案系統之間沒有排序相依性。 所有文件系統都必須在 之前 hana_nfs1_active啟動,但不需要以彼此相對的任何順序啟動。 如需詳細資訊,請參閱 如何? 當 HANA 文件系統位於 NFS 共用時,在 Pacemaker 叢集中的相應增加中設定 SAP HANA 系統複寫

設定SAP HANA 叢集資源

  1. 請遵循建立 SAP HANA 叢集資源中的步驟,在叢集中建立 SAP HANA 資源。 建立 SAP HANA 資源之後,您必須在 SAP HANA 資源與文件系統之間建立位置規則條件約束(NFS 掛接)。

  2. [1] 設定 SAP HANA 資源與 NFS 掛接之間的條件約束。

    已設定位置規則條件約束,因此只有在掛接所有節點的 NFS 掛接時,SAP HANA 資源才能在節點上執行。

    sudo pcs constraint location SAPHanaTopology_HN1_03-clone rule score=-INFINITY hana_nfs1_active ne true and hana_nfs2_active ne true
    

    在 RHEL 7.x 上:

    sudo pcs constraint location SAPHana_HN1_03-master rule score=-INFINITY hana_nfs1_active ne true and hana_nfs2_active ne true
    

    在 RHEL 8.x/9.x 上:

    sudo pcs constraint location SAPHana_HN1_03-clone rule score=-INFINITY hana_nfs1_active ne true and hana_nfs2_active ne true
    

    讓叢集脫離維護模式。

    sudo pcs property set maintenance-mode=false
    

    檢查叢集和所有資源的狀態。

    注意

    本文包含 Microsoft 不再使用之字詞的參考。 從軟體中移除該字詞時,我們也會將其從本文中移除。

    sudo pcs status
    

    範例輸出︰

    Online: [ hanadb1 hanadb2 ]
    
    Full list of resources:
    
    rsc_hdb_azr_agt(stonith:fence_azure_arm):  Started hanadb1
    
    Resource Group: hanadb1_nfs
    hana_data1 (ocf::heartbeat:Filesystem):Started hanadb1
    hana_log1  (ocf::heartbeat:Filesystem):Started hanadb1
    hana_shared1   (ocf::heartbeat:Filesystem):Started hanadb1
    
    Resource Group: hanadb2_nfs
    hana_data2 (ocf::heartbeat:Filesystem):Started hanadb2
    hana_log2  (ocf::heartbeat:Filesystem):Started hanadb2
    hana_shared2   (ocf::heartbeat:Filesystem):Started hanadb2
    
    hana_nfs1_active   (ocf::pacemaker:attribute): Started hanadb1
    hana_nfs2_active   (ocf::pacemaker:attribute): Started hanadb2
    
    Clone Set: SAPHanaTopology_HN1_03-clone [SAPHanaTopology_HN1_03]
    Started: [ hanadb1 hanadb2 ]
    
    Master/Slave Set: SAPHana_HN1_03-master [SAPHana_HN1_03]
    Masters: [ hanadb1 ]
    Slaves: [ hanadb2 ]
    
    Resource Group: g_ip_HN1_03
    nc_HN1_03  (ocf::heartbeat:azure-lb):  Started hanadb1
    vip_HN1_03 (ocf::heartbeat:IPaddr2):   Started hanadb1
    

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

從 SAP HANA 2.0 SPS 01 開始,SAP 允許 SAP HANA 系統複寫的使用中/讀取啟用設定,其中 SAP HANA 系統複寫的次要系統可以主動用於大量讀取工作負載。 若要在叢集中支援這類設定,則需要第二個虛擬IP位址,這可讓用戶端存取已啟用次要讀取的SAP HANA資料庫。

為了確保在接管發生之後,仍可存取次要復寫網站,叢集需要使用 SAPHana 資源的次要複本來移動虛擬 IP 位址。

在具有第二個虛擬IP的 Red Hat HA 叢集中管理 HANA 主動/讀取啟用系統複寫所需的額外設定,請參閱 在 Pacemaker 叢集中設定 HANA Active/Read-Enabled System Replication。

在繼續進行之前,請確定您已完整設定 Red Hat 高可用性叢集管理 SAP HANA 資料庫,如檔前幾節所述。

測試叢集設定

本節說明如何測試您的設定。

  1. 開始測試之前,請確定 Pacemaker 沒有任何失敗的動作(透過計算機狀態)、沒有未預期的位置限制(例如移轉測試的剩餘專案),以及 HANA 系統復寫處於同步狀態,例如:systemReplicationStatus

    sudo su - hn1adm -c "python /usr/sap/HN1/HDB03/exe/python_support/systemReplicationStatus.py"
    
  2. 當節點失去對 NFS 共用的存取權時,請確認失敗案例的叢集組態 。/hana/shared

    SAP HANA 資源代理程式相依於儲存 /hana/shared 的二進位檔,以在故障轉移期間執行作業。 在呈現的案例中,文件系統 /hana/shared 會透過NFS掛接。

    很難模擬其中一部伺服器失去 NFS 共用存取權的失敗。 作為測試,您可以將檔案系統重新掛接為唯讀。 如果作用中節點上遺失對 的存取 /hana/shared 權,此方法會驗證叢集是否可以故障轉移。

    預期的結果: 當做只讀文件系統進行 /hana/shared 時, OCF_CHECK_LEVEL 在文件系統上執行讀取/寫入作業的資源 hana_shared1屬性會失敗。 它無法在文件系統上寫入任何專案,並執行 HANA 資源故障轉移。 當您的 HANA 節點失去對 NFS 共用的存取權時,預期會有相同的結果。

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

    sudo pcs status
    

    範例輸出︰

    Full list of resources:
     rsc_hdb_azr_agt        (stonith:fence_azure_arm):      Started hanadb1
    
     Resource Group: hanadb1_nfs
         hana_data1 (ocf::heartbeat:Filesystem):    Started hanadb1
         hana_log1  (ocf::heartbeat:Filesystem):    Started hanadb1
         hana_shared1       (ocf::heartbeat:Filesystem):    Started hanadb1
    
    Resource Group: hanadb2_nfs
         hana_data2 (ocf::heartbeat:Filesystem):    Started hanadb2
         hana_log2  (ocf::heartbeat:Filesystem):    Started hanadb2
         hana_shared2       (ocf::heartbeat:Filesystem):    Started hanadb2
    
     hana_nfs1_active       (ocf::pacemaker:attribute):     Started hanadb1
     hana_nfs2_active       (ocf::pacemaker:attribute):     Started hanadb2
    
     Clone Set: SAPHanaTopology_HN1_03-clone [SAPHanaTopology_HN1_03]
         Started: [ hanadb1 hanadb2 ]
    
     Master/Slave Set: SAPHana_HN1_03-master [SAPHana_HN1_03]
         Masters: [ hanadb1 ]
         Slaves: [ hanadb2 ]
    
     Resource Group: g_ip_HN1_03
         nc_HN1_03  (ocf::heartbeat:azure-lb):      Started hanadb1
         vip_HN1_03 (ocf::heartbeat:IPaddr2):       Started hanadb1
    

    您可以使用此指令,在作用中叢集節點上放置 /hana/shared 唯讀模式:

    sudo mount -o ro 10.32.2.4:/hanadb1-shared-mnt00001 /hana/shared
    

    hanadb會根據 (pcs property show stonith-action) 上的stonith動作集重新啟動或關閉電源。 伺服器 (hanadb1) 關閉之後,HANA 資源就會移至 hanadb2。 您可以從 檢查叢集 hanadb2的狀態。

    sudo pcs status
    

    範例輸出︰

    Full list of resources:
    
     rsc_hdb_azr_agt        (stonith:fence_azure_arm):      Started hanadb2
    
     Resource Group: hanadb1_nfs
         hana_data1 (ocf::heartbeat:Filesystem):    Stopped
         hana_log1  (ocf::heartbeat:Filesystem):    Stopped
         hana_shared1       (ocf::heartbeat:Filesystem):    Stopped
    
     Resource Group: hanadb2_nfs
         hana_data2 (ocf::heartbeat:Filesystem):    Started hanadb2
         hana_log2  (ocf::heartbeat:Filesystem):    Started hanadb2
         hana_shared2       (ocf::heartbeat:Filesystem):    Started hanadb2
    
     hana_nfs1_active       (ocf::pacemaker:attribute):     Stopped
     hana_nfs2_active       (ocf::pacemaker:attribute):     Started hanadb2
    
     Clone Set: SAPHanaTopology_HN1_03-clone [SAPHanaTopology_HN1_03]
         Started: [ hanadb2 ]
         Stopped: [ hanadb1 ]
    
     Master/Slave Set: SAPHana_HN1_03-master [SAPHana_HN1_03]
         Masters: [ hanadb2 ]
         Stopped: [ hanadb1 ]
    
     Resource Group: g_ip_HN1_03
         nc_HN1_03  (ocf::heartbeat:azure-lb):      Started hanadb2
         vip_HN1_03 (ocf::heartbeat:IPaddr2):       Started hanadb2
    

    建議您藉由執行在 RHEL 上設定 SAP HANA 系統複寫中所述的測試,徹底測試 SAP HANA 叢集組態。

下一步