適用於 SUSE Linux Enterprise Server 之 Azure VM 上 NFS 的高可用性
注意
建議您部署其中一個 Azure 第一方 NFS 服務:Azure 檔案儲存體 或 NFS ANF 磁碟區上的 NFS,以將共用數據儲存在高可用性 SAP 系統中。 請注意,我們會使用 NFS 叢集來取消強調 SAP 參考架構。
本文說明如何部署虛擬機、設定虛擬機、安裝叢集架構,以及安裝高可用性 NFS 伺服器,以用來儲存高可用性 SAP 系統的共享數據。 本指南說明如何設定兩個SAP系統 NW1 和 NW2 所使用的高可用性 NFS 伺服器。 範例中的資源名稱(例如虛擬機、虛擬網路)假設您已使用 SAP 檔案伺服器範本 搭配資源前置 詞。
注意
本文包含 Microsoft 不再使用的詞彙參考。 從軟體中移除條款時,我們會從本文中移除字詞。
請先閱讀下列 SAP 附註和檔
SAP 附注 1928533,其具有:
- 部署 SAP 軟體支援的 Azure VM 大小清單
- Azure VM 大小的重要容量資訊
- 支援的 SAP 軟體和作業系統 (OS) 和資料庫組合
- Microsoft Azure 上 Windows 和 Linux 的必要 SAP 核心版本
SAP 附註 2015553 列出 Azure 中 SAP 支援 SAP 軟體部署的必要條件。
SAP 附注 2205917 針對 SUSE Linux Enterprise Server for SAP Applications 建議的 OS 設定
SAP 附注 1944799 具有適用於 SAP 應用程式的 SUSE Linux Enterprise Server 的 SAP HANA 指導方針
SAP 附注 2178632 有 Azure 中針對 SAP 報告的所有監視計量詳細資訊。
SAP 附注 2191498 Azure 中具有適用於 Linux 的必要 SAP 主機代理程式版本。
SAP 附注 2243692 有 Azure 中 Linux 上的 SAP 授權相關信息。
SAP 附注 1984787 具有 SUSE Linux Enterprise Server 12 的一般資訊。
SAP 附注 1999351 有 Azure Enhanced Monitoring Extension for SAP 的其他疑難解答資訊。
SAP Community WIKI 具有適用於 Linux 的所有必要 SAP 附注。
SUSE Linux Enterprise 高可用性擴充功能 12 SP3 最佳做法指南
- 具有DRBD和 Pacemaker 的高可用性 NFS 儲存體
SUSE Linux Enterprise Server for SAP Applications 12 SP3 最佳做法指南
概觀
若要達到高可用性,SAP NetWeaver 需要 NFS 伺服器。 NFS 伺服器是在個別的叢集中設定,而且可供多個 SAP 系統使用。
NFS 伺服器會針對使用此 NFS 伺服器的每個 SAP 系統,使用專用的虛擬主機名和虛擬 IP 位址。 在 Azure 上必須有負載平衡器才能使用虛擬 IP 位址。 呈現的組態會顯示負載平衡器,其中包含:
- NW1 的前端 IP 位址 10.0.0.4
- NW2 前端 IP 位址 10.0.0.5
- NW1 的探查埠 61000
- NW2 的探查埠 61001
設定高可用性 NFS 伺服器
透過 Azure 入口網站 手動部署Linux
本檔假設您已部署資源群組、Azure 虛擬網絡 和子網。
為 NFS 伺服器部署兩部虛擬機。 選擇 SAP 系統支援的合適 SLES 映像。 您可以在任一可用性選項中部署 VM - 擴展集、可用性區域或可用性設定組。
設定 Azure 負載平衡器
請遵循 建立負載平衡器 指南來設定 NFS 伺服器高可用性的標準負載平衡器。 在負載平衡器的設定期間,請考慮下列幾點。
- 前端IP組態: 建立兩個前端IP。 選取與 NFS 伺服器相同的虛擬網路和子網。
- 後端集區: 建立後端集區並新增NFS 伺服器 VM。
- 輸入規則: 建立兩個負載平衡規則,一個用於 NW1,另一個用於 NW2。 針對這兩個負載平衡規則,請遵循相同的步驟。
- 前端IP位址:選取前端IP
- 後端集區:選取後端集區
- 檢查「高可用性埠」
- 通訊協定:TCP
- 健康情況探查:使用下列詳細數據建立健康情況探查(適用於 NW1 和 NW2)
- 通訊協定:TCP
- 埠:[例如:NW1 的 61000,NW2 為 61001]
- 間隔:5
- 探查臨界值:2
- 閑置逾時(分鐘):30
- 檢查 [啟用浮動 IP]
注意
健康情況探查組態屬性 numberOfProbes,否則在入口網站中稱為「狀況不良閾值」,則不會受到尊重。 因此,若要控制連續探查成功或失敗的數目,請將屬性 “probeThreshold” 設定為 2。 目前無法使用 Azure 入口網站 來設定此屬性,因此請使用 Azure CLI 或 PowerShell 命令。
重要
負載平衡案例中的 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健康情況探查。 - 若要防止 saptune 將手動設定
net.ipv4.tcp_timestamps
的值0
從 變更回1
,您應該將 saptune 版本更新為 3.1.1 或更高版本。 如需詳細資訊,請參閱 saptune 3.1.1 – 我需要更新嗎?。
建立 Pacemaker 叢集
請遵循在 Azure 中的 SUSE Linux Enterprise Server 上設定 Pacemaker 中的步驟,為此 NFS 伺服器建立基本的 Pacemaker 叢集。
設定 NFS 伺服器
下列專案前面 加上 [A] - 適用於所有節點 [ 1] - 僅適用於節點 1 或 [2] - 僅適用於節點 2。
[A] 安裝程式主機名解析
您可以使用 DNS 伺服器,或修改所有節點上的 /etc/hosts。 此範例示範如何使用 /etc/hosts 檔案。 在下列命令中取代IP位址和主機名
sudo vi /etc/hosts
將下列幾行插入 /etc/hosts。 變更IP位址和主機名以符合您的環境
# IP address of the load balancer frontend configuration for NFS 10.0.0.4 nw1-nfs 10.0.0.5 nw2-nfs
[A] 啟用 NFS 伺服器
建立根 NFS 匯出專案
sudo sh -c 'echo /srv/nfs/ *\(rw,no_root_squash,fsid=0\)>/etc/exports' sudo mkdir /srv/nfs/
[A] 安裝 drbd 元件
sudo zypper install drbd drbd-kmp-default drbd-utils
[A] 建立 drbd 裝置的數據分割
列出所有可用的數據磁碟
sudo ls /dev/disk/azure/scsi1/ # Example output # lun0 lun1
為每個數據磁碟建立數據分割
sudo sh -c 'echo -e "n\n\n\n\n\nw\n" | fdisk /dev/disk/azure/scsi1/lun0' sudo sh -c 'echo -e "n\n\n\n\n\nw\n" | fdisk /dev/disk/azure/scsi1/lun1'
[A] 建立 LVM 組態
列出所有可用的分割區
ls /dev/disk/azure/scsi1/lun*-part* # Example output # /dev/disk/azure/scsi1/lun0-part1 /dev/disk/azure/scsi1/lun1-part1
為每個分割區建立 LVM 磁碟區
sudo pvcreate /dev/disk/azure/scsi1/lun0-part1 sudo vgcreate vg-NW1-NFS /dev/disk/azure/scsi1/lun0-part1 sudo lvcreate -l 100%FREE -n NW1 vg-NW1-NFS sudo pvcreate /dev/disk/azure/scsi1/lun1-part1 sudo vgcreate vg-NW2-NFS /dev/disk/azure/scsi1/lun1-part1 sudo lvcreate -l 100%FREE -n NW2 vg-NW2-NFS
[A] 設定 drbd
sudo vi /etc/drbd.conf
請確定drbd.conf 檔案包含下列兩行
include "drbd.d/global_common.conf"; include "drbd.d/*.res";
變更全域 drbd 組態
sudo vi /etc/drbd.d/global_common.conf
將下列專案新增至處理程式和 net 區段。
global { usage-count no; } common { handlers { fence-peer "/usr/lib/drbd/crm-fence-peer.9.sh"; after-resync-target "/usr/lib/drbd/crm-unfence-peer.9.sh"; split-brain "/usr/lib/drbd/notify-split-brain.sh root"; pri-lost-after-sb "/usr/lib/drbd/notify-pri-lost-after-sb.sh; /usr/lib/drbd/notify-emergency-reboot.sh; echo b > /proc/sysrq-trigger ; reboot -f"; } startup { wfc-timeout 0; } options { } disk { md-flushes yes; disk-flushes yes; c-plan-ahead 1; c-min-rate 100M; c-fill-target 20M; c-max-rate 4G; } net { after-sb-0pri discard-younger-primary; after-sb-1pri discard-secondary; after-sb-2pri call-pri-lost-after-sb; protocol C; tcp-cork yes; max-buffers 20000; max-epoch-size 20000; sndbuf-size 0; rcvbuf-size 0; } }
[A] 建立 NFS drbd 裝置
sudo vi /etc/drbd.d/NW1-nfs.res
插入新drbd裝置的設定並結束
resource NW1-nfs { protocol C; disk { on-io-error detach; } net { fencing resource-and-stonith; } on prod-nfs-0 { address 10.0.0.6:7790; device /dev/drbd0; disk /dev/vg-NW1-NFS/NW1; meta-disk internal; } on prod-nfs-1 { address 10.0.0.7:7790; device /dev/drbd0; disk /dev/vg-NW1-NFS/NW1; meta-disk internal; } }
sudo vi /etc/drbd.d/NW2-nfs.res
插入新drbd裝置的設定並結束
resource NW2-nfs { protocol C; disk { on-io-error detach; } net { fencing resource-and-stonith; } on prod-nfs-0 { address 10.0.0.6:7791; device /dev/drbd1; disk /dev/vg-NW2-NFS/NW2; meta-disk internal; } on prod-nfs-1 { address 10.0.0.7:7791; device /dev/drbd1; disk /dev/vg-NW2-NFS/NW2; meta-disk internal; } }
建立drbd裝置並加以啟動
sudo drbdadm create-md NW1-nfs sudo drbdadm create-md NW2-nfs sudo drbdadm up NW1-nfs sudo drbdadm up NW2-nfs
[1] 略過初始同步處理
sudo drbdadm new-current-uuid --clear-bitmap NW1-nfs sudo drbdadm new-current-uuid --clear-bitmap NW2-nfs
[1] 設定主要節點
sudo drbdadm primary --force NW1-nfs sudo drbdadm primary --force NW2-nfs
[1] 等到新的drbd裝置同步處理
sudo drbdsetup wait-sync-resource NW1-nfs sudo drbdsetup wait-sync-resource NW2-nfs
[1] 在drbd裝置上建立文件系統
sudo mkfs.xfs /dev/drbd0 sudo mkdir /srv/nfs/NW1 sudo chattr +i /srv/nfs/NW1 sudo mount -t xfs /dev/drbd0 /srv/nfs/NW1 sudo mkdir /srv/nfs/NW1/sidsys sudo mkdir /srv/nfs/NW1/sapmntsid sudo mkdir /srv/nfs/NW1/trans sudo mkdir /srv/nfs/NW1/ASCS sudo mkdir /srv/nfs/NW1/ASCSERS sudo mkdir /srv/nfs/NW1/SCS sudo mkdir /srv/nfs/NW1/SCSERS sudo umount /srv/nfs/NW1 sudo mkfs.xfs /dev/drbd1 sudo mkdir /srv/nfs/NW2 sudo chattr +i /srv/nfs/NW2 sudo mount -t xfs /dev/drbd1 /srv/nfs/NW2 sudo mkdir /srv/nfs/NW2/sidsys sudo mkdir /srv/nfs/NW2/sapmntsid sudo mkdir /srv/nfs/NW2/trans sudo mkdir /srv/nfs/NW2/ASCS sudo mkdir /srv/nfs/NW2/ASCSERS sudo mkdir /srv/nfs/NW2/SCS sudo mkdir /srv/nfs/NW2/SCSERS sudo umount /srv/nfs/NW2
[A] 設定 drbd 分割腦偵測
使用drbd將數據從一個主機同步到另一個主機時,可能會發生所謂的分割大腦。 分割大腦是這兩個叢集節點將drbd裝置升級為主要節點且未同步的情況。這可能是一個罕見的情況,但你仍然想儘快處理和解決分裂的大腦。 因此,當分裂大腦發生時,必須收到通知。
閱讀 官方 drbd 檔 ,瞭解如何設定分割大腦通知。
您也可以自動從分割大腦案例中復原。 如需詳細資訊,請參閱 自動分割腦力復原原則
設定叢集架構
[1] 將 SAP 系統 NW1 的 NFS drbd 裝置新增至叢集設定
重要
最近的測試顯示,netcat 因待處理專案而停止回應要求的情況,以及只處理一個連線的限制。 netcat 資源會停止接聽 Azure Load Balancer 要求,而浮動 IP 變成無法使用。
針對現有的 Pacemaker 叢集,我們過去建議使用 socat 取代 netcat。 目前,建議您使用屬於套件資源代理程式的 azure-lb 資源代理程式,並符合下列套件版本需求:- 針對 SLES 12 SP4/SP5,版本至少必須是 resource-agents-4.3.018.a7fb5035-3.30.1。
- 針對 SLES 15/15 SP1,版本至少必須是 resource-agents-4.3.0184.6ee15eb2-4.13.1。
請注意,變更需要短暫的停機時間。
針對現有的 Pacemaker 叢集,如果設定已變更為使用 socat,如 Azure Load-Balancer 偵測強化中所述,就不需要立即切換至 azure-lb 資源代理程式。sudo crm configure rsc_defaults resource-stickiness="200" # Enable maintenance mode sudo crm configure property maintenance-mode=true sudo crm configure primitive drbd_NW1_nfs \ ocf:linbit:drbd \ params drbd_resource="NW1-nfs" \ op monitor interval="15" role="Master" \ op monitor interval="30" role="Slave" sudo crm configure ms ms-drbd_NW1_nfs drbd_NW1_nfs \ meta master-max="1" master-node-max="1" clone-max="2" \ clone-node-max="1" notify="true" interleave="true" sudo crm configure primitive fs_NW1_sapmnt \ ocf:heartbeat:Filesystem \ params device=/dev/drbd0 \ directory=/srv/nfs/NW1 \ fstype=xfs \ op monitor interval="10s" sudo crm configure primitive nfsserver systemd:nfs-server \ op monitor interval="30s" sudo crm configure clone cl-nfsserver nfsserver sudo crm configure primitive exportfs_NW1 \ ocf:heartbeat:exportfs \ params directory="/srv/nfs/NW1" \ options="rw,no_root_squash,crossmnt" clientspec="*" fsid=1 wait_for_leasetime_on_stop=true op monitor interval="30s" sudo crm configure primitive vip_NW1_nfs IPaddr2 \ params ip=10.0.0.4 op monitor interval=10 timeout=20 sudo crm configure primitive nc_NW1_nfs azure-lb port=61000 \ op monitor timeout=20s interval=10 sudo crm configure group g-NW1_nfs \ fs_NW1_sapmnt exportfs_NW1 nc_NW1_nfs vip_NW1_nfs sudo crm configure order o-NW1_drbd_before_nfs inf: \ ms-drbd_NW1_nfs:promote g-NW1_nfs:start sudo crm configure colocation col-NW1_nfs_on_drbd inf: \ g-NW1_nfs ms-drbd_NW1_nfs:Master
[1] 將 SAP 系統 NW2 的 NFS drbd 裝置新增至叢集設定
# Enable maintenance mode sudo crm configure property maintenance-mode=true sudo crm configure primitive drbd_NW2_nfs \ ocf:linbit:drbd \ params drbd_resource="NW2-nfs" \ op monitor interval="15" role="Master" \ op monitor interval="30" role="Slave" sudo crm configure ms ms-drbd_NW2_nfs drbd_NW2_nfs \ meta master-max="1" master-node-max="1" clone-max="2" \ clone-node-max="1" notify="true" interleave="true" sudo crm configure primitive fs_NW2_sapmnt \ ocf:heartbeat:Filesystem \ params device=/dev/drbd1 \ directory=/srv/nfs/NW2 \ fstype=xfs \ op monitor interval="10s" sudo crm configure primitive exportfs_NW2 \ ocf:heartbeat:exportfs \ params directory="/srv/nfs/NW2" \ options="rw,no_root_squash,crossmnt" clientspec="*" fsid=2 wait_for_leasetime_on_stop=true op monitor interval="30s" sudo crm configure primitive vip_NW2_nfs IPaddr2 \ params ip=10.0.0.5 op monitor interval=10 timeout=20 sudo crm configure primitive nc_NW2_nfs azure-lb port=61001 \ op monitor timeout=20s interval=10 sudo crm configure group g-NW2_nfs \ fs_NW2_sapmnt exportfs_NW2 nc_NW2_nfs vip_NW2_nfs sudo crm configure order o-NW2_drbd_before_nfs inf: \ ms-drbd_NW2_nfs:promote g-NW2_nfs:start sudo crm configure colocation col-NW2_nfs_on_drbd inf: \ g-NW2_nfs ms-drbd_NW2_nfs:Master
crossmnt
叢集資源中的exportfs
選項會出現在我們的檔中,以便與舊版 SLES 版本回溯相容性。[1] 停用維護模式
sudo crm configure property maintenance-mode=false
下一步
- 安裝SCS和資料庫
- 適用於 SAP 的 Azure 虛擬機器 規劃和實作
- 適用於 SAP 的 Azure 虛擬機器 部署
- 適用於 SAP 的 Azure 虛擬機器 DBMS 部署
- 若要瞭解如何建立高可用性和規劃 Azure VM 上的 SAP HANA 災害復原,請參閱 SAP HANA on Azure 虛擬機器 的高可用性 (VM)