RHEL 上具有 Azure NetApp Files 的 SAP Hana 擴大高可用性
本文說明如何在使用 Azure NetApp Files 透過 NFS 掛接 HANA 檔案系統時,於擴大部署中設定 SAP Hana 系統複寫。 在此範例中,會使用設定和安裝命令、執行個體號碼 03 和 HANA 系統識別碼 HN1。 SAP Hana 系統複寫包含一個主要節點以及至少一個次要節點。
本文件中的步驟標上下列前置詞時,意義如下:
- [A]:此步驟適用於所有節點
- [1]:此步驟僅適用於 node1
- [2]:此步驟僅適用於 node2
必要條件
請先閱讀下列 SAP Note 和文件:
- SAP Note 1928533,其中包含:
- 支援部署 SAP 軟體的 Azure 虛擬機器 (VM) 大小的清單。
- Azure VM 大小的重要容量資訊。
- 支援的 SAP 軟體,以及作業系統 (OS) 與資料庫組合。
- Microsoft Azure 上 Windows 和 Linux 所需的 SAP 核心版本。
- SAP Note 2015553 列出 Azure 中 SAP 支援的 SAP 軟體部署先決條件。
- SAP 附註 405827 列出 HANA 環境的建議檔案系統。
- SAP 附註 2002167 建議適用於 Red Hat Enterprise Linux 的作業系統設定。
- SAP 附註 2009879 提供適用於 Red Hat Enterprise Linux 的 SAP HANA 方針。
- SAP 附註 3108302 提供適用於 Red Hat Enterprise Linux 9.x 的 SAP Hana 方針。
- SAP Note 2178632 包含在 Azure 中針對 SAP 回報的所有監視計量詳細資訊。
- SAP Note 2191498 包含 Azure 中 Linux 所需的 SAP Host Agent 版本。
- SAP Note 2243692 包含 Azure 中 Linux 上的 SAP 授權相關資訊。
- SAP 附註 1999351 包含適用於 SAP 的 Azure 增強型監視延伸模組的其他疑難排解資訊。
- SAP Community Wiki 具有 Linux 所需的所有 SAP 附註。
- 適用於 SAP on Linux 的 Azure 虛擬機器規劃和實作
- 在 Linux 上為 SAP 進行 Azure 虛擬機器部署
- 適用於 SAP on Linux 的 Azure 虛擬機器 DBMS 部署
- Pacemaker 叢集中的 SAP Hana 系統複寫
- 一般 Red Hat Enterprise Linux (RHEL) 文件:
- Azure 專用 RHEL 文件:
- Azure NetApp Files for SAP HANA 上的 NFS v4.1 磁碟區
概觀
傳統上,在擴大環境中,會從本機儲存體掛接 SAP Hana 的所有檔案系統。 在 Red Hat Enterprise Linux 上設定 SAP Hana 系統複寫的高可用性 (HA) 是發佈於在 RHEL 上設定 SAP Hana 系統複寫。
為了達到 Azure NetApp Files NFS 共用上擴大系統的 SAP Hana HA,在其中一個節點無法存取 Azure NetApp Files 上的 NFS 共用時,我們需要在叢集中進行更多的資源設定,才能復原 HANA 資源。 叢集會管理 NFS 掛接,讓其可以監視資源的健康情況。 系統會強制執行檔案系統掛接與 SAP HANA 資源之間的相依性。
.
SAP Hana 檔案系統會在每個節點上藉由使用 Azure NetApp Files 掛接於 NFS 共用上。 檔系統 /hana/data
、/hana/log
和 /hana/shared
對每個節點都是唯一的。
掛接於 node1 (hanadb1):
- 10.32.2.4:/hanadb1-data-mnt00001 (位於 /hana/data 上)
- 10.32.2.4:/hanadb1-log-mnt00001 (位於 /hana/log 上)
- 10.32.2.4:/hanadb1-shared-mnt00001 (位於 /hana/shared 上)
掛接於 node2 (hanadb2):
- 10.32.2.4:/hanadb2-data-mnt00001 (位於 /hana/data 上)
- 10.32.2.4:/hanadb2-log-mnt00001 (位於 /hana/log 上)
- 10.32.2.4:/hanadb2-shared-mnt00001 (位於 /hana/shared 上)
注意
兩個節點之間不會共享檔案系統 /hana/shared
、/hana/data
和 /hana/log
。 每個叢集節點都有自己的個別檔案系統。
SAP HANA 系統複寫設定會使用專用虛擬主機名稱和虛擬 IP 位址。 在 Azure 上必須有負載平衡器才能使用虛擬 IP 位址。 這裡顯示的設定具備以下條件的負載平衡器:
- 前端 IP 位址:10.32.0.10 (適用於 hn1-db)
- 探查連接埠:62503
設定 Azure NetApp Files 基礎結構
在繼續設定 Azure NetApp 檔案基礎結構之前,請先熟悉 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 應用程式磁碟區群組。
部署 Azure NetApp Files 資源
下列指示假設您已部署 Azure 虛擬網路。 Azure NetApp Files 資源以及將掛接 Azure NetApp Files 資源的 VM,必須部署至相同的 Azure 虛擬網路或對等互連的 Azure 虛擬網路。
依照建立 NetApp 帳戶中的指示,在選取的 Azure 區域中建立 NetApp 帳戶。
遵循設定 Azure NetApp Files 容量集區中的指示,設定 Azure NetApp Files 容量集區。
本文所顯示的 HANA 結構會在 Ultra 服務層級上使用單一 Azure NetApp Files 容量集區。 針對 Azure 上的 HANA 工作負載,我們建議使用 Azure NetApp Files Ultra 或 Premium 服務等級。
遵循將子網路委派給 Azure NetApp Files 中的指示,將子網路委派給 Azure NetApp Files。
請遵循建立適用於 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.32.2.4/hanadb1-data-mnt00001
和nfs://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)
- 磁碟區 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)
注意
會針對 NFSv4.1 /hana/shared
磁碟區呈現本文中掛接 /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:虛擬機擴展集、可用性區域或可用性設定組。
重要
請確定您選取的作業系統您計畫在部署使用的特定 VM 類型上已獲得 SAP HANA 認證。 您可以在 SAP Hana 認證 IaaS 平台中查閱 SAP Hana 認證的 VM 類型和作業系統版本。 請務必查閱 VM 類型的詳細資料,以取得 SAP Hana 針對特定 VM 類型支援的作業系統版本完整清單。
設定 Azure Load Balancer
在 VM 設定期間,您可以選擇在網路區段中建立或選取現有的負載平衡器。 請遵循下列步驟以設定 HANA 資料庫高可用性設定的標準負載平衡器。
請遵循建立負載平衡器中的步驟,使用 Azure 入口網站為高可用性 SAP 系統設定標準負載平衡器。 在設定負載平衡器期間,請考慮下列幾點:
- 前端 IP 組態:建立前端 IP。 選取與資料庫虛擬機相同的虛擬網路和子網路名稱。
- 後端集區:建立後端集區並新增資料庫 VM。
- 輸入規則:建立負載平衡規則。 針對這兩個負載平衡規則,請遵循相同的步驟。
- 前端 IP 位址:選取前端 IP。
- 後端集區:選取後端集區。
- 高可用性連接埠:選取此選項。
- 通訊協定:選取 [TCP]。
- 健全狀態探查:使用下列詳細衣料建立健全狀態探查:
- 通訊協定:選取 [TCP]。
- 連接埠:例如,625<執行個體編號>。
- 間隔:輸入 5。
- 探查閾值:輸入 2。
- 閒置逾時 (分鐘):輸入 30。
- 啟用浮動 IP:選取此選項。
注意
未遵守健全狀態探查設定屬性 numberOfProbes
,在入口網站中又名為狀況不良閾值。 若要控制連續探查成功或失敗的數目,請將屬性 probeThreshold
設定為 2
。 目前無法使用 Azure 入口網站來設定此屬性,因此請使用 Azure CLI 或 PowerShell 命令。
如需 SAP Hana 所需連接埠的詳細資訊,請參閱 SAP Hana 租用戶資料庫指南的連線到租用戶資料庫一章,或 SAP 附註 2388694。
注意
當不具公用 IP 位址的 VM 放在內部 (沒有公用 IP 位址) Azure Standard Load Balancer 執行個體的後端集區時,除非另外設定來允許路由傳送至公用端點,否則不會有輸出網際網路連線能力。 如需如何實現輸出連線能力的詳細資訊,請參閱在 SAP 高可用性案例中使用 Standard Azure Load Balancer 實現虛擬機器的公用端點連線能力。
重要
請勿在位於 Azure Load Balancer 後方的 Azure VM 上啟用 TCP 時間戳記。 啟用 TCP 時間戳記將導致健全狀態探查失敗。 將參數 net.ipv4.tcp_timestamps 設定為 0。 如需詳細資訊,請參閱負載平衡器健全狀態探查和 SAP 附註 2382421。
掛接 Azure NetApp Files 磁碟區
[A] 建立 HANA 資料庫磁碟區的掛接點。
sudo mkdir -p /hana/data sudo mkdir -p /hana/log sudo mkdir -p /hana/shared
[A] 驗證 NFS 網域設定。 確定網域設定為預設 Azure NetApp Files 網域,亦即,將 defaultv4iddomain.com 和對應設定為 nobody。
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 用戶端 (即 VM) 上的網域設定與 NFS 伺服器的網域設定 (即 Azure NetApp Files 設定) 不相符,然後掛接在 VM 上 Azure NetApp Files 磁碟區上檔案的權限將會顯示為nobody
。[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
[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
[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
[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 安裝
[A] 設定所有主機的主機名稱解析。
您可以使用 DNS 伺服器,或修改所有節點上的
/etc/hosts
檔案。 此範例說明您如何使用/etc/hosts
檔案。 請取代下列命令中的 IP 位址和主機名稱:sudo vi /etc/hosts
在
/etc/hosts
檔案中插入下列行。 變更 IP 位址和主機名稱以符合您的環境。10.32.0.4 hanadb1 10.32.0.5 hanadb2
[A] 請準備好 OS,以便在 Azure NetApp 上使用 NFS 執行 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
[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。[A] 調整
sunrpc
設定,如 SAP 附註 3024346 - 適用於 NetApp NFS 的 Linux 核心設定。sudo vi /etc/modprobe.d/sunrpc.conf
插入下列程式碼行:
options sunrpc tcp_max_slot_table_entries=128
[A] 為 HANA 執行 RHEL 作業系統設定。
根據您的 RHEL 版本來設定作業系統,如下方 SAP 附註所述:
[A] 安裝 SAP Hana。
從 HANA 2.0 SPS 01 開始,MDC 是預設選項。 當您安裝 HANA 系統時,將一併建立 SYSTEMDB 和具有相同 SID 的租用戶。 在某些情況下,您不想要預設租用戶。 如果不想要建立初始租用戶以及安裝,您可以遵循 SAP 附註 2629711。
從 HANA DVD 執行 hdblcm 程式。 出現提示時,輸入下列值:
- 選擇安裝:輸入 1 (表示安裝)。
- 針對安裝選取更多元件:輸入 1。
- 輸入安裝路徑 [/hana/shared]:選取 Enter 鍵以接受預設值。
- 輸入本機主機名稱 [..]:選取 Enter 鍵以接受預設值。 您是否想要將其他主機新增至系統? (是/否) [n]:n。
- 輸入 SAP Hana 系統識別碼:輸入 HN1。
- 輸入執行個體編號 [00]:輸入 03。
- 選取資料庫模式/輸入索引 [1]:按 Enter 鍵以接受預設值。
- 選取系統使用量/輸入索引 [4]:輸入 4 (以供自訂)。
- 輸入資料磁碟區 [/hana/data] 的位置:按 Enter 鍵以接受預設值。
- 輸入記錄磁碟區 [/hana/log] 的位置:按 Enter 鍵以接受預設值。
- 是否限制最大記憶體配置? [n]:選取 Enter 鍵以接受預設值。
- 輸入主機 '...' [...] 的憑證主機名稱:按 Enter 鍵以接受預設值。
- 輸入 SAP 主機代理程式使用者 (sapadm) 密碼:輸入主機代理程式使用者密碼。
- 確認 SAP 主機代理程式使用者 (sapadm) 密碼:再次輸入主機代理程式使用者密碼以做確認。
- 輸入系統管理員 (hn1adm) 密碼:輸入系統管理員密碼。
- 確認系統管理員 (hn1adm) 密碼:再次輸入系統管理員密碼以做確認。
- 輸入系統管理員主目錄 [/usr/sap/HN1/home]:選取 Enter 鍵以接受預設值。
- 輸入系統管理員登入殼層 [/bin/sh]:選取 Enter 鍵以接受預設值。
- 輸入系統管理員使用者識別碼 [1001]:選取 Enter 鍵以接受預設值。
- 輸入使用者群組的識別碼 (sapsys) [79]:選取 Enter 鍵以接受預設值。
- 輸入資料庫使用者 (SYSTEM) 密碼:輸入資料庫使用者密碼。
- 確認資料庫使用者 (SYSTEM) 密碼:再次輸入資料庫使用者密碼以做確認。
- 是否在電腦重新開機後重新啟動系統? [n]:選取 Enter 鍵以接受預設值。
- 您要繼續嗎? (是/否):驗證摘要。 輸入 y 繼續。
[A] 升級 SAP 主機代理程式。
從 SAP 軟體中心下載最新的 SAP 主機代理程式封存檔,然後執行下列命令來升級代理程式。 取代封存的路徑以指向您所下載的檔案:
sudo /usr/sap/hostctrl/exe/saphostexec -upgrade -archive <path to SAP Host Agent SAR>
[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 叢集。
重要
透過以 systemd 為基礎的 SAP 啟動架構,SAP Hana 執行個體現在可由 systemd 管理。 針對 SAP,最低需求 Red Hat Enterprise Linux (RHEL) 版本為 RHEL 8。 如 SAP 附註 3189534 所述,任何 SAP Hana SPS07 修訂版 70 或更新版本的安裝、HANA 系統至 HANA 2.0 SPS07 修訂版 70 或更新版的更新,SAP 啟動架構將自動向 systemd 註冊。
使用高可用性解決方案以管理 SAP Hana 系統複寫與已啟用 systemd 的 SAP Hana 執行個體 (請參閱 SAP 附註 3189534),需要額外的步驟以確保高可用性叢集可在沒有 systemd 介入下管理 SAP 執行個體。 因此,針對與 systemd 整合的 SAP Hana 系統,所有叢集必須遵循 Red Hat KBA 7029705 中所述的額外步驟。
實作 Python 系統複寫勾點 SAPHanaSR
此步驟對於最佳化與叢集的整合非常重要,並可改善需要叢集容錯移轉時的偵測。 強烈建議您設定 SAPHanaSR Python 勾點。 遵循實作 Python 系統複寫勾點 SAPHanaSR 中的步驟。
設定檔案系統資源
在此範例中,每個叢集節點都有自己的 HANA NFS 檔案系統 /hana/shared
、/hana/data
和 /hana/log
。
[1] 將叢集置於維護模式。
sudo pcs property set maintenance-mode=true
[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
[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
掛接選項,如 Azure NetApp Files for SAP Hana 上的 NFS v4.1 磁碟區中所述。 檢查 Linux 版本上的 Azure NetApp 檔案是否支援nconnect
。[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/data
,而且hana_data2
也會使用掛接點/hana/data
。 在叢集啟動時,若檢查資源狀態,共用相同掛接點可能會導致探查作業誤判為真,而且接著可能會造成不必要的復原行為。 若要避免此案例,請設定resource-discovery=never
。[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
[1] 設定位置條件約束。
設定位置條件約束,以確保 hanadb1 的屬性資源永遠不會在 hanadb2 上執行,反之亦然。
sudo pcs constraint location hana_nfs1_active avoids hanadb2 sudo pcs constraint location hana_nfs2_active avoids hanadb1
[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 叢集資源
請遵循建立 SAP Hana 叢集資源中的步驟,在叢集中建立 SAP Hana 資源。 建立 SAP Hana 資源後,就必須在 SAP Hana 資源與檔案系統 (NFS 掛接) 之間建立位置規則條件約束。
[1] 在 SAP Hana 資源與 NFS 掛接之間設定條件約束。
系統會設定位置規則條件約束,以便 SAP Hana 資源僅在所有節點的 NFS 掛接皆已掛接時,才能在節點上執行。
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
[1] 設定排序條件約束,讓節點上的 SAP 資源會在任何 NFS 掛接停止之前停止。
pcs constraint order stop SAPHanaTopology_HN1_03-clone then stop hanadb1_nfs pcs constraint order stop SAPHanaTopology_HN1_03-clone then stop hanadb2_nfs
在 RHEL 7.x 上:
pcs constraint order stop SAPHana_HN1_03-master then stop hanadb1_nfs pcs constraint order stop SAPHana_HN1_03-master then stop hanadb2_nfs
在 RHEL 8.x/9.x 上:
pcs constraint order stop SAPHana_HN1_03-clone then stop hanadb1_nfs pcs constraint order stop SAPHana_HN1_03-clone then stop hanadb2_nfs
將叢集置於維護模式外。
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 次要資料庫。
為了確保在接管發生之後仍可存取次要複寫站台,叢集需要將虛擬 IP 位址與 SAP Hana 資源的次要站台一起移動。
在具有第二個虛擬 IP 的 Red Hat HA 叢集中,管理已啟用 HANA 作用中/讀取的系統複寫所需的額外設定,其描述請參閱在 Pacemaker 叢集中設定已啟用 HANA 作用中/讀取的系統複寫。
在您繼續進行之前,請確定您已完整設定管理 SAP Hana 資料庫的 Red Hat 高可用性叢集,如文件的前述各節所說明。
測試叢集設定
本節將說明如何測試您的設定。
開始測試之前,請先確定 Pacemaker 沒有任何失敗的動作 (透過 pcs status)、沒有未預期的位置條件約束 (例如,移轉測試的剩餘項目),且 HANA 系統複寫是同步狀態,例如狀態為
systemReplicationStatus
:sudo su - hn1adm -c "python /usr/sap/HN1/HDB03/exe/python_support/systemReplicationStatus.py"
當節點遺失 NFS 共用的存取權時 (
/hana/shared
),確認失敗案例的叢集組態。SAP HANA 資源代理程式取決於
/hana/shared
上所儲存的二進位檔,以在容錯移轉期間執行作業。 在所呈現的案例中,是透過 NFS 來裝載/hana/shared
檔案系統。如果其中一部伺服器無法存取 NFS 共用,則模擬這類失敗十分困難。 作為測試,您可以將檔案系統重新掛接為唯讀。 如果作用中節點上遺失
/hana/shared
的存取權,則此方式會驗證叢集可以進行容錯移轉。預期的結果: 在將
/hana/shared
設為唯獨文件系統時,資源hana_shared1
的OCF_CHECK_LEVEL
屬性會在文件系統上執行讀取/寫入作業失敗。 其無法在檔案系統上寫入任何項目,並執行 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
將會根據stonith
(pcs property show stonith-action
) 上的動作集來重新開機或關閉電源。 伺服器 (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 叢集設定。