SUSE Enterprise Linux 上具有 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 附註 1928533 具有:
- SAP 軟體部署支援的 Azure VM 大小清單。
- 每個 Azure 虛擬機器 (VM) 大小的重要容量資訊。
- 支援的 SAP 軟體,以及作業系統 (OS) 與資料庫組合。
- Azure 上 Windows 和 Linux 所需的 SAP 核心版本。
- SAP Note 2015553 列出 Azure 中 SAP 支援的 SAP 軟體部署先決條件。
- SAP 附註 405827 列出 HANA 環境建議檔案系統。
- SAP 附註 2684254,其中具有針對 SUSE Linux Enterprise Server (SLES) 15/SLES 建議的 OS 設定 (適用於 SAP 應用程式 15)。
- SAP 附註 1944799 具有 SLES 安裝的 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 附註 1900823 包含 SAP HANA 儲存體需求的相關資訊。
- SUSE SAP 高可用性 (HA) 最佳做法指南:包含設定 NetWeaver 和 SAP HANA 系統複寫內部部署的所有必要資訊 (可供用於一般基準)。 它們提供更詳細的資訊。
- SAP Community Wiki 具有 Linux 所需的所有 SAP 附註。
- 適用於 SAP on Linux 的 Azure 虛擬機器規劃和實作
- 在 Linux 上為 SAP 進行 Azure 虛擬機器部署
- 適用於 SAP on Linux 的 Azure 虛擬機器 DBMS 部署
- 一般 SLES 文件:
- Azure 專用 SLES 文件:
- 使用 Azure NetApp Files 在 Microsoft Azure 上的 NetApp SAP 應用程式
- Azure NetApp Files for SAP HANA 上的 NFS v4.1 磁碟區
- 適用於 SAP on Linux 的 Azure 虛擬機器規劃和實作
注意
本文參考了 Microsoft 不再使用的詞彙。 從軟體中移除該字詞時,我們也會將其從本文中移除。
概觀
傳統上,在擴大環境中,會從本機儲存體掛接 SAP HANA 的所有檔案系統。 在 SUSE Enterprise Linux 上設定 SAP HANA 系統複寫的HA 是發佈於在 SLES 上設定 SAP HANA 系統複寫中。
若要在 Azure NetApp Files NFS 共用上達到相應增加系統的 SAP HANA HA,我們需要叢集中的額外資源設定。 需要此設定,讓 HANA 資源可以在一個節點失去 Azure NetApp Files 上 NFS 共用的存取權時復原。
SAP HANA 檔案系統會在每個節點上藉由使用 Azure NetApp Files 掛接於 NFS 共用上。 檔案系統 /hana/data、/hana/log 和 /hana/shared 對每個節點而言都是唯一的。
掛接於 node1 (hanadb1):
- 10.3.1.4:/hanadb1-data-mnt00001 (位於 /hana/data 上)
- 10.3.1.4:/hanadb1-log-mnt00001 (位於 /hana/log 上)
- 10.3.1.4:/hanadb1-shared-mnt00001 (位於 /hana/shared 上)
掛接於 node2 (hanadb2):
- 10.3.1.4:/hanadb2-data-mnt00001 (位於 /hana/data 上)
- 10.3.1.4:/hanadb2-log-mnt00001 (位於 /hana/log 上)
- 10.3.1.4:/hanadb2-shared-mnt0001 (位於 /hana/shared 上)
注意
檔案系統 /hana/shared、/hana/data 和 /hana/log 不會在兩個節點之間共用。 每個叢集節點都有自己的個別檔案系統。
SAP HA HANA 系統複寫設定會使用專用虛擬主機名稱和虛擬 IP 位址。 在 Azure 上必須有負載平衡器才能使用虛擬 IP 位址。 顯示的設定會顯示以下條件的負載平衡器:
- 前端設定 IP 位址:10.3.0.50 (針對 hn1-db)
- 探查連接埠: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 時,請注意 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 應用程式磁碟區群組。
會針對 NFSv4.1 /hana/shared 磁碟區呈現本文中掛接 /hana/shared 的所有命令。 如果您已將 /hana/shared 磁碟區部署為 NFSv3 磁碟區,請不要忘了針對 NFSv3 調整 /hana/shared 的掛接命令。
部署 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 Files 磁碟區的 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 上:
- Volume hanadb1-data-mnt00001 (nfs://10.3.1.4:/hanadb1-data-mnt00001)
- Volume hanadb1-log-mnt00001 (nfs://10.3.1.4:/hanadb1-log-mnt00001)
- Volume hanadb1-shared-mnt00001 (nfs://10.3.1.4:/hanadb1-shared-mnt00001)
在 hanadb2 上:
- Volume hanadb2-data-mnt00001 (nfs://10.3.1.4:/hanadb2-data-mnt00001)
- Volume 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 的 VM。 選擇適用於 HANA 系統的 SLES 映像。 您可以在任一可用性選項中部署 VM:虛擬機擴展集、可用性區域或可用性設定組。
重要
請確定您選取的作業系統您計畫在部署使用的特定 VM 類型上已獲得 SAP HANA 認證。 您可以在 SAP Hana 認證 IaaS 平台中查閱 SAP Hana 認證的 VM 類型和作業系統版本。 請務必查閱 VM 類型的詳細資料,以取得 SAP Hana 針對特定 VM 類型支援的作業系統版本完整清單。
設定 Azure Load Balancer
在 VM 設定期間,您可以選擇在網路區段中建立或選取現有的負載平衡器。 請遵循後續步驟,為 HANA 資料庫的 HA 設定設定標準負載平衡器。
請遵循建立負載平衡器中的步驟,使用 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 位址) Standard Azure Load Balancer 的後端集區時,除非另外設定來允許路由傳送至公用端點,否則不會有輸出網際網路連線能力。 如需更多如何實現輸出連線能力的詳細資訊,請參閱在 SAP 高可用性案例中使用 Azure Standard Load Balancer 實 VM 的公用端點連線能力。
重要
- 請勿在位於 Load Balancer 後方的 Azure VM 上啟用 TCP 時間戳記。 啟用 TCP 時間戳記會導致健全狀態探查失敗。 將
net.ipv4.tcp_timestamps
參數設定為0
。 如需詳細資訊,請參閱負載平衡器健全狀態探查和 SAP 附註 2382421。 - 若要防止 saptune 將手動設定
net.ipv4.tcp_timestamps
值從0
變更回1
,請將 saptune 版本更新為 3.1.1 或更高版本。 如需詳細資訊,請參閱 saptune 3.1.1 - 我需要更新嗎?。
掛接 Azure NetApp Files 磁碟區
[A] 建立 HANA 資料庫磁碟區的掛接點。
sudo mkdir -p /hana/data/HN1/mnt00001 sudo mkdir -p /hana/log/HN1/mnt00001 sudo mkdir -p /hana/shared/HN1
[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。
[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
掛接選項,如 Azure NetApp Files for SAP HANA 上的 NFS v4.1 磁碟區中所述。 檢查 Linux 版本上的 Azure NetApp 檔案是否支援nconnect
。[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
[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 安裝
[A] 設定所有主機的主機名稱解析。
您可以使用 DNS 伺服器,或修改所有節點上的
/etc/hosts
檔案。 此範例說明如何使用/etc/hosts
檔案。 請取代下列命令中的 IP 位址和主機名稱:sudo vi /etc/hosts
在
/etc/hosts
檔案中插入下列行。 變更 IP 位址和主機名稱以符合您的環境。10.3.0.4 hanadb1 10.3.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] 設定 SLES for HANA。
根據您的 SLES 版本來設定 SLES,如下方 SAP 附註所述:
[A] 安裝 SAP HANA。
從 HANA 2.0 SPS 01 開始,多租用戶資料庫容器 (MDC) 是預設選項。 當您安裝 HANA 系統時,將一併建立 SYSTEMDB 和具有相同 SID 的租用戶。 在某些情況下,您不想要預設租用戶。 如果不想要建立初始租用戶以及安裝,請遵循 SAP 附註 2629711 中的指示。
從 HANA 安裝軟體目錄啟動
hdblcm
程式。./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>
設定 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/SAPHanaSR-angi 和 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
建立檔案系統資源
文件系統 /hana/shared/SID 是 HANA 作業的必要專案,也是用於判斷 HANA 狀態的 Pacemaker 監視動作。 實作資源代理程式,以監視並採取行動,以防發生失敗。 區段包含兩個選項,一個用於 SAPHanaSR
,另一個選項用於 SAPHanaSR-angi
。
建立假檔案系統叢集資源。 如果存取 NFS 掛接的文件系統 /hana/shared 時發生問題,會監視並報告失敗。 這可讓叢集觸發容錯移轉,以免存取 /hana/shared 時發生問題。 如需詳細資訊,請參閱處理進行 HANA 系統複寫時 SUSE HA 叢集中失敗的 NFS 共用。
[A] 在兩個節點上建立目錄結構。
sudo mkdir -p /hana/shared/HN1/check sudo mkdir -p /hana/shared/check
[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
[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 文件集。
測試叢集設定
本節將說明如何測試您的設定。
開始測試之前,請確定 Pacemaker 沒有任何失敗的動作 (透過 crm status)、沒有未預期的位置條件約束 (例如,移轉測試的剩餘項目)。 此外,請確定 HANA 系統複寫處於同步狀態,例如使用
systemReplicationStatus
。sudo su - hn1adm -c "python /usr/sap/HN1/HDB03/exe/python_support/systemReplicationStatus.py"
透過使用此命令確認 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
當節點關閉時,確認失敗案例的叢集組態。 下列範例顯示關閉節點 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
在節點無法存取 NFS 共用 (/hana/shared) 時,驗證失敗案例的叢集設定。
SAP HANA 資源代理程式取決於 /hana/shared 所儲存的二進位檔,以便在容錯移轉期間執行作業。 在所呈現的案例中,是透過 NFS 來裝載 /hana/shared 檔案系統。
如果其中一部伺服器無法存取 NFS 共用,則模擬這類失敗十分困難。 作為測試,您可以將檔案系統重新掛接為唯讀。 如果作用中節點上遺失 /hana/shared 的存取權,則此方式會驗證叢集可以進行容錯移轉。
預期的結果: 在將 /hana/shared 設為唯獨文件系統時,資源
hana_shared1
的OCF_CHECK_LEVEL
屬性會在文件系統上執行讀取/寫入作業失敗。 失敗,因為這無法在文件系統上寫入任何項目,並執行 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 叢集設定。