共用方式為


在 SUSE Linux Enterprise 伺服器上使用 HSR,達到 SAP HANA 水平擴充系統高可用性

本文說明如何使用 HANA 系統複寫 (HSR) 和 Pacemaker,在 Azure SUSE Linux Enterprise Server 虛擬機器 (VM) 上部署高可用性的 SAP HANA 系統。 所呈現結構中的共用檔案系統為 NFS 掛接,並由 Azure NetApp FilesAzure 檔案儲存體上的 NFS 檔案共用提供。

在組態、安裝命令等範例中,HANA 執行個體為 03,而 HANA 系統識別碼為 HN1

開始之前,請先參閱下列 SAP 附註和文件:

概觀

若要達到 HANA 水平擴充安裝的 HANA 高可用性,其中一種方法是設定 HANA 系統複寫,並使用 Pacemaker 叢集保護解決方案,以允許自動容錯移轉。 當作用中節點失敗時,叢集會將 HANA 資源容錯移轉至其他站台。
呈現的組態顯示各站台上有三個 HANA 節點,再加上多數仲裁者節點,以免發生核心分裂狀況。 您可調整這些指示,以包含更多 VM 作為 HANA DB 節點。

所呈現結構中的 HANA 共用檔案系統 /hana/shared 可以由 Azure NetApp FilesAzure 檔案儲存體上的 NFS 檔案共用提供。 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

在 SLES 上使用 HSR 和 Pacemaker 叢集進行 SAP HANA 擴增

上圖所呈現的三個子網路位於一個 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/shared 的 NFS 磁碟區會部署在不同的子網路中,委派給 Azure NetApp Filesanf10.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/data/hana/log 的本機受控磁碟。 /hana/data/hana/log 的最低建議儲存體設定會在 SAP Hana Azure VM 儲存體設定中說明。

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

    重要

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

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

  4. 將新建立的虛擬網路介面連結至對應的虛擬機器:

    1. 前往 Azure 入口網站中的虛擬機器。
    2. 在左窗格中,選取 [虛擬機器]。 篩選虛擬機器名稱 (例如 hana-s1-db1),然後選取虛擬機器。
    3. 在 [概觀] 窗格中,選取 [停止] 以將虛擬機器解除配置。
    4. 選取 [網路],然後連結網路介面。 在 [連結網路介面] 下拉式清單中,選取已建立的 interhsr 子網路網路介面。
    5. 選取 [儲存]。
    6. 針對其餘的虛擬機器,重複步驟 b 到 e (本範例為 hana-s1-db2hana-s1-db3hana-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 Load Balancer

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

注意

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

請遵循建立負載平衡器中的步驟,使用 Azure 入口網站為高可用性 SAP 系統設定標準負載平衡器。 在設定負載平衡器期間,請考慮下列幾點:

  1. 前端 IP 組態:建立前端 IP。 選取與資料庫虛擬機相同的虛擬網路和子網路名稱。
  2. 後端集區:建立後端集區並新增資料庫 VM。
  3. 輸入規則:建立負載平衡規則。 針對這兩個負載平衡規則,請遵循相同的步驟。
    • 前端 IP 位址:選取前端 IP。
    • 後端集區:選取後端集區。
    • 高可用性連接埠:選取此選項。
    • 通訊協定:選取 [TCP]
    • 健全狀態探查:使用下列詳細衣料建立健全狀態探查:
      • 通訊協定:選取 [TCP]
      • 連接埠:例如,625< 執行個體號碼>
      • 間隔:輸入 5
      • 探查閾值:輸入 2
    • 閒置逾時 (分鐘):輸入 30
    • 啟用浮動 IP:選取此選項。

注意

未遵守健全狀態探查設定屬性 numberOfProbes,在入口網站中又名為狀況不良閾值。 若要控制連續探查成功或失敗的數目,請將屬性 probeThreshold 設定為 2。 目前無法使用 Azure 入口網站來設定此屬性,因此請使用 Azure CLIPowerShell 命令。

注意

當不具公用 IP 位址的 VM 放在內部 (沒有公用 IP 位址) Standard Azure Load Balancer 的後端集區時,除非另外設定來允許路由傳送至公用端點,否則不會有輸出網際網路連線能力。 如需如何實現輸出連線能力的詳細資料,請參閱在 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/shared 部署 Azure 原生 NFS。 您可以在 Azure NetApp FilesAzure 檔案儲存體上的 NFS 檔案共用上部署 NFS 磁碟區。 Azure 檔案儲存體支援 NFSv4.1 通訊協定,Azure NetApp 檔案儲存體上的 NFS 則支援 NFSv4.1 和 NFSv3。

後續幾節將說明部署 NFS 的步驟 - 您只能選取其中一個選項。

部署 Azure NetApp Files 基礎結構

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

本範例已使用下列 Azure NetApp Files 磁碟區:

  • 磁碟區 HN1-shared-s1 (nfs://10.23.1.7/HN1-shared-s1)
  • 磁碟區 HN1-shared-s2 (nfs://10.23.1.7/HN1-shared-s2)

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

部署 /hana/shared 檔案系統的 Azure 檔案儲存體 NFS 檔案共用。 每個 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]:僅適用於站台 1 的 HANA DB 節點 1
  • [2]:僅適用於站台 2 的 HANA DB 節點 1

執行下列步驟來設定和準備您的作業系統:

  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 for Azure 組態設定來建立組態檔 /etc/sysctl.d/ms-az.conf

    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 附註 2205917,套用 SUSE Linux Enterprise Server for SAP Applications 的建議設定。

準備檔案伺服器

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

掛接共用檔案系統 (Azure NetApp Files NFS)

在此範例中,共用的 HANA 檔案系統部署在 Azure NetApp Files,並透過 NFSv4.1 掛接。 僅當您在 Azure NetApp Files 上使用 NFS 時,遵循本節中的步驟。

  1. [AH] 準備 OS 以搭配 NFS 在NetApp 系統上執行 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),且對應已設為 nobody
    只有在使用 Azure NetAppFiles NFS v4.1 時,才需要此步驟。

    重要

    確認在 VM 上的 /etc/idmapd.conf 內設定 NFS 網域,使其與 Azure NetApp Files 上的預設網域設定相符:defaultv4iddomain.com。 若 NFS 用戶端 (即 VM) 上網域設定和 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 NFS v4.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] 在站台 1 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] 在站台 2 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] 確認所有 HANA DB VM 皆已掛接對應的 /hana/shared/ 檔案系統,且 NFS 通訊協定為 NFSv4.1 版本。

    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] 在站台 1 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] 在站台 2 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] 確認所有 HANA DB VM 皆已掛接對應的 /hana/shared/ 檔案系統,且 NFS 通訊協定為 NFSv4.1 版本。

    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 引數是等量大小。 本文件會使用 2 個實體磁碟區來作為資料磁碟區,因此 -i 參數引數會設定為 2。 資料磁碟區的等量大小為 256KiB。 有一個實體磁碟區作為記錄磁碟區,因此,記錄磁碟區命令中不需要明確使用 -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,以便讓節點隔離還原序列化。

安裝

在此範例中,使用 HSR 在 Azure VM 上部署擴充設定的 SAP HANA 時,我們使用了 HANA 2.0 SP5。

準備安裝 HANA

  1. [AH] 請先設定根密碼,再進行 HANA 安裝。 安裝完成後,您可停用根密碼。 以 root 身分執行 passwd 命令。

  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。 在後續指示中,我們將示範在站台 1 第一個節點上安裝 SAP HANA。

    a. 使用 root 身分,從 HANA 安裝軟體目錄啟動 hdblcm 程式。 使用 internal_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) 密碼:輸入密碼
    • 針對系統管理員 (hn1adm) 密碼:輸入密碼
    • 針對系統管理員主目錄 [/usr/sap/HN1/home]:按下 Enter 鍵以接受預設值
    • 針對系統管理員登入殼層 [/bin/sh]:按下 Enter 鍵以接受預設值
    • 針對系統管理員使用者識別碼 [1001]:按下 Enter 鍵以接受預設值
    • 針對使用者群組的輸入識別碼 (sapsys)[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] 依 SAP 附註 2080991 所述,準備在非共用環境中安裝 global.ini

     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 節點。 此步驟中的範例指示適用於站台 1。

    a. 以 root 身分啟動常駐的 hdblcm 程式。

     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 鍵以接受預設值
    • 選取主機「hana-s1-db3」的角色 [1]:1 (背景工作角色)
    • 針對輸入主機「hana-s1-db3」的主機容錯移轉群組 [預設]:按下 Enter 鍵以接受預設值
    • 針對輸入主機「hana-s1-db3」的儲存體分割區編號 [<<自動指派>>]:按下 Enter 鍵以接受預設值
    • 針對輸入主機「hana-s1-db3」的背景工作角色群組 [預設]:按下 Enter 鍵以接受預設值
    • 針對系統管理員 (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. [2] 設定站台 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] 設定站台 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 時發生問題。 如需詳細資訊,請參閱處理進行 HANA 系統複寫時 SUSE HA 叢集中失敗的 NFS 共用

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

    crm configure property maintenance-mode=true
    
  2. [1,2] 在 NFS 掛接的檔案系統/hana/共用建立目錄,這將用於特殊檔案系統監視資源中。 兩個站台上皆須建立目錄。

    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 高可用性勾點 SAPHanaSrMultiTarget 與 susChkSrv

這個步驟相當重要,目的是在可能進行叢集容錯移轉時,將與叢集的整合及偵測最佳化。 強烈建議您設定 SAPHanaSrMultiTarget Python 勾點。 針對 HANA 2.0 SP5 以上版本,建議同時實作 SAPHanaSrMultiTarget 與 susChkSrv 勾點。

注意

針對 HANA 水平擴充,SAPHanaSrMultiTarget 高可用性提供者會取代 SAPHanaSR。本文件先前的版本曾介紹過 SAPHanaSR。
如需了解新 HANA 高可用性勾點的變更,請參閱 SUSE 部落格文章 (英文)。

本文針對 SAPHanaSrMultiTarget 勾點提供的步驟,適用於新的安裝作業。 將現有環境從 SAPHanaSR 升級至 SAPHanaSrMultiTarget 提供者,需要進行數項變更 (本文件「未」說明)。 如果現有環境未使用第三災害復原站台,也未使用 HANA 多目標系統複寫 (英文),就可以繼續使用 SAPHanaSR 高可用性提供者。

SusChkSrv 擴充了主要 SAPHanaSrMultiTarget 高可用性提供者的功能, 會在 HANA 處理 hdbindexserver 損毀時運作。 如果單一流程損毀,HANA 通常會嘗試重新啟動該流程。 重新啟動索引伺服器流程可能需要較長時間,在此期間,HANA 資料庫無法回應。 實作 susChkSrv 後,系統會執行可設定的即時動作,而不是在同一節點上等候 hdbindexserver 流程重新啟動。 在 HANA 水平擴充中,susChkSrv 會為每個 HANA VM 獨立運作。 設定的動作會終止 HANA 或隔離受影響的 VM,在設定的逾時期間觸發容錯移轉。

這兩種 HANA 高可用性勾點的作業都需要使用 SUSE SLES 15 SP1 以上版本。 下表顯示其他相依性。

SAP Hana 高可用性勾點 必要 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 提供的預設高可用性勾點預設位置是 /usr/share/SAPHanaSR-ScaleOut。 使用標準位置有一項優點,也就是 Python 勾點程式碼會自動透過 OS 或套件更新自動進行更新,然後在下一次重新啟動後供 HANA 使用。 您可以自行決定是否使用自己的路徑,例如 /hana/shared/myHooks,這麼做可以將 OS 更新以及使用的勾點版本分離。

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

    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 高可用性勾點與叢集之間的通訊,SID 的狀態會顯示為 SOK,兩個複寫網站的狀態則為 P(rimary) 或 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. 建議進行測試 (依 SUSE Linux Enterprise Server 上 Azure VM 的 SAP HANA 高可用性SLES 複寫水平擴充效能最佳化案例中所述),以完整驗證 SAP HANA 叢集組態。

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

    SAP HANA 資源代理程式取決於 /hana/shared 所儲存的二進位檔,以便在容錯移轉期間執行作業。 /hana/shared 檔案系統會裝載在所呈現設定中的 NFS 上。 您可以執行的一項測試為建立暫時的防火牆規則,以封鎖其中一個主要站台 VM 上的 /hana/shared NFS 掛接檔案系統存取權。 若作用中的系統複寫站台遺失 /hana/shared 存取權,此方法可驗證叢集將進行容錯移轉。

    預期結果:當您封鎖其中一個主要站台 VM 上的 /hana/shared NFS 掛接檔案系統存取權時,在檔案系統上執行讀取/寫入作業的監視作業便會失敗,因為無法存取檔案系統,且會觸發 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 的失敗:

    • 如果在 Azure NetApp Files 上使用 NFS,請先確認主要站台上 /hana/shared Azure NetApp Files 磁碟區的 IP 位址。 進行方式為執行 df -kh|grep /hana/shared
    • 如果在 Azure 檔案儲存體上使用 NFS,請先判斷儲存體帳戶私人端點的 IP 位址。

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

    在此範例中,該命令已在 Azure NetApp Files 磁碟區 /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
    

下一步