在 SUSE Linux Enterprise Server 上使用 HSR 的 SAP HANA 向外延展系統高可用性

本文說明如何在 Azure SUSE Linux Enterprise Server 虛擬機 (VM) 上使用 HANA 系統復寫 (HSR) 和 Pacemaker,在向外延展設定中部署高可用性 SAP HANA 系統。 所呈現架構中的共享文件系統會掛接 NFS,並由 azure NetApp FilesNFS 共用在 Azure 檔案儲存體 上提供。

在範例組態、安裝命令等中,HANA 實例為 03,HANA 系統識別碼為 HN1

開始之前,請參閱下列 SAP 附注和檔:

概觀

若要達到 HANA 向外延展安裝的 HANA 高可用性,其中一種方法是設定 HANA 系統複寫,並使用 Pacemaker 叢集來保護解決方案,以允許自動故障轉移。 當作用中節點失敗時,叢集會將 HANA 資源故障轉移至其他月臺。
呈現的組態會顯示每個站臺上的三個 HANA 節點,加上多數製作者節點,以防止分割腦案例。 您可以調整指示,以包含更多 VM 作為 HANA DB 節點。

所呈現架構中的 HANA 共用文件系統/hana/shared可由 azure NetApp FilesNFS 共用 Azure 檔案儲存體 提供。 HANA 共用文件系統是掛接在相同 HANA 系統復寫網站中每個 HANA 節點上的 NFS。 文件系統 /hana/data/hana/log 是本機文件系統,不會在 HANA DB 節點之間共用。 SAP HANA 將會以非共用模式安裝。

如需建議的 SAP HANA 記憶體組態,請參閱 SAP HANA Azure VM 記憶體組態

重要

如果在 Azure NetApp Files 上部署所有 HANA 檔案系統,針對效能是關鍵的生產系統,建議您評估及考慮針對 SAP HANA 使用 Azure NetApp Files 應用程式磁碟區群組。

警告

不支援在 Azure 檔案儲存體 上的 NFS 上部署 /hana/data/hana/log

SAP HANA scale-out with HSR and Pacemaker cluster on SLES

在上圖中,三個子網會在一個 Azure 虛擬網路內呈現,並遵循 SAP HANA 網路建議:

  • 用於客戶端通訊 - client 10.23.0.0/24
  • 用於內部 HANA 節點間通訊 - inter 10.23.1.128/26
  • 適用於 HANA 系統復寫 - hsr 10.23.1.192/26

/hana/data 本機磁碟上部署 和 /hana/log 時,不需要部署個別的子網和個別的虛擬網路卡,以便與記憶體通訊。

如果您使用 Azure NetApp Files,則 的 /hana/sharedNFS 磁碟區會部署在個別的子網中, 委派給 Azure NetApp Filesanf 10.23.1.0/26。

準備基礎結構

在後續指示中,我們假設您已建立資源群組、具有三個 Azure 網路子網的 Azure 虛擬網路: clientinterhsr

透過 Azure 入口網站部署Linux虛擬機

  1. 部署 Azure VM。

    針對本文件中顯示的組態,部署七部虛擬機:

    • 三部虛擬機作為 HANA 複寫月臺 1 的 HANA DB 節點: hana-s1-db1hana-s1-db2hana-s1-db3
    • 三部虛擬機作為 HANA 複寫網站 2 的 HANA DB 節點: hana-s2-db1hana-s2-db2hana-s2-db3
    • 作為多數製造商小型虛擬機:hana-s-mm

    部署為 SAP DB HANA 節點的 VM 應該經 SAP for HANA 認證,如 SAP HANA 硬體目錄中發佈。 部署 HANA DB 節點時,請確定 已選取 [加速網络 ]。

    對於多數製造商節點,您可以部署小型 VM,因為此 VM 不會執行任何 SAP HANA 資源。 大部分的製作者 VM 會用於叢集組態,以在分割腦案例中達到奇數的叢集節點數目。 在此範例中,多數製造商 VM 只需要子網中的 client 一個虛擬網路介面。

    為和/hana/log部署本機受控磁碟/hana/data。 SAP HANA Azure VM 記憶體組態會說明 和 /hana/data/hana/log 的最低建議記憶體組態。

    為虛擬網路子網中的每個 client VM 部署主要網路介面。
    透過 Azure 入口網站 部署 VM 時,會自動產生網路介面名稱。 為了簡單起見,我們將參考自動產生的主要網路介面,這些網路介面會附加至 client Azure 虛擬網路子網,作為 hana-s1-db1-client、hana-s1-db2-clienthana-s1-db3-client 等等。

    重要

    • 請確定您選取的 OS 是針對您所使用之特定 VM 類型上的 SAP HANA 認證。 如需這些類型的 SAP HANA 認證 VM 類型和 OS 版本清單,請移至 SAP HANA 認證的 IaaS 平台 網站。 按兩下列出的 VM 類型詳細資料,以取得該類型 SAP HANA 支援的 OS 版本完整清單。
    • 如果您選擇在 Azure 檔案儲存體 上的 NFS 上部署/hana/shared,建議您在 SLES 15 SP2 和更新版本上部署。
  2. 在虛擬網路子網中為每個 HANA DB 虛擬機建立六個網路介面(在此範例中為 hana-s1-db1-inter、hana-s1-db2-interhana-s1-db3-inter、hana-s2-db1-inter、hana-s2-db2-interhana-s2-db3-inter)。 inter

  3. 在虛擬網路子網中為每個 HANA DB 虛擬機建立六個網路介面(在此範例中,hana-s1-db1-hsr、hana-s1-db2-hsr、hana-s1-db3-hsrhana-s2-db1-hsrhana-s2-db2-hsr 和 hana-s2-db3-hsr)。hsr

  4. 將新建立的虛擬網路介面附加至對應的虛擬機:

    1. 移至 Azure 入口網站 中的虛擬機。
    2. 在左窗格中,選取 [虛擬機器]。 篩選虛擬機名稱(例如 hana-s1-db1),然後選取虛擬機。
    3. 在 [概 觀] 窗格中,選取 [ 停止 ] 以解除分配虛擬機。
    4. 選取 [ 網络],然後鏈接網路介面。 在 [ 鏈接網路介面] 下拉式清單中,選取已建立的 interhsr 子網網路介面。
    5. 選取 [儲存]。
    6. 針對剩餘的虛擬機重複步驟 b 到 e(在我們的範例中為 hana-s1-db2、hana-s1-db3、hana-s2-db1hana-s2-db2hana-s2-db3)。
    7. 暫時讓虛擬機處於停止狀態。 接下來,我們將為所有新連結的網路介面啟用 加速網路
  5. 執行下列步驟,為 interhsr 子網的其他網路介面啟用加速網路功能:

    1. 在 Azure 入口網站 中開啟 Azure Cloud Shell

    2. 執行下列命令,為附加至 interhsr 子網的其他網路介面啟用加速網路。

      az network nic update --id /subscriptions/your subscription/resourceGroups/your resource group/providers/Microsoft.Network/networkInterfaces/hana-s1-db1-inter --accelerated-networking true
      az network nic update --id /subscriptions/your subscription/resourceGroups/your resource group/providers/Microsoft.Network/networkInterfaces/hana-s1-db2-inter --accelerated-networking true
      az network nic update --id /subscriptions/your subscription/resourceGroups/your resource group/providers/Microsoft.Network/networkInterfaces/hana-s1-db3-inter --accelerated-networking true
      az network nic update --id /subscriptions/your subscription/resourceGroups/your resource group/providers/Microsoft.Network/networkInterfaces/hana-s2-db1-inter --accelerated-networking true
      az network nic update --id /subscriptions/your subscription/resourceGroups/your resource group/providers/Microsoft.Network/networkInterfaces/hana-s2-db2-inter --accelerated-networking true
      az network nic update --id /subscriptions/your subscription/resourceGroups/your resource group/providers/Microsoft.Network/networkInterfaces/hana-s2-db3-inter --accelerated-networking true
      
      az network nic update --id /subscriptions/your subscription/resourceGroups/your resource group/providers/Microsoft.Network/networkInterfaces/hana-s1-db1-hsr --accelerated-networking true
      az network nic update --id /subscriptions/your subscription/resourceGroups/your resource group/providers/Microsoft.Network/networkInterfaces/hana-s1-db2-hsr --accelerated-networking true
      az network nic update --id /subscriptions/your subscription/resourceGroups/your resource group/providers/Microsoft.Network/networkInterfaces/hana-s1-db3-hsr --accelerated-networking true
      az network nic update --id /subscriptions/your subscription/resourceGroups/your resource group/providers/Microsoft.Network/networkInterfaces/hana-s2-db1-hsr --accelerated-networking true
      az network nic update --id /subscriptions/your subscription/resourceGroups/your resource group/providers/Microsoft.Network/networkInterfaces/hana-s2-db2-hsr --accelerated-networking true
      az network nic update --id /subscriptions/your subscription/resourceGroups/your resource group/providers/Microsoft.Network/networkInterfaces/hana-s2-db3-hsr --accelerated-networking true
      
  6. 啟動 HANA DB 虛擬機

設定 Azure 負載平衡器

在 VM 設定期間,您可以選擇在網路區段中建立或選取結束的負載平衡器。 請遵循下列步驟來設定標準負載平衡器,以設定 HANA 資料庫的高可用性設定。

注意

  • 針對 HANA 向外延展,在後端集區中新增虛擬機時,選取子網的 NIC client
  • Azure CLI 和 PowerShell 中的一組完整命令會在後端集區中新增具有主要 NIC 的 VM。

請遵循建立負載平衡器指南,使用 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 命令。

重要

負載平衡案例中的 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 – 我需要更新嗎?

部署 NFS

有兩個選項可用來部署 的 /hana/sharedAzure 原生 NFS。 您可以在 Azure NetApp FilesAzure 檔案儲存體 上的 NFS 共用上部署 NFS 磁碟區。 Azure 檔案支援 NFSv4.1 通訊協定,Azure NetApp 檔案上的 NFS 同時支援 NFSv4.1 和 NFSv3。

下一節說明部署 NFS 的步驟 - 您只需要 選取其中一個選項

提示

您選擇在 Azure NetApp Files 上的 Azure 檔案儲存體NFS 磁碟區上部署 /hana/sharedNFS 共用。

部署 Azure NetApp Files 基礎結構

部署文件系統的 /hana/shared ANF 磁碟區。 每個 HANA 系統復寫網站都需要個別 /hana/shared 的磁碟區。 如需詳細資訊,請參閱 設定 Azure NetApp Files 基礎結構

在此範例中,使用了下列 Azure NetApp Files 磁碟區:

  • volume HN1-shared-s1 (nfs://10.23.1.7/ HN1-shared-s1
  • volume HN1-shared-s2 (nfs://10.23.1.7/ HN1-shared-s2

在 Azure 檔案儲存體 基礎結構上部署 NFS

為檔案系統部署 Azure 檔案儲存體 NFS 共用/hana/shared。 每個 HANA 系統復寫網站都需要個別 /hana/shared Azure 檔案儲存體 NFS 共用。 如需詳細資訊,請參閱 如何建立 NFS 共用

在此範例中,使用了下列 Azure 檔案儲存體 NFS 共用:

  • share hn1-shared-s1 (sapnfsafs.file.core.windows.net:/sapnfsafs/hn1-shared-s1)
  • share hn1-shared-s2 (sapnfsafs.file.core.windows.net:/sapnfsafs/hn1-shared-s2)

操作系統設定和準備

下一節中的指示前面會加上下列其中一個縮寫:

  • [A]:適用於所有節點,包括多數製造商
  • [AH]:適用於所有 HANA DB 節點
  • [M]: 僅適用於多數製造商節點
  • [AH1]:適用於月臺 1 上的所有 HANA DB 節點
  • [AH2]:適用於月臺 2 上的所有 HANA DB 節點
  • [1]:僅適用於 HANA DB 節點 1,SITE 1
  • [2]:僅適用於 HANA DB 節點 1,SITE 2

執行下列步驟來設定和準備您的OS:

  1. [A] 維護虛擬機上的主機檔案。 包含所有子網的專案。 這個範例已將下列專案新增至 /etc/hosts

    # Client subnet
    10.23.0.19      hana-s1-db1
    10.23.0.20      hana-s1-db2
    10.23.0.21      hana-s1-db3
    10.23.0.22      hana-s2-db1
    10.23.0.23      hana-s2-db2
    10.23.0.24      hana-s2-db3
    10.23.0.25      hana-s-mm    
    
    # Internode subnet
    10.23.1.132     hana-s1-db1-inter
    10.23.1.133     hana-s1-db2-inter
    10.23.1.134     hana-s1-db3-inter
    10.23.1.135     hana-s2-db1-inter
    10.23.1.136     hana-s2-db2-inter
    10.23.1.137     hana-s2-db3-inter
    
    # HSR subnet
    10.23.1.196     hana-s1-db1-hsr
    10.23.1.197     hana-s1-db2-hsr
    10.23.1.198     hana-s1-db3-hsr
    10.23.1.199     hana-s2-db1-hsr
    10.23.1.200     hana-s2-db2-hsr
    10.23.1.201     hana-s2-db3-hsr
    
  2. [A] 使用 Microsoft 建立組態檔 /etc/sysctl.d/ms-az.conf for Azure 組態設定。

    vi /etc/sysctl.d/ms-az.conf
    
    # Add the following entries in the configuration file
    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

  3. [A] SUSE 會提供 SAP HANA 的特殊資源代理程式,並預設會安裝 SAP HANA 相應增加的代理程式。 如果已安裝並安裝 SAP HANA 向外延展案例的套件,請卸載要相應增加的套件。此步驟必須在所有叢集 VM 上執行,包括多數製造商。

    注意

    必須安裝 SAPHanaSR-ScaleOut 0.181 版或更高版本。

    # Uninstall scale-up packages and patterns
    sudo zypper remove patterns-sap-hana
    sudo zypper remove SAPHanaSR SAPHanaSR-doc yast2-sap-ha
    
    # Install the scale-out packages and patterns
    sudo zypper in SAPHanaSR-ScaleOut SAPHanaSR-ScaleOut-doc 
    sudo zypper in -t pattern ha_sles
    
  4. [AH]準備 VM - 針對適用於 SAP 應用程式的 SUSE Linux Enterprise Server 2205917套用每個 SAP 附注的建議設定。

準備檔案系統

您選擇在 Azure NetApp Files 上的 Azure 檔案儲存體NFS 磁碟區上,在 NFS 共用上部署 SAP 共用目錄。

掛接共享文件系統 (Azure NetApp Files NFS)

在此範例中,共用 HANA 文件系統會部署在 Azure NetApp Files 上,並透過 NFSv4.1 掛接。 請遵循本節中的步驟,只有在您在 Azure NetApp Files 上使用 NFS 時。

  1. [AH]準備操作系統以在 NetApp Systems 上使用 NFS 執行 SAP HANA,如 SAP 附註3024346 - 適用於 NetApp NFS 的 Linux 核心 設定 中所述。 建立 NetApp 組態設定的組態檔 /etc/sysctl.d/91-NetApp-HANA.conf

    vi /etc/sysctl.d/91-NetApp-HANA.conf
    
    # Add the following entries in the configuration file
    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
    
  2. [AH]調整 sunrpc 設定,如 SAP 附注3024346 - NetApp NFS 的 Linux 核心 設定 所建議。

    vi /etc/modprobe.d/sunrpc.conf
    
    # Insert the following line
    options sunrpc tcp_max_slot_table_entries=128
    
  3. [AH] 建立 HANA 資料庫磁碟區的裝入點。

    mkdir -p /hana/shared
    
  4. [AH] 確認 NFS 網域設定。 請確定網域已設定為預設的 Azure NetApp Files 網域,也就是對應 defaultv4iddomain.com 設定為 沒有人
    只有在使用 Azure NetAppFiles NFSv4.1 時,才需要此步驟。

    重要

    請務必在 VM 上設定 NFS 網域 /etc/idmapd.conf ,以符合 Azure NetApp Files 上的預設網域組態: defaultv4iddomain.com。 如果 NFS 用戶端上的網域設定與 NFS 伺服器之間不符,亦即 Azure NetApp 設定,則 VM 上掛接之 Azure NetApp 磁碟區上的檔案權限會顯示為 nobody

    sudo cat /etc/idmapd.conf
    # Example
    [General]
    Domain = defaultv4iddomain.com
    [Mapping]
    Nobody-User = nobody
    Nobody-Group = nobody
    
  5. [AH] 確認 nfs4_disable_idmapping。 它應該設定為 Y。若要建立所在的 nfs4_disable_idmapping 目錄結構,請執行掛接命令。 您無法在 /sys/modules 下手動建立目錄,因為存取權會保留給核心 /驅動程式。
    只有在使用 Azure NetAppFiles NFSv4.1 時,才需要此步驟。

    # Check nfs4_disable_idmapping 
    cat /sys/module/nfs/parameters/nfs4_disable_idmapping
    # If you need to set nfs4_disable_idmapping to Y
    mkdir /mnt/tmp
    mount 10.23.1.7:/HN1-share-s1 /mnt/tmp
    umount  /mnt/tmp
    echo "Y" > /sys/module/nfs/parameters/nfs4_disable_idmapping
    # Make the configuration permanent
    echo "options nfs nfs4_disable_idmapping=Y" >> /etc/modprobe.d/nfs.conf
    
  6. [AH1] 在 SITE1 HANA DB VM 上掛接共用的 Azure NetApp Files 磁碟區。

    sudo vi /etc/fstab
    # Add the following entry
    10.23.1.7:/HN1-shared-s1 /hana/shared nfs rw,nfsvers=4.1,hard,timeo=600,rsize=262144,wsize=262144,noatime,lock,_netdev,sec=sys  0  0
    # Mount all volumes
    sudo mount -a 
    
  7. [AH2] 在 SITE2 HANA DB VM 上掛接共用的 Azure NetApp Files 磁碟區。

    sudo vi /etc/fstab
    # Add the following entry
    10.23.1.7:/HN1-shared-s2 /hana/shared nfs rw,nfsvers=4.1,hard,timeo=600,rsize=262144,wsize=262144,noatime,lock,_netdev,sec=sys  0  0
    # Mount the volume
    sudo mount -a 
    
  8. [AH]確認所有具有 NFS 通訊協定 NFSv4.1的 HANA DB VM 上都掛接對應的/hana/shared/文件系統。

    sudo nfsstat -m
    # Verify that flag vers is set to 4.1 
    # Example from SITE 1, hana-s1-db1
    /hana/shared from 10.23.1.7:/HN1-shared-s1
     Flags: rw,noatime,vers=4.1,rsize=262144,wsize=262144,namlen=255,hard,proto=tcp,timeo=600,retrans=2,sec=sys,clientaddr=10.23.0.19,local_lock=none,addr=10.23.1.7
    # Example from SITE 2, hana-s2-db1
    /hana/shared from 10.23.1.7:/HN1-shared-s2
     Flags: rw,noatime,vers=4.1,rsize=262144,wsize=262144,namlen=255,hard,proto=tcp,timeo=600,retrans=2,sec=sys,clientaddr=10.23.0.22,local_lock=none,addr=10.23.1.7
    

掛接共享檔案系統 (Azure 檔案儲存體 NFS)

在此範例中,共用 HANA 檔案系統會部署在 Azure 檔案儲存體 上的 NFS 上。 請遵循本節中的步驟,只有在您在 Azure 檔案儲存體 上使用 NFS 時。

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

    mkdir -p /hana/shared
    
  2. [AH1] 在 SITE1 HANA DB VM 上掛接共用的 Azure NetApp Files 磁碟區。

    sudo vi /etc/fstab
    # Add the following entry
    sapnfsafs.file.core.windows.net:/sapnfsafs/hn1-shared-s1 /hana/shared  nfs nfsvers=4.1,sec=sys  0  0
    # Mount all volumes
    sudo mount -a 
    
  3. [AH2] 在 SITE2 HANA DB VM 上掛接共用的 Azure NetApp Files 磁碟區。

    sudo vi /etc/fstab
    # Add the following entries
    sapnfsafs.file.core.windows.net:/sapnfsafs/hn1-shared-s2 /hana/shared  nfs nfsvers=4.1,sec=sys  0  0
    # Mount the volume
    sudo mount -a 
    
  4. [AH]確認所有具有 NFS 通訊協定 NFSv4.1的 HANA DB VM 上都掛接對應的/hana/shared/文件系統。

    sudo nfsstat -m
    # Example from SITE 1, hana-s1-db1
    sapnfsafs.file.core.windows.net:/sapnfsafs/hn1-shared-s1
     Flags: rw,relatime,vers=4.1,rsize=1048576,wsize=1048576,namlen=255,hard,proto=tcp,timeo=600,retrans=2,sec=sys,clientaddr=10.23.0.19,local_lock=none,addr=10.23.0.35
    # Example from SITE 2, hana-s2-db1
    sapnfsafs.file.core.windows.net:/sapnfsafs/hn1-shared-s2
     Flags: rw,relatime,vers=4.1,rsize=1048576,wsize=1048576,namlen=255,hard,proto=tcp,timeo=600,retrans=2,sec=sys,clientaddr=10.23.0.22,local_lock=none,addr=10.23.0.35
    

準備數據和記錄本機檔系統

在呈現的組態中,文件系統 /hana/data/hana/log 會部署在受控磁碟上,並本機連結至每個 HANA DB VM。 您必須執行步驟,以在每個 HANA DB 虛擬機上建立本機數據和記錄磁碟區。

使用 邏輯磁碟區管理員 (LVM) 設定磁碟配置。 下列範例假設每個 HANA 虛擬機都有三個鏈接的數據磁碟,用來建立兩個磁碟區。

  1. [AH] 列出所有可用的磁碟:

    ls /dev/disk/azure/scsi1/lun*
    

    範例輸出︰

    /dev/disk/azure/scsi1/lun0  /dev/disk/azure/scsi1/lun1  /dev/disk/azure/scsi1/lun2 
    
  2. [AH] 針對您想要使用的所有磁碟建立實體磁碟區:

    sudo pvcreate /dev/disk/azure/scsi1/lun0
    sudo pvcreate /dev/disk/azure/scsi1/lun1
    sudo pvcreate /dev/disk/azure/scsi1/lun2
    
  3. [AH] 建立數據檔的磁碟區群組。 針對記錄檔使用一個磁碟區群組,另一個用於 SAP HANA:\ 的共享目錄

    sudo vgcreate vg_hana_data_HN1 /dev/disk/azure/scsi1/lun0 /dev/disk/azure/scsi1/lun1
    sudo vgcreate vg_hana_log_HN1 /dev/disk/azure/scsi1/lun2
    
  4. [AH] 建立邏輯磁碟區。

    當您不使用 lvcreate 參數時,就會建立線性磁碟區 -i 。 建議您建立等量磁碟區以提升 I/O 效能,並將等量大小與 SAP HANA VM 記憶體設定中所記載的值對齊。 自 -i 變數應該是基礎實體磁碟區的數目,而 -I 自變數是等量大小。 在本檔中,數據磁碟區會使用兩個實體磁碟區,因此 -i switch 自變數會設定為 2。 數據磁碟區的等量大小為 256 KiB。 記錄磁碟區會使用一個實體磁碟區,因此記錄磁碟區命令不會 -i 明確使用 或 -I 參數。

    重要

    -i當您針對每個數據或記錄磁碟區使用多個實體磁碟區時,請使用 參數並將它設定為基礎實體磁碟區的數目。 建立 -I 等量磁碟區時,請使用 參數來指定等量大小。
    如需建議的記憶體組態,請參閱 SAP HANA VM 記憶體 組態,包括等量大小和磁碟數目。

    sudo lvcreate -i 2 -I 256 -l 100%FREE -n hana_data vg_hana_data_HN1
    sudo lvcreate -l 100%FREE -n hana_log vg_hana_log_HN1
    sudo mkfs.xfs /dev/vg_hana_data_HN1/hana_data
    sudo mkfs.xfs /dev/vg_hana_log_HN1/hana_log
    
  5. [AH] 建立掛接目錄,並複製所有邏輯磁碟區的 UUID:

    sudo mkdir -p /hana/data/HN1
    sudo mkdir -p /hana/log/HN1
    # Write down the ID of /dev/vg_hana_data_HN1/hana_data and /dev/vg_hana_log_HN1/hana_log
    sudo blkid
    
  6. [AH] 建立 fstab 邏輯磁碟區及掛接的專案:

    sudo vi /etc/fstab
    

    在檔案插入 /etc/fstab 下列這一行:

    /dev/disk/by-uuid/UUID of /dev/mapper/vg_hana_data_HN1-hana_data /hana/data/HN1 xfs  defaults,nofail  0  2
    /dev/disk/by-uuid/UUID of /dev/mapper/vg_hana_log_HN1-hana_log /hana/log/HN1 xfs  defaults,nofail  0  2
    

    裝載新的磁碟區:

    sudo mount -a
    

建立 Pacemaker 叢集

請遵循在 Azure 中的 SUSE Linux Enterprise Server 上設定 Pacemaker 中的步驟,為此 HANA 伺服器建立基本的 Pacemaker 叢集。 包含所有虛擬機,包括叢集中的多數製造商。

重要

請勿設定 quorum expected-votes 為 2,因為這不是兩個節點叢集。
請確定已啟用叢集屬性 concurrent-fencing ,以便還原串行化節點隔離。

安裝

在此範例中,我們會使用 HANA 2.0 SP5 在 Azure VM 上使用 HSR 在向外延展組態中部署 SAP HANA。

準備 HANA 安裝

  1. [AH] 在 HANA 安裝之前,請設定根密碼。 您可以在安裝完成後停用根密碼。 以指令 passwd身分root執行 。

  2. [1,2] 變更 的許可權 /hana/shared

    chmod 775 /hana/shared
    
  3. [1] 確認您可以透過 SSH 登入此網站 hana-s1-db2hana-s1-db3 中的 HANA DB VM,而不會提示您輸入密碼。 如果情況並非如此,請交換 SSH 金鑰,如透過公鑰啟用 SSH 存取中所述

    ssh root@hana-s1-db2
    ssh root@hana-s1-db3
    
  4. [2] 確認您可以透過 SSH 登入此網站 hana-s2-db2hana-s2-db3 中的 HANA DB VM,而不提示輸入密碼。
    如果情況並非如此,請交換 ssh 金鑰。

    ssh root@hana-s2-db2
    ssh root@hana-s2-db3
    
  5. [AH] 安裝 HANA 2.0 SP4 和更新版本所需的其他套件。 如需詳細資訊,請參閱 SLES 版本的 SAP 附註 2593824

    # In this example, using SLES12 SP5
    sudo zypper install libgcc_s1 libstdc++6 libatomic1
    

每個站臺上第一個節點上的 HANA 安裝

  1. [1] 遵循 SAP HANA 2.0 安裝和更新指南中的指示安裝 SAP HANA。 在後續指示中,我們會在SITE 1的第一個節點上顯示SAP HANA安裝。

    a. 從 HANA 安裝軟體目錄啟動 hdblcm 程式rootinternal_network使用 參數並傳遞子網的位址空間,用於內部 HANA 節點間通訊。

    ./hdblcm --internal_network=10.23.1.128/26
    

    b. 在提示字元中,輸入下列值:

    • 針對 [ 選擇動作]:輸入 1 (適用於安裝)
    • 如需 安裝的其他元件:輸入 2,3
    • 針對安裝路徑:按 Enter 鍵(預設為 /hana/shared)
    • 針對 [ 本機主機名]:按 Enter 以接受預設值
    • 針對 您要將主機新增至系統嗎?:輸入 n
    • 針對 SAP HANA 系統識別碼:輸入 HN1
    • 針對 實例編號 [00]:輸入 03
    • 針對 [預設] 的 [本機主機背景工作角色群組 ]:按 Enter 以接受預設值
    • 針對 [選取系統使用量] / 輸入索引 [4]:輸入 4 (針對自定義)
    • 針對 數據磁碟區 的位置 [/hana/data/HN1]:按 Enter 以接受預設值
    • 針對 記錄磁碟區 的位置 [/hana/log/HN1]:按 Enter 以接受預設值
    • 針對 [限制記憶體配置上限嗎? [n]: 輸入 n
    • 針對 主機 hana-s1-db1 的憑證主機名 [hana-s1-db1]:按 Enter 以接受預設值
    • 針對 SAP 主機代理程式使用者 (sapadm) 密碼:輸入密碼
    • 針對 確認 SAP 主機代理程式使用者 (sapadm) 密碼:輸入密碼
    • 針對系統 管理員 istrator (hn1adm) 密碼:輸入密碼
    • 針對 System 管理員 istrator Home Directory [/usr/sap/HN1/home]:按 Enter 以接受預設值
    • 針對 [系統 管理員 istrator 登入殼層 [/bin/sh]:按 Enter 以接受預設值
    • 針對 [系統 管理員 istrator 使用者標識碼 [1001]:按 Enter 以接受預設值
    • 針對 [使用者群組] 的 Enter 識別碼 [ 79]:按 Enter 以接受預設值
    • 針對 [系統資料庫使用者] [系統] 密碼:輸入系統的密碼
    • 針對 [確認系統資料庫使用者][系統] [密碼]:輸入系統的密碼
    • 針對機器 重新啟動後重新啟動系統嗎? [n]: 輸入 n
    • 針對 [您要繼續] [y/n]:驗證摘要,如果一切看起來都不錯,請輸入 y
  2. [2] 重複上述步驟,在月臺 2 的第一個節點上安裝 SAP HANA。

  3. [1,2] 驗證global.ini

    顯示global.ini,並確定內部 SAP HANA 節點間通訊的設定已就緒。 確認通訊區段。 它應該有子網的 inter 位址空間,而且 listeninterface 應該設定為 .internal確認 [internal_hostname_resolution] 區段。 它應該具有屬於 inter 子網之 HANA 虛擬機的 IP 位址。

      sudo cat /usr/sap/HN1/SYS/global/hdb/custom/config/global.ini
      # Example from SITE1 
      [communication]
      internal_network = 10.23.1.128/26
      listeninterface = .internal
      [internal_hostname_resolution]
      10.23.1.132 = hana-s1-db1
      10.23.1.133 = hana-s1-db2
      10.23.1.134 = hana-s1-db3
    
  4. [1,2] 準備 global.ini 在非共用環境中安裝,如 SAP 附註 2080991中所述。

     sudo vi /usr/sap/HN1/SYS/global/hdb/custom/config/global.ini
     [persistence]
     basepath_shared = no
    
  5. [1,2] 重新啟動 SAP HANA 以啟用變更。

     sudo -u hn1adm /usr/sap/hostctrl/exe/sapcontrol -nr 03 -function StopSystem
     sudo -u hn1adm /usr/sap/hostctrl/exe/sapcontrol -nr 03 -function StartSystem
    
  6. [1,2] 確認用戶端介面將使用來自子網的 client IP位址進行通訊。

    # Execute as hn1adm
    /usr/sap/HN1/HDB03/exe/hdbsql -u SYSTEM -p "password" -i 03 -d SYSTEMDB 'select * from SYS.M_HOST_INFORMATION'|grep net_publicname
    # Expected result - example from SITE 2
    "hana-s2-db1","net_publicname","10.23.0.22"
    

    如需如何驗證設定的資訊,請參閱 SAP 附注 2183363 - SAP HANA 內部網路的設定。

  7. [AH] 變更資料和記錄目錄的許可權,以避免發生 HANA 安裝錯誤。

     sudo chmod o+w -R /hana/data /hana/log
    
  8. [1] 安裝次要 HANA 節點。 此步驟中的範例指示適用於SITE 1。

    a. 將常駐 hdblcm 程式啟動為 root

     cd /hana/shared/HN1/hdblcm
     ./hdblcm 
    

    b. 在提示字元中,輸入下列值:

    • 針對 [選擇動作]:輸入 2 (針對新增主機)
    • 針對 [輸入逗號分隔主機名以新增:hana-s1-db2,hana-s1-db3
    • 如需 安裝的其他元件:輸入 2,3
    • 針對 [輸入根用戶名稱 [root]:按 Enter 以接受預設值
    • 針對 主機 'hana-s1-db2' [1]: 1 選取角色 (適用於背景工作角色)
    • 針對 [輸入主機故障轉移群組] 的主機 'hana-s1-db2' [預設值]:按 Enter 以接受預設值
    • 針對 [輸入 儲存體 主機 'hana-s1-db2' 的分割區號碼 [<<自動>>指派]:按 Enter 以接受預設值
    • 針對 主機 'hana-s1-db2' 的 Enter 背景工作群組 [預設值]:按 Enter 以接受預設值
    • 針對 [選取主機 'hana-s1-db3' 的角色] [1]:1 (適用於背景工作角色)
    • 針對 [輸入主機故障轉移群組] 的主機 'hana-s1-db3' [預設值]:按 Enter 以接受預設值
    • 針對主機 'hana-s1-db3' 的 Enter 儲存體 分割區號碼 [<<自動>>指派]:按 Enter 以接受預設值
    • 針對 主機 'hana-s1-db3' 的 Enter 背景工作群組 [預設值]:按 Enter 以接受預設值
    • 針對系統 管理員 istrator (hn1adm) 密碼:輸入密碼
    • 針對 輸入 SAP 主機代理程式使用者 (sapadm) 密碼:輸入密碼
    • 針對 確認 SAP 主機代理程式使用者 (sapadm) 密碼:輸入密碼
    • 針對 主機 hana-s1-db2 的憑證主機名 [hana-s1-db2]:按 Enter 以接受預設值
    • 針對 主機 hana-s1-db3 的憑證主機名 [hana-s1-db3]:按 Enter 以接受預設值
    • 針對 [您要繼續] [y/n]:驗證摘要,如果一切看起來都不錯,請輸入 y
  9. [2] 重複上述步驟,在月臺 2 上安裝次要 SAP HANA 節點。

設定 SAP HANA 2.0 系統複寫

  1. [1] 在月臺 1 上設定系統複寫:

    將資料庫備份為 hn1adm:

    hdbsql -d SYSTEMDB -u SYSTEM -p "passwd" -i 03 "BACKUP DATA USING FILE ('initialbackupSYS')"
    hdbsql -d HN1 -u SYSTEM -p "passwd" -i 03 "BACKUP DATA USING FILE ('initialbackupHN1')"
    

    將系統 PKI 檔案複製到次要站台:

    scp /usr/sap/HN1/SYS/global/security/rsecssfs/data/SSFS_HN1.DAT hana-s2-db1:/usr/sap/HN1/SYS/global/security/rsecssfs/data/
    scp /usr/sap/HN1/SYS/global/security/rsecssfs/key/SSFS_HN1.KEY  hana-s2-db1:/usr/sap/HN1/SYS/global/security/rsecssfs/key/
    

    建立主要站台:

    hdbnsutil -sr_enable --name=HANA_S1
    
  2. [2] 在 SITE 2 上設定系統複寫:

    註冊第二個月臺以啟動系統複寫。 以 hanasid>adm 身分<執行下列命令:

    sapcontrol -nr 03 -function StopWait 600 10
    hdbnsutil -sr_register --remoteHost=hana-s1-db1 --remoteInstance=03 --replicationMode=sync --name=HANA_S2
    sapcontrol -nr 03 -function StartSystem
    
  3. [1] 檢查復寫狀態

    檢查複寫狀態,並等候所有資料庫同步。

    sudo su - hn1adm -c "python /usr/sap/HN1/HDB03/exe/python_support/systemReplicationStatus.py"
    
    # | Database | Host          | Port  | Service Name | Volume ID | Site ID | Site Name | Secondary     | Secondary | Secondary | Secondary | Secondary     | Replication | Replication | Replication    |
    # |          |               |       |              |           |         |           | Host          | Port      | Site ID   | Site Name | Active Status | Mode        | Status      | Status Details |
    # | -------- | ------------- | ----- | ------------ | --------- | ------- | --------- | ------------- | --------- | --------- | --------- | ------------- | ----------- | ----------- | -------------- |
    # | HN1      | hana-s1-db3   | 30303 | indexserver  |         5 |       1 | HANA_S1   | hana-s2-db3   |     30303 |         2 | HANA_S2   | YES           | SYNC        | ACTIVE      |                |
    # | SYSTEMDB | hana-s1-db1   | 30301 | nameserver   |         1 |       1 | HANA_S1   | hana-s2-db1   |     30301 |         2 | HANA_S2   | YES           | SYNC        | ACTIVE      |                |
    # | HN1      | hana-s1-db1   | 30307 | xsengine     |         2 |       1 | HANA_S1   | hana-s2-db1   |     30307 |         2 | HANA_S2   | YES           | SYNC        | ACTIVE      |                |
    # | HN1      | hana-s1-db1   | 30303 | indexserver  |         3 |       1 | HANA_S1   | hana-s2-db1   |     30303 |         2 | HANA_S2   | YES           | SYNC        | ACTIVE      |                |
    # | HN1      | hana-s1-db2   | 30303 | indexserver  |         4 |       1 | HANA_S1   | hana-s2-db2   |     30303 |         2 | HANA_S2   | YES           | SYNC        | ACTIVE      |                |
    #
    # status system replication site "2": ACTIVE
    # overall system replication status: ACTIVE
    #
    # Local System Replication State
    #
    # mode: PRIMARY
    # site id: 1
    # site name: HANA_S1
    
  4. [1,2] 變更 HANA 設定,讓 HANA 系統復寫的通訊會透過 HANA 系統復寫虛擬網路介面導向。

    • 在兩個網站上停止 HANA

      sudo -u hn1adm /usr/sap/hostctrl/exe/sapcontrol -nr 03 -function StopSystem HDB
      
    • 編輯global.ini以新增 HANA 系統複寫的主機對應:使用來自子網的 hsr IP 位址。

      sudo vi /usr/sap/HN1/SYS/global/hdb/custom/config/global.ini
      #Add the section
      [system_replication_hostname_resolution]
      10.23.1.196 = hana-s1-db1
      10.23.1.197 = hana-s1-db2
      10.23.1.198 = hana-s1-db3
      10.23.1.199 = hana-s2-db1
      10.23.1.200 = hana-s2-db2
      10.23.1.201 = hana-s2-db3
      
    • 在兩個網站上啟動 HANA

      sudo -u hn1adm /usr/sap/hostctrl/exe/sapcontrol -nr 03 -function StartSystem HDB
      

    如需詳細資訊,請參閱 系統複寫的主機名解析。

建立文件系統資源

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

  1. [1] 讓 Pacemaker 處於維護模式,以準備建立 HANA 叢集資源。

    crm configure property maintenance-mode=true
    
  2. [1,2] 在 NFS 掛接的文件系統 /hana/shared 上建立目錄,這會用於特殊文件系統監視資源。 必須在這兩個網站上建立目錄。

    mkdir -p /hana/shared/HN1/check
    
  3. [AH] 建立目錄,以用來掛接特殊的文件系統監視資源。 必須在所有 HANA 叢集節點上建立目錄。

    mkdir -p /hana/check
    
  4. [1] 建立文件系統叢集資源。

    crm configure primitive fs_HN1_HDB03_fscheck Filesystem \
      params device="/hana/shared/HN1/check" \
      directory="/hana/check" fstype=nfs4 \
      options="bind,defaults,rw,hard,proto=tcp,noatime,nfsvers=4.1,lock" \
      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
    
    crm configure clone cln_fs_HN1_HDB03_fscheck fs_HN1_HDB03_fscheck \
      meta clone-node-max=1 interleave=true
    
    crm configure location loc_cln_fs_HN1_HDB03_fscheck_not_on_mm \
      cln_fs_HN1_HDB03_fscheck -inf: hana-s-mm    
    

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

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

實作 HANA HA 攔截 SAPHanaSrMultiTarget 和 susChkSrv

這個重要步驟是優化與叢集的整合,並在可能進行叢集故障轉移時進行偵測。 強烈建議您設定 SAPHanaSrMultiTarget Python 攔截。 針對 HANA 2.0 SP5 和更新版本,建議同時實作 SAPHanaSrMultiTarget 和 susChkSrv 攔截。

注意

SAPHanaSrMultiTarget HA 提供者會取代適用於 HANA 向外延展的 SAPHanaSR。本檔的舊版已說明 SAPHanaSR。
請參閱 SUSE 部落格文章 ,以瞭解新 HANA HA 勾點的變更。

SAPHanaSrMultiTarget 攔截所提供的步驟適用於新的安裝。 將現有的環境從 SAPHanaSR 升級至 SAPHanaSrMultiTarget 提供者需要數個變更, 而且本檔中不會 說明。 如果現有的環境未使用第三個月臺進行災害復原,且 未使用 HANA 多目標系統復 寫,SAPHanaSR HA 提供者仍可使用。

SusChkSrv 擴充主要 SAPHanaSrMultiTarget HA 提供者的功能。 它會在 HANA 處理 hdbindexserver 損毀的情況下運作。 如果單一進程當機,HANA 通常會嘗試重新啟動它。 重新啟動索引伺服器進程可能需要很長的時間,而 HANA 資料庫無法回應。 實作 susChkSrv 時,會執行立即且可設定的動作,而不是在相同的節點上等候 hdbindexserver 進程重新啟動。 在 HANA 向外延展 susChkSrv 中,每個 HANA VM 都會獨立運作。 設定的動作會終止 HANA 或圍欄受影響的 VM,這會在設定的逾時期間觸發故障轉移。

需要 SUSE SLES 15 SP1 或更高版本,才能同時操作 HANA HA 攔截。 下表顯示其他相依性。

SAP HANA HA 勾點 需要 HANA 版本 需要 SAPHanaSR-ScaleOut
SAPHanaSrMultiTarget HANA 2.0 SPS4 或更高版本 0.180 或更高版本
susChkSrv HANA 2.0 SPS5 或更高版本 0.184.1 或更高版本

實作這兩個攔截的步驟:

  1. [1,2] 在兩個系統復寫網站上停止 HANA。 以 sid>adm 身分<執行:

    sapcontrol -nr 03 -function StopSystem
    
  2. [1,2] 在每個叢集網站上調整 global.ini 。 如果不符合 susChkSrv 攔截的必要條件,則不應該設定整個區塊 [ha_dr_provider_suschksrv]
    您可以使用參數action_on_lost來調整 susChkSrv 的行為。 有效值為 [ ignore | stop | kill | fence ]

    # add to global.ini on both sites. Do not copy global.ini between sites.
    [ha_dr_provider_saphanasrmultitarget]
    provider = SAPHanaSrMultiTarget
    path = /usr/share/SAPHanaSR-ScaleOut
    execution_order = 1
    
    [ha_dr_provider_suschksrv]
    provider = susChkSrv
    path = /usr/share/SAPHanaSR-ScaleOut
    execution_order = 3
    action_on_lost = kill
    
    [trace]
    ha_dr_saphanasrmultitarget = info
    

    SUSE 所傳遞的HA攔截預設位置為 /usr/share/SAPHanaSR-ScaleOut。 使用標準位置會帶來好處,即 Python 攔截程式代碼會透過 OS 或套件更新自動更新,並在下次重新啟動時由 HANA 使用。 使用選擇性路徑,例如 /hana/shared/myHooks,您可以將 OS 更新與所使用的攔截版本分離。

  3. [AH]叢集需要 sid>adm 叢集節點上<的 sudoers 設定。 在此範例中,藉由建立新檔案來達成。 以正確的小寫 SID 調整 hn1 的值,執行 root 命令。

    cat << EOF > /etc/sudoers.d/20-saphana
    # SAPHanaSR-ScaleOut needs for HA/DR hook scripts
    so1adm ALL=(ALL) NOPASSWD: /usr/sbin/crm_attribute -n hana_hn1_site_srHook_*
    so1adm ALL=(ALL) NOPASSWD: /usr/sbin/crm_attribute -n hana_hn1_gsh *
    so1adm ALL=(ALL) NOPASSWD: /usr/sbin/SAPHanaSR-hookHelper --sid=hn1 *
    EOF
    
  4. [1,2] 在兩個復寫網站上啟動 SAP HANA。 以 sid>adm 身分<執行。

    sapcontrol -nr 03 -function StartSystem 
    
  5. [A] 確認掛勾安裝在所有叢集節點上都作用中。 以 sid>adm 身分<執行。

    cdtrace
    grep HADR.*load.*SAPHanaSrMultiTarget nameserver_*.trc | tail -3
    # Example output
    # nameserver_hana-s1-db1.31001.000.trc:[14162]{-1}[-1/-1] 2023-01-26 12:53:55.728027 i ha_dr_provider   HADRProviderManager.cpp(00083) : loading HA/DR Provider 'SAPHanaSrMultiTarget' from /usr/share/SAPHanaSR-ScaleOut/
    grep SAPHanaSr.*init nameserver_*.trc | tail -3
    # Example output
    # nameserver_hana-s1-db1.31001.000.trc:[17636]{-1}[-1/-1] 2023-01-26 16:30:19.256705 i ha_dr_SAPHanaSrM SAPHanaSrMultiTarget.py(00080) : SAPHanaSrMultiTarget.init() CALLING CRM: <sudo /usr/sbin/crm_attribute -n hana_hn1_gsh -v 2.2  -l reboot> rc=0
    # nameserver_hana-s1-db1.31001.000.trc:[17636]{-1}[-1/-1] 2023-01-26 16:30:19.256739 i ha_dr_SAPHanaSrM SAPHanaSrMultiTarget.py(00081) : SAPHanaSrMultiTarget.init() Running srHookGeneration 2.2, see attribute hana_hn1_gsh too
    

    確認 susChkSrv 攔截安裝。 以 sid>adm 身分<執行。

    cdtrace
    egrep '(LOST:|STOP:|START:|DOWN:|init|load|fail)' nameserver_suschksrv.trc
    # Example output
    # 2023-01-19 08:23:10.581529  [1674116590-10005] susChkSrv.init() version 0.7.7, parameter info: action_on_lost=fence stop_timeout=20 kill_signal=9
    # 2023-01-19 08:23:31.553566  [1674116611-14022] START: indexserver event looks like graceful tenant start
    # 2023-01-19 08:23:52.834813  [1674116632-15235] START: indexserver event looks like graceful tenant start (indexserver started)
    

建立 SAP HANA 叢集資源

  1. [1] 建立 HANA 叢集資源。 以身分 root執行下列命令。

    1. 請確定叢集已是維護模式。

    2. 接下來,建立 HANA 拓撲資源。

      sudo crm configure primitive rsc_SAPHanaTopology_HN1_HDB03 ocf:suse:SAPHanaTopology \
        op monitor interval="10" timeout="600" \
        op start interval="0" timeout="600" \
        op stop interval="0" timeout="300" \
        params SID="HN1" InstanceNumber="03"
      
      sudo crm configure clone cln_SAPHanaTopology_HN1_HDB03 rsc_SAPHanaTopology_HN1_HDB03 \
       meta clone-node-max="1" target-role="Started" interleave="true"
      
    3. 接下來,建立 HANA 實例資源。

      注意

      本文包含 Microsoft 不再使用的詞彙參考。 從軟體中移除這些字詞時,我們會從本文中移除這些字詞。

      sudo crm configure primitive rsc_SAPHana_HN1_HDB03 ocf:suse:SAPHanaController \
        op start interval="0" timeout="3600" \
        op stop interval="0" timeout="3600" \
        op promote interval="0" timeout="3600" \
        op monitor interval="60" role="Master" timeout="700" \
        op monitor interval="61" role="Slave" timeout="700" \
        params SID="HN1" InstanceNumber="03" PREFER_SITE_TAKEOVER="true" \
        DUPLICATE_PRIMARY_TIMEOUT="7200" AUTOMATED_REGISTER="false"
      
      sudo crm configure ms msl_SAPHana_HN1_HDB03 rsc_SAPHana_HN1_HDB03 \
        meta clone-node-max="1" master-max="1" interleave="true"
      

      重要

      建議您最好只將AUTOMATED_REGISTER設定為 ,同時執行徹底的故障轉移測試,以防止失敗的主要實例自動註冊為次要實例。 故障轉移測試成功完成之後,請將AUTOMATED_REGISTER設定為 [是],以便在接管系統複寫之後自動繼續。

    4. 建立虛擬IP和相關聯的資源。

      sudo crm configure primitive rsc_ip_HN1_HDB03 ocf:heartbeat:IPaddr2 \
        op monitor interval="10s" timeout="20s" \
        params ip="10.23.0.27"
      
      sudo crm configure primitive rsc_nc_HN1_HDB03 azure-lb port=62503 \
        op monitor timeout=20s interval=10 \
        meta resource-stickiness=0
      
      sudo crm configure group g_ip_HN1_HDB03 rsc_ip_HN1_HDB03 rsc_nc_HN1_HDB03
      
    5. 建立叢集條件約束

      # Colocate the IP with HANA master
      sudo crm configure colocation col_saphana_ip_HN1_HDB03 4000: g_ip_HN1_HDB03:Started \
        msl_SAPHana_HN1_HDB03:Master  
      
      # Start HANA Topology before HANA  instance
      sudo crm configure order ord_SAPHana_HN1_HDB03 Optional: cln_SAPHanaTopology_HN1_HDB03 \
        msl_SAPHana_HN1_HDB03
      
      # HANA resources don't run on the majority maker node
      sudo crm configure location loc_SAPHanaCon_not_on_majority_maker msl_SAPHana_HN1_HDB03 -inf: hana-s-mm
      sudo crm configure location loc_SAPHanaTop_not_on_majority_maker cln_SAPHanaTopology_HN1_HDB03 -inf: hana-s-mm
      
  2. [1] 設定其他叢集屬性

    sudo crm configure rsc_defaults resource-stickiness=1000
    sudo crm configure rsc_defaults migration-threshold=50
    
  3. [1] 將叢集置於維護模式外。 確認叢集狀態正常,且所有資源已啟動。

    # Cleanup any failed resources - the following command is example 
    crm resource cleanup rsc_SAPHana_HN1_HDB03
    
    # Place the cluster out of maintenance mode
    sudo crm configure property maintenance-mode=false
    
  4. [1] 確認 HANA HA 勾點與叢集之間的通訊,顯示 SID 的狀態 SOK,以及狀態為 P(邊緣)或 S(econdary) 的復寫網站。

    sudo /usr/sbin/SAPHanaSR-showAttr
    # Expected result
    # Global cib-time                 maintenance prim  sec sync_state upd
    # ---------------------------------------------------------------------
    # HN1    Fri Jan 27 10:38:46 2023 false       HANA_S1 -   SOK        ok
    # 
    # Sites     lpt        lss mns        srHook srr
    # -----------------------------------------------
    # HANA_S1     1674815869 4   hana-s1-db1 PRIM   P
    # HANA_S2     30         4   hana-s2-db1 SWAIT  S
    

    注意

    上述組態中的逾時只是範例,可能需要調整為特定的 HANA 設定。 例如,如果啟動 SAP HANA 資料庫需要較長的時間,您可能需要增加啟動逾時。

測試 SAP HANA 故障轉移

注意

本文包含 Microsoft 不再使用的詞彙參考。 從軟體中移除這些字詞時,我們會從本文中移除這些字詞。

  1. 開始測試之前,請先檢查叢集和 SAP HANA 系統復寫狀態。

    a. 確認沒有失敗的叢集動作

    #Verify that there are no failed cluster actions
    crm status
    # Example 
    #7 nodes configured
    #24 resource instances configured
    #
    #Online: [ hana-s-mm hana-s1-db1 hana-s1-db2 hana-s1-db3 hana-s2-db1 hana-s2-db2 hana-s2-db3 ]
    #
    #Full list of resources:
    #
    # stonith-sbd    (stonith:external/sbd): Started hana-s-mm
    # Clone Set: cln_fs_HN1_HDB03_fscheck [fs_HN1_HDB03_fscheck]
    #     Started: [ hana-s1-db1 hana-s1-db2 hana-s1-db3 hana-s2-db1 hana-s2-db2 hana-s2-db3 ]
    #     Stopped: [ hana-s-mm ]
    # Clone Set: cln_SAPHanaTopology_HN1_HDB03 [rsc_SAPHanaTopology_HN1_HDB03]
    #     Started: [ hana-s1-db1 hana-s1-db2 hana-s1-db3 hana-s2-db1 hana-s2-db2 hana-s2-db3 ]
    #     Stopped: [ hana-s-mm ]
    # Master/Slave Set: msl_SAPHana_HN1_HDB03 [rsc_SAPHana_HN1_HDB03]
    #     Masters: [ hana-s1-db1 ]
    #     Slaves: [ hana-s1-db2 hana-s1-db3 hana-s2-db1 hana-s2-db2 hana-s2-db3 ]
    #     Stopped: [ hana-s-mm ]
    # Resource Group: g_ip_HN1_HDB03
    #     rsc_ip_HN1_HDB03   (ocf::heartbeat:IPaddr2):       Started hana-s1-db1
    #     rsc_nc_HN1_HDB03   (ocf::heartbeat:azure-lb):      Started hana-s1-db1
    

    b. 確認 SAP HANA 系統複寫同步

    # Verify HANA HSR is in sync
    sudo su - hn1adm -c "python /usr/sap/HN1/HDB03/exe/python_support/systemReplicationStatus.py"
    #| Database | Host         | Port  | Service Name | Volume ID | Site ID | Site Name | Secondary    | Secondary | Secondary | Secondary | Secondary     | Replication | Replication | Replication    |
    #|          |              |       |              |           |         |           | Host         | Port      | Site ID   | Site Name | Active Status | Mode        | Status      | Status Details |
    #| -------- | ------------ | ----- | ------------ | --------- | ------- | --------- | ------------ | --------- | --------- | --------- | ------------- | ----------- | ----------- | -------------- |
    #| SYSTEMDB | hana-s1-db1  | 30301 | nameserver   |         1 |       1 | HANA_S1   | hana-s2-db1  |     30301 |         2 | HANA_S2   | YES           | SYNC        | ACTIVE      |                |
    #| HN1      | hana-s1-db1  | 30307 | xsengine     |         2 |       1 | HANA_S1   | hana-s2-db1  |     30307 |         2 | HANA_S2   | YES           | SYNC        | ACTIVE      |                |
    #| HN1      | hana-s1-db1  | 30303 | indexserver  |         3 |       1 | HANA_S1   | hana-s2-db1  |     30303 |         2 | HANA_S2   | YES           | SYNC        | ACTIVE      |                |
    #| HN1      | hana-s1-db3  | 30303 | indexserver  |         4 |       1 | HANA_S1   | hana-s2-db3  |     30303 |         2 | HANA_S2   | YES           | SYNC        | ACTIVE      |                |
    #| HN1      | hana-s1-db2  | 30303 | indexserver  |         5 |       1 | HANA_S1   | hana-s2-db2  |     30303 |         2 | HANA_S2   | YES           | SYNC        | ACTIVE      |                |
    #
    #status system replication site "1": ACTIVE
    #overall system replication status: ACTIVE
    #
    #Local System Replication State
    #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    #
    #mode: PRIMARY
    #site id: 1
    #site name: HANA_S1
    
  2. 建議您藉由執行 SAP HANA on Azure VM 的 HA 中所述的測試,以及 SLES 複寫向外延展效能優化案例中的 HA 中所述,徹底驗證 SAP HANA 叢集組態

  3. 當節點失去 NFS 共用的存取權時,請確認失敗案例的叢集組態 。/hana/shared

    SAP HANA 資源代理程式相依於儲存 /hana/shared 的二進位檔,以在故障轉移期間執行作業。 在呈現的組態中,文件系統 /hana/shared 會透過NFS掛接。 可執行的測試是建立暫時防火牆規則,以封鎖其中一個主要月臺 VM 上 NFS 掛接文件系統的存取 /hana/shared 。 如果作用中的系統復寫網站上遺失存取 /hana/shared 權,此方法會驗證叢集是否會故障轉移。

    預期結果:當您封鎖其中一個主要月臺 VM 上 NFS 掛接檔系統的存取 /hana/shared 時,在文件系統上執行讀取/寫入作業的監視作業將會失敗,因為它無法存取檔系統,而且會觸發 HANA 資源故障轉移。 當您的 HANA 節點失去 NFS 共用的存取權時,預期會有相同的結果。

    您可以執行 crm_moncrm status來檢查叢集資源的狀態。 開始測試之前的資源狀態:

    # Output of crm_mon
    #7 nodes configured
    #24 resource instances configured
    #
    #Online: [ hana-s-mm hana-s1-db1 hana-s1-db2 hana-s1-db3 hana-s2-db1 hana-s2-db2 hana-s2-db3 ]
    #
    #Active resources:
    #
    #stonith-sbd     (stonith:external/sbd): Started hana-s-mm
    # Clone Set: cln_fs_HN1_HDB03_fscheck [fs_HN1_HDB03_fscheck]
    #     Started: [ hana-s1-db1 hana-s1-db2 hana-s1-db3 hana-s2-db1 hana-s2-db2 hana-s2-db3 ]
    # Clone Set: cln_SAPHanaTopology_HN1_HDB03 [rsc_SAPHanaTopology_HN1_HDB03]
    #     Started: [ hana-s1-db1 hana-s1-db2 hana-s1-db3 hana-s2-db1 hana-s2-db2 hana-s2-db3 ]
    # Master/Slave Set: msl_SAPHana_HN1_HDB03 [rsc_SAPHana_HN1_HDB03]
    #     Masters: [ hana-s1-db1 ]
    #     Slaves: [ hana-s1-db2 hana-s1-db3 hana-s2-db1 hana-s2-db2 hana-s2-db3 ]
    # Resource Group: g_ip_HN1_HDB03
    #     rsc_ip_HN1_HDB03   (ocf::heartbeat:IPaddr2):       Started hana-s2-db1
    #     rsc_nc_HN1_HDB03   (ocf::heartbeat:azure-lb):      Started hana-s2-db1     
    

    若要模擬 的 /hana/shared失敗:

    • 如果在 ANF 上使用 NFS,請先確認主要站臺上 ANF 磁碟區的 IP 位址 /hana/shared 。 您可以藉由執行 df -kh|grep /hana/shared來執行。
    • 如果在 Azure 檔案儲存體 上使用 NFS,請先判斷記憶體帳戶私人端點的 IP 位址。

    然後,在其中一個主要 HANA 系統復寫網站 VM 上執行下列命令,以設定暫時防火牆規則,以封鎖對 NFS 檔案系統 IP 位址 /hana/shared 的存取。

    在此範例中,此命令是在 ANF /hana/shared磁碟區的 hana-s1-db1 上執行。

    iptables -A INPUT -s 10.23.1.7 -j DROP; iptables -A OUTPUT -d 10.23.1.7 -j DROP
    

    叢集資源將會移轉至其他 HANA 系統復寫網站。

    如果您設定 AUTOMATED_REGISTER=“false”,則必須在次要網站上設定 SAP HANA 系統複寫。 在此情況下,您可以執行這些命令,將 SAP HANA 重新設定為次要。

    # Execute on the secondary 
    su - hn1adm
    # Make sure HANA is not running on the secondary site. If it is started, stop HANA
    sapcontrol -nr 03 -function StopWait 600 10
    # Register the HANA secondary site
    hdbnsutil -sr_register --name=HANA_S1 --remoteHost=hana-s2-db1 --remoteInstance=03 --replicationMode=sync
    # Switch back to root and cleanup failed resources
    crm resource cleanup SAPHana_HN1_HDB03
    

    測試之後的資源狀態:

    # Output of crm_mon
    #7 nodes configured
    #24 resource instances configured
    #
    #Online: [ hana-s-mm hana-s1-db1 hana-s1-db2 hana-s1-db3 hana-s2-db1 hana-s2-db2 hana-s2-db3 ]
    #
    #Active resources:
    #
    #stonith-sbd     (stonith:external/sbd): Started hana-s-mm
    # Clone Set: cln_fs_HN1_HDB03_fscheck [fs_HN1_HDB03_fscheck]
    #     Started: [ hana-s1-db1 hana-s1-db2 hana-s1-db3 hana-s2-db1 hana-s2-db2 hana-s2-db3 ]
    # Clone Set: cln_SAPHanaTopology_HN1_HDB03 [rsc_SAPHanaTopology_HN1_HDB03]
    #     Started: [ hana-s1-db1 hana-s1-db2 hana-s1-db3 hana-s2-db1 hana-s2-db2 hana-s2-db3 ]
    # Master/Slave Set: msl_SAPHana_HN1_HDB03 [rsc_SAPHana_HN1_HDB03]
    #     Masters: [ hana-s2-db1 ]
    #     Slaves: [ hana-s1-db1 hana-s1-db2 hana-s1-db3 hana-s2-db2 hana-s2-db3 ]
    # Resource Group: g_ip_HN1_HDB03
    #     rsc_ip_HN1_HDB03   (ocf::heartbeat:IPaddr2):       Started hana-s2-db1
    #     rsc_nc_HN1_HDB03   (ocf::heartbeat:azure-lb):      Started hana-s2-db1
    

下一步