在 SUSE Enterprise Linux 上使用 Azure NetApp Files 擴充 SAP HANA 的高可用性

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

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

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

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

注意

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

概觀

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

若要在 Azure NetApp Files NFS 共用上達到相應增加系統的 SAP HANA 高可用性,我們需要叢集中一些額外的資源設定,才能讓 HANA 資源復原,當一個節點失去 ANF 上 NFS 共用的存取權時。

SAP HANA HA Scale-up on ANF

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

掛接在 node1 上 (hanadb1

  • 10.3.1.4:/hanadb1-data-mnt00001 on /hana/data
  • 10.3.1.4:/hanadb1-log-mnt00001 on /hana/log
  • 10.3.1.4:/hanadb1-shared-mnt00001 on /hana/shared

掛接在 node2 上 (hanadb2

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

注意

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

SAP 高可用性 HANA 系統復寫組態會使用專用的虛擬主機名和虛擬 IP 位址。 在 Azure 上必須有負載平衡器才能使用虛擬 IP 位址。 呈現的組態會顯示負載平衡器,其中包含:

  • 前端設定IP位址:hn1-db的10.3.0.50
  • 探查埠:62503

設定 Azure NetApp File 基礎結構

繼續設定 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 時,請注意適用於 SAP HANA 的 Azure NetApp Files 上 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 應用程式磁碟區群組。

注意

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

部署 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-mnt00001、hanadb1-log-mnt00001 等等,是磁碟區名稱和 nfs://10.3.1.4/hanadb1-data-mnt00001、nfs://10.3.1.4/hanadb1-log-mnt00001 等等,都是 Azure NetApp Files 磁碟區的檔案路徑。

    hanadb1

    • 磁碟區 hanadb1-data-mnt00001 (nfs://10.3.1.4:/hanadb1-data-mnt00001)
    • 磁碟區 hanadb1-log-mnt00001 (nfs://10.3.1.4:/hanadb1-log-mnt00001)
    • 大量 hanadb1-shared-mnt00001 (nfs://10.3.1.4:/hanadb1-shared-mnt00001)

    在hanadb2上

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

準備基礎結構

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。 選取與 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放置在內部(無公用IP位址)標準 Azure 負載平衡器的後端集區時,除非執行其他設定以允許路由傳送至公用端點,否則不會有輸出因特網連線能力。 如需如何達成輸出連線的詳細資訊,請參閱在 SAP 高可用性案例中使用 Azure Standard Load Balancer 虛擬機器 的公用端點連線。

重要

  • 請勿在放在 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 – 我需要更新嗎?

掛接 Azure NetApp Files 磁碟區

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

    sudo mkdir -p /hana/data/HN1/mnt00001
    sudo mkdir -p /hana/log/HN1/mnt00001
    sudo mkdir -p /hana/shared/HN1
    
  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 上的 /etc/idmapd.conf 中設定 NFS 網域,以符合 Azure NetApp Files 上的預設網域組態: defaultv4iddomain.com。 如果 NFS 用戶端上的網域設定與 NFS 伺服器之間不符,亦即 Azure NetApp 設定,則 VM 上掛接之 Azure NetApp 磁碟區上的檔案許可權將會顯示為沒有人。

  3. [A] 編輯這兩個節點上的 /etc/fstab,以永久掛接與每個節點相關的磁碟區。 以下是如何永久掛接磁碟區的範例。

    sudo vi /etc/fstab
    

    在這兩個節點上的 /etc/fstab 中新增下列專案

    hanadb1 的範例

    10.3.1.4:/hanadb1-data-mnt00001 /hana/data/HN1/mnt00001  nfs   rw,nfsvers=4.1,hard,timeo=600,rsize=262144,wsize=262144,noatime,lock,_netdev,sec=sys  0  0
    10.3.1.4:/hanadb1-log-mnt00001 /hana/log/HN1/mnt00001  nfs   rw,nfsvers=4.1,hard,timeo=600,rsize=262144,wsize=262144,noatime,lock,_netdev,sec=sys  0  0
    10.3.1.4:/hanadb1-shared-mnt00001 /hana/shared/HN1  nfs   rw,nfsvers=4.1,hard,timeo=600,rsize=262144,wsize=262144,noatime,lock,_netdev,sec=sys  0  0
    

    hanadb2 的範例

    10.3.1.4:/hanadb2-data-mnt00001 /hana/data/HN1/mnt00001  nfs   rw,nfsvers=4.1,hard,timeo=600,rsize=262144,wsize=262144,noatime,lock,_netdev,sec=sys  0  0
    10.3.1.4:/hanadb2-log-mnt00001 /hana/log/HN1/mnt00001  nfs   rw,nfsvers=4.1,hard,timeo=600,rsize=262144,wsize=262144,noatime,lock,_netdev,sec=sys  0  0
    10.3.1.4:/hanadb2-shared-mnt00001 /hana/shared/HN1  nfs   rw,nfsvers=4.1,hard,timeo=600,rsize=262144,wsize=262144,noatime,lock,_netdev,sec=sys  0  0
    

    掛接所有磁碟區

    sudo mount -a
    

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

  4. [A] 確認所有 HANA 磁碟區都已掛接 NFS 通訊協定版本 NFSv4。

    sudo nfsstat -m
    

    確認旗標 vers 已設定為 4.1。

    hanadb1 的範例。

    /hana/log/HN1/mnt00001 from 10.3.1.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.3.0.4,local_lock=none,addr=10.3.1.4
    /hana/data/HN1/mnt00001 from 10.3.1.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.3.0.4,local_lock=none,addr=10.3.1.4
    /hana/shared/HN1 from 10.3.1.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.3.0.4,local_lock=none,addr=10.3.1.4
    
  5. [A] 確認 nfs4_disable_idmapping。 它應該設定為 Y。若要建立nfs4_disable_idmapping所在的目錄結構,請執行掛接命令。 您無法在 /sys/modules 下手動建立目錄,因為存取權會保留給核心 /驅動程式。

    #Check nfs4_disable_idmapping
    sudo cat /sys/module/nfs/parameters/nfs4_disable_idmapping
    
    #If you need to set nfs4_disable_idmapping to Y
    sudo echo "Y" > /sys/module/nfs/parameters/nfs4_disable_idmapping
    
    #Make the configuration permanent
    sudo echo "options nfs nfs4_disable_idmapping=Y" >> /etc/modprobe.d/nfs.conf
    

SAP HANA 安裝

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

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

    sudo vi /etc/hosts
    

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

    10.3.0.4   hanadb1
    10.3.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
    

    提示

    請避免在 sysctl 組態檔中明確設定net.ipv4.ip_local_port_range和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 設定的 SLES

    根據 SLES 版本設定 SLES,如下列 SAP 附注所述

  6. [A] 安裝 SAP HANA

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

    1. 從 HANA 安裝軟體目錄啟動 hdblcm 程式。

      ./hdblcm
      
    2. 在提示字元中,輸入下列值:

      • 針對 [選擇安裝]:輸入 1 (適用於安裝)
      • 針對 [選取其他元件以進行安裝:輸入 1]。
      • 針對 Enter 安裝路徑 [/hana/shared]:按 Enter 以接受預設值
      • 針對 Enter 本機主機名稱 [..]:按 Enter 以接受預設值
      • 在底下,您要將其他主機新增至系統嗎? (y/n)[n]: n
      • 針對 [輸入 SAP HANA 系統標識符:輸入 HN1]。
      • 針對 Enter 實例號碼 [00]:輸入 03
      • 針對 [選取資料庫模式/ 輸入索引 [1]:按 Enter 以接受預設值
      • 針對 [選取系統使用量] / 輸入索引 [4]:輸入 4 (針對自定義)
      • 針對輸入數據磁碟區的位置 [/hana/data]:按 Enter 以接受預設值
      • 針對 [/hana/log] 的 [輸入記錄磁碟區位置]:按 Enter 以接受預設值
      • 針對限制記憶體配置上限? [n]: 按 Enter 以接受預設值
      • 針對 [輸入主機 '...' 的憑證主機名][...]: 按 Enter 以接受預設值
      • 針對輸入 SAP 主機代理程式使用者 (sapadm) 密碼:輸入主機代理程式用戶密碼
      • 針對確認 SAP 主機代理程式使用者 (sapadm) 密碼:再次輸入主機代理程式用戶密碼以確認
      • 針對 Enter System 管理員 istrator (hn1adm) 密碼:輸入系統管理員密碼
      • 針對確認系統 管理員 istrator (hn1adm) 密碼:再次輸入系統管理員密碼以確認
      • 針對 Enter System 管理員 istrator Home Directory [/usr/sap/HN1/home]:按 Enter 以接受預設值
      • 針對 Enter 系統 管理員 istrator 登入殼層 [/bin/sh]:按 Enter 以接受預設值
      • 針對 Enter 系統 管理員 istrator 使用者識別碼 [1001]:按 Enter 以接受預設值
      • 針對 [使用者群組] 的 Enter 識別碼 [79]:按 Enter 以接受預設值
      • 針對 Enter Database User (SYSTEM) Password:輸入資料庫用戶密碼
      • 針對確認資料庫使用者 (SYSTEM) 密碼:再次輸入資料庫用戶密碼以確認
      • 針對在機器重新啟動後重新啟動系統? [n]: 按 Enter 以接受預設值
      • 您要繼續嗎? (y/n):驗證摘要。 輸入 y 以繼續
  7. [A] 升級 SAP 主機代理程式

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

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

設定SAP HANA系統複寫

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

叢集組態

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

建立 Pacemaker 叢集

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

實作 HANA 攔截 SAPHanaSR 和 susChkSrv

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

設定SAP HANA 叢集資源

本節說明設定 SAP HANA 叢集資源所需的必要步驟。

建立 SAP HANA 叢集資源

請遵循建立 SAP HANA 叢集資源中的步驟,為 HANA 伺服器建立叢集資源。 建立資源之後,您應該會看到具有下列命令的叢集狀態

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

建立文件系統資源

建立虛擬文件系統叢集資源,以監視和報告失敗,以防存取NFS掛接檔系統 /hana/shared時發生問題。 這可讓叢集觸發故障轉移,以防存取 /hana/shared時發生問題。 如需詳細資訊,請參閱 處理 SUSE HA 叢集中的失敗 NFS 共用以進行 HANA 系統複寫。

  1. [A] 在兩個節點上建立目錄結構。

    sudo mkdir -p /hana/shared/HN1/check
    sudo mkdir -p /hana/shared/check
    
  2. [1] 設定叢集以新增要監視的目錄結構

    sudo crm configure primitive rsc_fs_check_HN1_HDB03 Filesystem params \
        device="/hana/shared/HN1/check/" \
        directory="/hana/shared/check/" fstype=nfs  \
        options="bind,defaults,rw,hard,rsize=262144,wsize=262144,proto=tcp,noatime,_netdev,nfsvers=4.1,lock,sec=sys" \
        op monitor interval=120 timeout=120 on-fail=fence \
        op_params OCF_CHECK_LEVEL=20 \
        op start interval=0 timeout=120 \
        op stop interval=0 timeout=120
    
  3. [1] 複製並檢查叢集中新設定的磁碟區

    sudo crm configure clone cln_fs_check_HN1_HDB03 rsc_fs_check_HN1_HDB03 meta clone-node-max=1 interleave=true
    

    範例輸出

    sudo crm status
    
    # Cluster Summary:
    # Stack: corosync
    # Current DC: hanadb1 (version 2.0.5+20201202.ba59be712-4.9.1-2.0.5+20201202.ba59be712) - partition with quorum
    # Last updated: Tue Nov  2 17:57:39 2021
    # Last change:  Tue Nov  2 17:57:38 2021 by root via crm_attribute on hanadb1
    # 2 nodes configured
    # 11 resource instances configured
    
    # Node List:
    # Online: [ hanadb1 hanadb2 ]
    
    # Full List of Resources:
    # Clone Set: cln_azure-events [rsc_azure-events]:
    #  Started: [ hanadb1 hanadb2 ]
    # Clone Set: cln_SAPHanaTopology_HN1_HDB03 [rsc_SAPHanaTopology_HN1_HDB03]:
    #  rsc_SAPHanaTopology_HN1_HDB03     (ocf::suse:SAPHanaTopology):     Started hanadb1 (Monitoring)
    #  rsc_SAPHanaTopology_HN1_HDB03     (ocf::suse:SAPHanaTopology):     Started hanadb2 (Monitoring)
    # Clone Set: msl_SAPHana_HN1_HDB03 [rsc_SAPHana_HN1_HDB03] (promotable):
    #  rsc_SAPHana_HN1_HDB03     (ocf::suse:SAPHana):     Master hanadb1 (Monitoring)
    #  Slaves: [ hanadb2 ]
    # Resource Group: g_ip_HN1_HDB03:
    #  rsc_ip_HN1_HDB03  (ocf::heartbeat:IPaddr2):        Started hanadb1
    #  rsc_nc_HN1_HDB03  (ocf::heartbeat:azure-lb):       Started hanadb1
    # rsc_st_azure        (stonith:fence_azure_arm):       Started hanadb2
    # Clone Set: cln_fs_check_HN1_HDB03 [rsc_fs_check_HN1_HDB03]:
    #  Started: [ hanadb1 hanadb2 ]
    

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

    on-fail=fence 屬性也會新增至監視作業。 使用此選項時,如果監視作業在節點上失敗,該節點會立即受到隔離。

重要

上述設定中的逾時可能需要調整為特定的 HANA 設定,以避免不必要的圍欄動作。 請勿設定逾時值太低。 請注意,文件系統監視器與 HANA 系統復寫無關。 如需詳細資訊,請參閱 SUSE 檔

測試叢集設定

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

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

    sudo su - hn1adm -c "python /usr/sap/HN1/HDB03/exe/python_support/systemReplicationStatus.py"
    
  2. 使用下列命令確認 HANA 資源的狀態

    SAPHanaSR-showAttr
    
    # You should see something like below
    # hanadb1:~ SAPHanaSR-showAttr
    # Global cib-time                 maintenance
    # --------------------------------------------
    # global Mon Nov  8 22:50:30 2021 false
    # Sites srHook
    # -------------
    # SITE1 PRIM
    # SITE2 SOK
    # Site2 SOK
    # Hosts   clone_state lpa_hn1_lpt node_state op_mode   remoteHost roles                            score site  srmode sync_state version                vhost
    # --------------------------------------------------------------------------------------------------------------------------------------------------------------
    # hanadb1 PROMOTED    1636411810  online     logreplay hanadb2    4:P:master1:master:worker:master 150   SITE1 sync   PRIM       2.00.058.00.1634122452 hanadb1
    # hanadb2 DEMOTED     30          online     logreplay hanadb1    4:S:master1:master:worker:master 100   SITE2 sync   SOK        2.00.058.00.1634122452 hanadb2
    
  3. 當節點關機時,請確認失敗案例的叢集組態(例如,顯示關閉節點 1)

    sudo crm status
    sudo crm resource move msl_SAPHana_HN1_HDB03 hanadb2 force
    sudo crm resource cleanup
    

    範例輸出

    sudo crm status
    
    #Cluster Summary:
    # Stack: corosync
    # Current DC: hanadb2 (version 2.0.5+20201202.ba59be712-4.9.1-2.0.5+20201202.ba59be712) - partition with quorum
    # Last updated: Mon Nov  8 23:25:36 2021
    # Last change:  Mon Nov  8 23:25:19 2021 by root via crm_attribute on hanadb2
    # 2 nodes configured
    # 11 resource instances configured
    
    # Node List:
    # Online: [ hanadb1 hanadb2 ]
    # Full List of Resources:
    # Clone Set: cln_azure-events [rsc_azure-events]:
    #  Started: [ hanadb1 hanadb2 ]
    # Clone Set: cln_SAPHanaTopology_HN1_HDB03 [rsc_SAPHanaTopology_HN1_HDB03]:
    #  Started: [ hanadb1 hanadb2 ]
    # Clone Set: msl_SAPHana_HN1_HDB03 [rsc_SAPHana_HN1_HDB03] (promotable):
    #  Masters: [ hanadb2 ]
    #  Stopped: [ hanadb1 ]
    # Resource Group: g_ip_HN1_HDB03:
    #  rsc_ip_HN1_HDB03  (ocf::heartbeat:IPaddr2):        Started hanadb2
    #  rsc_nc_HN1_HDB03  (ocf::heartbeat:azure-lb):       Started hanadb2
    # rsc_st_azure        (stonith:fence_azure_arm):       Started hanadb2
    # Clone Set: cln_fs_check_HN1_HDB03 [rsc_fs_check_HN1_HDB03]:
    #  Started: [ hanadb1 hanadb2 ]
    

    停止 Node1 上的 HANA

    sudo su - hn1adm
    sapcontrol -nr 03 -function StopWait 600 10
    

    將節點 1 註冊為次要節點並檢查狀態

    hdbnsutil -sr_register --remoteHost=hanadb2 --remoteInstance=03 --replicationMode=sync --name=SITE1 --operationMode=logreplay
    

    範例輸出

    #adding site ...
    #nameserver hanadb1:30301 not responding.
    #collecting information ...
    #updating local ini files ...
    #done.
    
    sudo crm status
    
    sudo SAPHanaSR-showAttr
    
  4. 當節點失去 NFS 共用的存取權時,請確認失敗案例的叢集組態 (/hana/shared)

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

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

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

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

    sudo crm  status
    
    #Cluster Summary:
     # Stack: corosync
     # Current DC: hanadb2 (version 2.0.5+20201202.ba59be712-4.9.1-2.0.5+20201202.ba59be712) - partition with quorum
     # Last updated: Mon Nov  8 23:01:27 2021
     # Last change:  Mon Nov  8 23:00:46 2021 by root via crm_attribute on hanadb1
     # 2 nodes configured
     # 11 resource instances configured
    
     #Node List:
     # Online: [ hanadb1 hanadb2 ]
    
     #Full List of Resources:
     # Clone Set: cln_azure-events [rsc_azure-events]:
       # Started: [ hanadb1 hanadb2 ]
     # Clone Set: cln_SAPHanaTopology_HN1_HDB03 [rsc_SAPHanaTopology_HN1_HDB03]:
       # Started: [ hanadb1 hanadb2 ]
     # Clone Set: msl_SAPHana_HN1_HDB03 [rsc_SAPHana_HN1_HDB03] (promotable):
       # Masters: [ hanadb1 ]
       # Slaves: [ hanadb2 ]
     # Resource Group: g_ip_HN1_HDB03:
       # rsc_ip_HN1_HDB03  (ocf::heartbeat:IPaddr2):        Started hanadb1
       # rsc_nc_HN1_HDB03  (ocf::heartbeat:azure-lb):       Started hanadb1
     # rsc_st_azure        (stonith:fence_azure_arm):       Started hanadb2
     # Clone Set: cln_fs_check_HN1_HDB03 [rsc_fs_check_HN1_HDB03]:
       # Started: [ hanadb1 hanadb2 ]
    

    您可以使用下列命令,將 /hana/shared 放在使用中叢集節點上的唯讀模式:

    sudo mount -o ro 10.3.1.4:/hanadb1-shared-mnt00001 /hana/sharedb
    

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

    sudo crm status
    
    #Cluster Summary:
     # Stack: corosync
     # Current DC: hanadb2 (version 2.0.5+20201202.ba59be712-4.9.1-2.0.5+20201202.ba59be712) - partition with quorum
     # Last updated: Wed Nov 10 22:00:27 2021
     # Last change:  Wed Nov 10 21:59:47 2021 by root via crm_attribute on hanadb2
     # 2 nodes configured
     # 11 resource instances configured
    
     #Node List:
     # Online: [ hanadb1 hanadb2 ]
    
     #Full List of Resources:
     # Clone Set: cln_azure-events [rsc_azure-events]:
       # Started: [ hanadb1 hanadb2 ]
     # Clone Set: cln_SAPHanaTopology_HN1_HDB03 [rsc_SAPHanaTopology_HN1_HDB03]:
       # Started: [ hanadb1 hanadb2 ]
     # Clone Set: msl_SAPHana_HN1_HDB03 [rsc_SAPHana_HN1_HDB03] (promotable):
       # Masters: [ hanadb2 ]
       # Stopped: [ hanadb1 ]
     # Resource Group: g_ip_HN1_HDB03:
          # rsc_ip_HN1_HDB03  (ocf::heartbeat:IPaddr2):        Started hanadb2
       # rsc_nc_HN1_HDB03  (ocf::heartbeat:azure-lb):       Started hanadb2
     # rsc_st_azure        (stonith:fence_azure_arm):       Started hanadb2
     # Clone Set: cln_fs_check_HN1_HDB03 [rsc_fs_check_HN1_HDB03]:
       # Started: [ hanadb1 hanadb2 ]
    

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

下一步