在 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 附注 1928533,其具有:
- 部署 SAP 軟體所支援的 Azure 虛擬機 (VM) 大小清單。
- Azure VM 大小的重要容量資訊。
- 支援的 SAP 軟體和作業系統 (OS) 和資料庫組合。
- Microsoft Azure 上 Windows 和 Linux 的必要 SAP 核心版本。
- SAP 附註 2015553 列出 Azure 中 SAP 支援 SAP 軟體部署的必要條件。
- SAP 附註 405827 列出 HANA 環境的建議文件系統。
- SAP 附注 2002167 具有 Red Hat Enterprise Linux 的建議 OS 設定。
- SAP 附注 2009879 具有適用於 Red Hat Enterprise Linux 的 SAP HANA 指導方針。
- SAP 附注 3108302 具有適用於 Red Hat Enterprise Linux 9.x 的 SAP HANA 指導方針。
- SAP 附注 2178632 有 Azure 中針對 SAP 報告的所有監視計量詳細資訊。
- SAP 附注 2191498 Azure 中具有適用於 Linux 的必要 SAP 主機代理程式版本。
- SAP 附注 2243692 有 Azure 中 Linux 上的 SAP 授權相關信息。
- SAP 附注 1999351 有更多適用於 SAP 的 Azure 增強監視擴充功能疑難解答資訊。
- SAP Community Wiki 具有適用於 Linux 的所有必要 SAP 附注。
- Azure 虛擬機器 Linux 上的 SAP 規劃和實作
- 適用於Linux上SAP的 Azure 虛擬機器 部署
- 適用於Linux上SZAP的 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,我們需要叢集中更多資源設定,以便讓 HANA 資源復原,當一個節點失去 Azure NetApp Files 上 NFS 共用的存取權時。 叢集會管理 NFS 掛接,讓它能夠監視資源的健康情況。 系統會強制執行文件系統掛接與 SAP HANA 資源之間的相依性。
.
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 虛擬網路中。
依照建立 NetApp 帳戶中的 指示,在選取的 Azure 區域中建立 NetApp 帳戶。
遵循設定 Azure NetApp Files 容量集區中的 指示,設定 Azure NetApp Files 容量集區。
本文中顯示的 HANA 架構會使用 Ultra 服務層級的單一 Azure NetApp Files 容量集區。 針對 Azure 上的 HANA 工作負載,我們建議使用 Azure NetApp Files Ultra 或 進階版 服務層級。
將子網委派給 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)
- 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 系統設定標準負載平衡器。 在設定負載平衡器期間,請考慮下列幾點。
- 前端IP組態: 建立前端IP。 選取與 DB 虛擬機相同的虛擬網路和子網。
- 後端集區: 建立後端集區並新增 DB VM。
- 輸入規則: 建立負載平衡規則。 針對這兩個負載平衡規則,請遵循相同的步驟。
- 前端IP位址:選取前端IP
- 後端集區:選取後端集區
- 檢查「高可用性埠」
- 通訊協定:TCP
- 健康情況探查:使用下列詳細數據建立健康情況探查
- 通訊協定:TCP
- 埠:[例如:625<實例否。>]
- 間隔:5
- 探查臨界值:2
- 閑置逾時(分鐘):30
- 檢查 [啟用浮動 IP]
注意
健康情況探查組態屬性 numberOfProbes,否則在入口網站中稱為「狀況不良閾值」,則不會受到尊重。 因此,若要控制連續探查成功或失敗的數目,請將屬性 “probeThreshold” 設定為 2。 目前無法使用 Azure 入口網站 來設定此屬性,因此請使用 Azure CLI 或 PowerShell 命令。
如需 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 磁碟區
[A] 建立 HANA 資料庫磁碟區的裝入點。
sudo mkdir -p /hana/data sudo mkdir -p /hana/log sudo mkdir -p /hana/shared
[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
。[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] 準備操作系統以使用 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
[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。[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 OS 組態。
根據 RHEL 版本設定下列 SAP 附注中所述的 OS:
[A] 安裝 SAP HANA。
從 HANA 2.0 SPS 01 開始,MDC 是預設選項。 當您安裝 HANA 系統時,系統會一起建立具有相同 SID 的 SYSTEMDB 和租使用者。 在某些情況下,您不希望預設租使用者。 如果您不想建立初始租使用者以及安裝,您可以遵循 SAP 附注 2629711。
從 HANA DVD 執行 hdblcm 程式。 出現提示時,輸入下列值:
- 選擇安裝:輸入 1 (用於安裝)。
- 選取更多要安裝的元件:輸入 1。
- 輸入安裝路徑 [/hana/shared]:選取 Enter 以接受預設值。
- 輸入本機主機名 [..]:選取 Enter 以接受預設值。 您是否想要將其他主機新增至系統? (y/n) [n]: n.
- 輸入 SAP HANA 系統識別碼:輸入 HN1。
- 輸入 實例號碼 [00]:輸入 03。
- 選取 [資料庫模式]/輸入索引 [1]:選取 Enter 以接受預設值。
- 選取 [系統使用量] / 輸入索引 [4]:輸入 4 (針對自定義)。
- 輸入數據磁碟區的位置 [/hana/data]:選取 Enter 以接受預設值。
- 輸入記錄磁碟區的位置 [/hana/log]:選取 Enter 以接受預設值。
- 是否限制最大記憶體配置? [n]:選取 Enter 以接受預設值。
- 輸入主機 '...' 的憑證主機名 [...]:選取 Enter 以接受預設值。
- 輸入 SAP 主機代理程式使用者 (sapadm) 密碼:輸入主機代理程式用戶密碼。
- 確認 SAP 主機代理程式使用者 (sapadm) 密碼:再次輸入主機代理程式用戶密碼以確認。
- 輸入系統 管理員 istrator (hn1adm) 密碼:輸入系統管理員密碼。
- 確認系統 管理員 istrator (hn1adm) 密碼:再次輸入系統管理員密碼以確認。
- 輸入 System 管理員 istrator Home Directory [/usr/sap/HN1/home]:選取 Enter 以接受預設值。
- 輸入系統 管理員 istrator 登入殼層 [/bin/sh]:選取 Enter 以接受預設值。
- 輸入系統 管理員 istrator 使用者識別碼 [1001]:選取 Enter 以接受預設值。
- 輸入使用者群組的標識碼 [79]:選取 Enter 以接受預設值。
- 輸入 資料庫使用者 (SYSTEM) 密碼:輸入資料庫用戶密碼。
- 確認 資料庫使用者 (SYSTEM) 密碼:再次輸入資料庫用戶密碼以確認。
- 是否在電腦重新開機後重新啟動系統? [n]:選取 Enter 以接受預設值。
- 您要繼續嗎? (y/n):驗證摘要。 輸入 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 叢集。
重要
使用以系統為基礎的 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] 將叢集置於維護模式。
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
掛接選項,如適用於 SAP HANA 的 Azure NetApp Files 上的 NFS v4.1 磁碟區中所述。 檢查 Linux 版本上的 Azure NetApp Files 是否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_data2
使用裝入點/hana/data
/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 掛接之間的條件約束。
已設定位置規則條件約束,因此只有在掛接所有節點的 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 資料庫,如檔前幾節所述。
測試叢集設定
本節說明如何測試您的設定。
開始測試之前,請確定 Pacemaker 沒有任何失敗的動作(透過計算機狀態)、沒有未預期的位置限制(例如移轉測試的剩餘專案),以及 HANA 系統復寫處於同步狀態,例如:
systemReplicationStatus
sudo su - hn1adm -c "python /usr/sap/HN1/HDB03/exe/python_support/systemReplicationStatus.py"
當節點失去對 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 叢集組態。