共用方式為


Red Hat Enterprise Linux 上 SAP Hana 擴增系統的高可用性

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

在範例設定和安裝命令中,HANA 執行個體為 03,且 HANA 系統識別碼為 HN1

必要條件

建議部分讀者先參閱各種不同的 SAP Note 和資源,再繼續進行本文中的主題:

概觀

若要達到 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 應用程式磁碟區群組 (部分機器翻譯)。

圖表:使用 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 應該經過 HANA 的 SAP 認證,例如 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 時,會自動產生網路介面名稱。 在本文中,我們將自動產生的主要網路介面稱為 hana-s1-db1-clienthana-s1-db2-clienthana-s1-db3-client 等等。 這些網路介面會連結至 client Azure 虛擬網路子網路。

    重要

    請確定您選取的作業系統在您所使用的特定 VM 類型上已獲得 SAP Hana 認證。 如需這些類型的 SAP Hana 認證的 VM 類型和作業系統版本清單,請參閱 SAP Hana 認證的 IaaS 平台。 掌握列出的 VM 類型詳細資料,以取得該類型的 SAP Hana 支援作業系統版本完整清單。

  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 時,網際網路沒有輸出的連線能力。 若要允許路由傳送至公用端點,您必須執行其他設定。 如需詳細資訊,請參閱在 SAP 高可用性案例中使用 Azure Standard Load Balancer 的虛擬機器公用端點連線能力

重要

請勿在位於 Azure Load Balancer 後方的 Azure VM 上啟用 TCP 時間戳記。 啟用 TCP 時間戳記會導致健全狀態探查失敗。 將 net.ipv4.tcp_timestamps 參數設定為 0。 如需詳細資料,請參閱 Load Balancer 健全狀態探查和 SAP Note 2382421

部署 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 磁碟區:

  • volume 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.11 hana-s1-db1
    10.23.0.12 hana-s1-db1
    10.23.0.13 hana-s1-db2
    10.23.0.14 hana-s2-db1
    10.23.0.15 hana-s2-db2
    10.23.0.16 hana-s2-db3
    10.23.0.17 hana-s-mm
    # Internode subnet
    10.23.1.138 hana-s1-db1-inter
    10.23.1.139 hana-s1-db2-inter
    10.23.1.140 hana-s1-db3-inter
    10.23.1.141 hana-s2-db1-inter
    10.23.1.142 hana-s2-db2-inter
    10.23.1.143 hana-s2-db3-inter
    # HSR subnet
    10.23.1.202 hana-s1-db1-hsr
    10.23.1.203 hana-s1-db2-hsr
    10.23.1.204 hana-s1-db3-hsr
    10.23.1.205 hana-s2-db1-hsr
    10.23.1.206 hana-s2-db2-hsr
    10.23.1.207 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_rangenet.ipv4.ip_local_reserved_ports,以允許 SAP 主機代理程式管理連接埠範圍。 如需詳細資訊,請參閱 SAP Note 2382421

  3. [A] 安裝 NFS 用戶端套件。

    yum install nfs-utils
    
  4. [AH] Red Hat for HANA 設定。

    Red Hat 客戶入口網站和下列 SAP Note 中所述,設定 RHEL:

準備檔案伺服器

下列各節提供準備檔案系統的步驟。 您已選擇在 Azure 檔案儲存體上的 NFS 檔案共用 (部分機器翻譯) 或 Azure NetApp Files 上的 NFS 磁碟區 (部分機器翻譯) 部署 /hana/shared'。

掛接共用檔案系統 (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 用戶端和 NFS 伺服器的網域設定不相符,則裝載在 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.9.0.4:/HN1-shared /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
    

    如需如何變更 nfs4_disable_idmapping 參數的詳細資訊,請參閱 Red Hat 客戶入口網站

  6. [AH1] 在站台 1 HANA DB VM 上,掛接共用的 Azure NetApp Files 磁碟區。

    sudo mount -o rw,nfsvers=4.1,hard,timeo=600,rsize=262144,wsize=262144,noatime,lock,_netdev,sec=sys 10.23.1.7:/HN1-shared-s1 /hana/shared
    
  7. [AH2] 在站台 2 HANA DB VM 上,掛接共用的 Azure NetApp Files 磁碟區。

    sudo mount -o rw,nfsvers=4.1,hard,timeo=600,rsize=262144,wsize=262144,noatime,lock,_netdev,sec=sys 10.23.1.7:/HN1-shared-s2 /hana/shared
    
  8. [AH] 使用 NFSv4 的 NFS 通訊協定,驗證所有 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.11,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.14,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 引數是等量大小。 本文件會使用兩個實體磁碟區來作為資料磁碟區,因此 -i 參數引數會設定為 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
    

安裝

此範例會在 Azure VM 上使用 HSR 在擴增設定中部署 SAP Hana,所使用的是 HANA 2.0 SP4。

準備安裝 HANA

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

  2. [1,2] 變更 /hana/shared 的權限。

    chmod 775 /hana/shared
    
  3. [1] 驗證您可以透過安全殼層 (SSH) 登入 hana-s1-db2hana-s1-db3,而不需提示輸入密碼。 如果不是這種情況,請交換 ssh 金鑰,如 使用金鑰型驗證中所述。

    ssh root@hana-s1-db2
    ssh root@hana-s1-db3
    
  4. [2] 驗證您可以透過安全殼層 (SSH) 登入 hana-s2-db2hana-s2-db3,而不需提示輸入密碼。 如果不是這種情況,請交換 ssh 金鑰,如 使用金鑰型驗證中所述。

    ssh root@hana-s2-db2
    ssh root@hana-s2-db3
    
  5. [AH] 安裝 HANA 2.0 SP4 所需的其他套件。 如需詳細資訊,請參閱針對 RHEL 7 的 SAP Note 2593824

    # If using RHEL 7
    yum install libgcc_s1 libstdc++6 compat-sap-c++-7 libatomic1
    # If using RHEL 8
    yum install libatomic libtool-ltdl.x86_64
    
  6. [A] 暫時停用防火牆,使其不會干擾 HANA 安裝。 完成 HANA 安裝之後,您可以重新啟用它。

    # Execute as root
    systemctl stop firewalld
    systemctl disable firewalld
    

在各站台第一個節點進行 HANA 安裝

  1. [1] 依照 SAP Hana 2.0 安裝和更新指南中的指示安裝 SAP Hana。 下列指示顯示網站 1 上第一個節點的 SAP Hana 安裝。

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

      ./hdblcm --internal_network=10.23.1.128/26
      
    2. 在提示字元上輸入下列值:

      • 在 [Choose an action]\(選擇動作\),輸入 1 個 (以供安裝)。
      • 在 [Additional components for installation]\(要安裝的其他元件\):輸入 2、3
      • 對安裝路徑按下 Enter 鍵 (預設為 /hana/shared)。
      • 在 [Local Host Name]\(本機主機名稱\),按下 Enter 鍵以接受預設值。
      • 在 [Do you want to add hosts to the system?]\(您是否要將其他主機新增至系統?\),輸入 n
      • 針對 SAP Hana 系統識別碼,輸入 [HN1]
      • 在 [Instance number [00]]\(執行個體編號 [00]\),輸入 03
      • 在 [Local Host Worker Group [default]]\(本機主機背景工作角色群組 [預設值]\),按下 Enter 鍵接受預設值。
      • 在 [Select System Usage / Enter index [4]]\(選取系統使用量/輸入索引 [4]\),輸入 4 (以供自訂)。
      • 在 [Location of Data Volumes [/hana/data/HN1]]\(資料磁碟區位置 [/hana/data/HN1]\),按下 Enter 鍵接受預設值。
      • 在 [ocation of Log Volumes [/hana/log/HN1]]\(檔案磁碟區位置 [/hana/log/HN1]\),按下 Enter 鍵接受預設值。
      • 在 [Restrict maximum memory allocation? [n]]\(是否限制記憶體配置上限?[n]\)輸入 n
      • 在 [Certificate Host Name For Host hana-s1-db1 [hana-s1-db1]]\(主機 hana-s1-db1 的憑證主機名稱 [hana-s1-db1]\),按下 Enter 鍵接受預設值。
      • 在 [SAP Host Agent User (sapadm) Password]\(SAP 主機代理程式使用者 (sapadm) 密碼\),輸入密碼。
      • 在 [Confirm SAP Host Agent User (sapadm) Password]\(確認 SAP 主機代理程式使用者 (sapadm) 密碼\),輸入密碼。
      • 在 [System Administrator (hn1adm) Password]\(系統管理員 \(hn1adm\) 密碼\),輸入密碼。
      • 在 [System Administrator Home Directory [/usr/sap/HN1/home]]\(系統管理員主目錄 [/usr/sap/HN1/home]\),按下 Enter 鍵接受預設值。
      • 在 [System Administrator Login Shell [/bin/sh]]\(系統管理員登入殼層 [/bin/sh]\),按下 Enter 鍵接受預設值。
      • 在 [System Administrator User ID [1001]]\(系統管理員使用者識別碼 [1001]\),按下 Enter 鍵接受預設值。
      • 在 [Enter ID of User Group \(sapsys\) [79]]\(使用者群組的輸入識別碼 \(sapsys\) [79]\),按下 Enter 鍵接受預設值。
      • 在 [System Database User \(system\) Password]\(系統資料庫使用者 \(系統\) 密碼\),輸入系統的密碼。
      • 在 [Confirm System Database User \(system\) Password]\(確認系統資料庫使用者 \(系統\) 密碼\),輸入系統的密碼。
      • 在 [Restart system after machine reboot? [n]]\(是否在電腦重新開機後重新啟動系統?[n]\),輸入 n
      • 在 [Do you want to continue \(y/n\)]\(您是否要繼續?\(y/n\)\),請驗證摘要,如果一切沒問題請輸入 y
  2. [2] 重複上述步驟,在站台 2 的第一個節點上安裝 SAP HANA。

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

    顯示 global.ini,並確定內部 SAP Hana 節點間通訊的設定已就緒。 驗證 communication 區段。 這裡應該具有 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.138 = hana-s1-db1
      10.23.1.139 = hana-s1-db2
      10.23.1.140 = hana-s1-db3
    
  4. [1,2] 準備 global.ini,以在非共用環境中安裝,如 SAP Note 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.14"
    

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

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

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

    1. root 身份啟動常駐 hdblcm 程式。

       cd /hana/shared/HN1/hdblcm
       ./hdblcm 
      
    2. 在提示字元上輸入下列值:

      • 在 [Choose an action]\(選擇動作\),輸入 2 (新增主機)。
      • 在 [Enter comma separated host names to add]\(輸入要新增的逗號分隔主機名稱\),輸入 hana-s1-db2 和 hana-s1-db3。
      • 在 [Additional components for installation]\(要安裝的其他元件\):輸入 2、3
      • 在 [Enter Root User Name [root]]\(輸入根使用者名稱 [root]\),按下 Enter 鍵接受預設值。
      • 在 [Select roles for host 'hana-s1-db2' [1]]\(選取主機 'hana-s1-db2' 的角色 [1]\),選取 1 (背景工作角色)。
      • 在 [Enter Host Failover Group for host 'hana-s1-db2' [default]]\(輸入主機 'hana-s1-db2' 的主機容錯移轉群組 [預設]\),按下 Enter 鍵接受預設值。
      • 在 [Enter Storage Partition Number for host 'hana-s1-db2' [<<assign automatically>>]]\(輸入主機 'hana-s1-db2' 的儲存體分割區號碼 [<<自動指派>>]\),按下 Enter 鍵接受預設值。
      • 在 [Enter Worker Group for host 'hana-s1-db2' [default]]\(輸入主機 'hana-s1-db2' 的背景工作角色群組 [預設]\),按下 Enter 鍵接受預設值。
      • 在 [Select roles for host 'hana-s1-db3' [1]]\(選取主機 'hana-s1-db3' 的角色 [1]\),選取 1 (背景工作角色)。
      • 在 [Enter Host Failover Group for host 'hana-s1-db3' [default]]\(輸入主機 'hana-s1-db3' 的主機容錯移轉群組 [預設]\),按下 Enter 鍵接受預設值。
      • 在 [Enter Storage Partition Number for host 'hana-s1-db3' [<<assign automatically>>]]\(輸入主機 'hana-s1-db3' 的儲存體分割區號碼 [<<自動指派>>]\),按下 Enter 鍵接受預設值。
      • 在 [Enter Worker Group for host 'hana-s1-db3' [default]]\(輸入主機 'hana-s1-db3' 的背景工作角色群組 [預設]\),按下 Enter 鍵接受預設值。
      • 在 [System Administrator (hn1adm) Password]\(系統管理員 \(hn1adm\) 密碼\),輸入密碼。
      • 在 [Enter SAP Host Agent User \(sapadm\) Password]\(輸入 SAP 主機代理程式使用者 \(sapadm\) 密碼\),輸入密碼。
      • 在 [Confirm SAP Host Agent User (sapadm) Password]\(確認 SAP 主機代理程式使用者 (sapadm) 密碼\),輸入密碼。
      • 在 [Certificate Host Name For Host hana-s1-db2 [hana-s1-db2]]\(主機 hana-s1-db2 的憑證主機名稱 [hana-s1-db2]\),按下 Enter 鍵接受預設值。
      • 在 [Certificate Host Name For Host hana-s1-db3 [hana-s1-db3]]\(主機 hana-s1-db3 的憑證主機名稱 [hana-s1-db3]\),按下 Enter 鍵接受預設值。
      • 在 [Do you want to continue \(y/n\)]\(您是否要繼續?\(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] 在網站 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 系統複寫的通訊。

    1. 停止兩個網站上的 HANA。

      sudo -u hn1adm /usr/sap/hostctrl/exe/sapcontrol -nr 03 -function StopSystem HDB
      
    2. 編輯 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.202 = hana-s1-db1
      10.23.1.203 = hana-s1-db2
      10.23.1.204 = hana-s1-db3
      10.23.1.205 = hana-s2-db1
      10.23.1.206 = hana-s2-db2
      10.23.1.207 = hana-s2-db3
      
    3. 在兩個網站上啟動 HANA。

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

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

  5. [AH] 重新啟用防火牆並開啟必要的連接埠。

    1. 重新啟用防火牆。

      # Execute as root
      systemctl start firewalld
      systemctl enable firewalld
      
    2. 開啟必要的防火牆連接埠。 您必須調整 HANA 執行個體號碼的連接埠。

      重要

      建立防火牆規則以允許 HANA 節點間通訊和用戶端流量。 所有 SAP 產品的 TCP/IP 通訊埠會列出必要的連接埠。 下列命令只是範例。 在此案例中會使用系統號碼 03。

       # Execute as root
       sudo firewall-cmd --zone=public --add-port={30301,30303,30306,30307,30313,30315,30317,30340,30341,30342,1128,1129,40302,40301,40307,40303,40340,50313,50314,30310,30302}/tcp --permanent
       sudo firewall-cmd --zone=public --add-port={30301,30303,30306,30307,30313,30315,30317,30340,30341,30342,1128,1129,40302,40301,40307,40303,40340,50313,50314,30310,30302}/tcp
      

建立 Pacemaker 叢集

若要建立基本 Pacemaker 叢集,請遵循在 Azure 的 Red Hat Enterprise Linux 上設定 Pacemaker (部分機器翻譯) 中的步驟。 包括所有虛擬機器 (含叢集中的多數仲裁者)。

重要

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

建立檔案系統資源

在此流程的下一個部分中,您需要建立檔案系統資源。 方法如下:

  1. [1,2] 停止兩個複寫網站上的 SAP Hana。 以 <sid>adm 身分執行。

    sapcontrol -nr 03 -function StopSystem
    
  2. [AH] 卸載檔案系統 /hana/shared,此系統已暫時裝載,以供所有 HANA DB VM 上安裝。 您必須先停止任何使用檔案系統的流程和工作階段,才能將它卸載。

    umount /hana/shared 
    
  3. [1] 建立處於停用狀態,適用於 /hana/shared 的檔案系統叢集資源。 因為您必須在啟用裝載之前定義位置條件約束,所以您需使用 --disabled
    您已選擇在 Azure 檔案儲存體上的 NFS 檔案共用 (部分機器翻譯) 或 Azure NetApp Files 上的 NFS 磁碟區 (部分機器翻譯) 部署 /hana/shared'。

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

      # /hana/shared file system for site 1
      pcs resource create fs_hana_shared_s1 --disabled ocf:heartbeat:Filesystem device=10.23.1.7:/HN1-shared-s1  directory=/hana/shared \
      fstype=nfs options='defaults,rw,hard,timeo=600,rsize=262144,wsize=262144,proto=tcp,noatime,sec=sys,nfsvers=4.1,lock,_netdev' op monitor interval=20s on-fail=fence timeout=120s OCF_CHECK_LEVEL=20 \
      op start interval=0 timeout=120 op stop interval=0 timeout=120
      
      # /hana/shared file system for site 2
      pcs resource create fs_hana_shared_s2 --disabled ocf:heartbeat:Filesystem device=10.23.1.7:/HN1-shared-s1 directory=/hana/shared \
      fstype=nfs options='defaults,rw,hard,timeo=600,rsize=262144,wsize=262144,proto=tcp,noatime,sec=sys,nfsvers=4.1,lock,_netdev' op monitor interval=20s on-fail=fence timeout=120s OCF_CHECK_LEVEL=20 \
      op start interval=0 timeout=120 op stop interval=0 timeout=120
      
      # clone the /hana/shared file system resources for both site1 and site2
      pcs resource clone fs_hana_shared_s1 meta clone-node-max=1 interleave=true
      pcs resource clone fs_hana_shared_s2 meta clone-node-max=1 interleave=true
      
      

    建議的逾時值可讓叢集資源承受 Azure NetApp Files 上與 NFSv4.1 租用更新有關的通訊協定特定暫停。 如需詳細資訊,請參閱 NetApp 中的 NFS 最佳做法

    • 在此範例中,'/hana/shared' 檔案系統部署在 Azure 檔案儲存體的 NFS 上。 本節中的步驟僅適用於您在 Azure 檔案儲存體上使用 NFS 的情況。

      # /hana/shared file system for site 1
      pcs resource create fs_hana_shared_s1 --disabled ocf:heartbeat:Filesystem device=sapnfsafs.file.core.windows.net:/sapnfsafs/hn1-shared-s1  directory=/hana/shared \
      fstype=nfs options='defaults,rw,hard,proto=tcp,noatime,nfsvers=4.1,lock' op monitor interval=20s on-fail=fence timeout=120s OCF_CHECK_LEVEL=20 \
      op start interval=0 timeout=120 op stop interval=0 timeout=120
      
      # /hana/shared file system for site 2
      pcs resource create fs_hana_shared_s2 --disabled ocf:heartbeat:Filesystem device=sapnfsafs.file.core.windows.net:/sapnfsafs/hn1-shared-s2 directory=/hana/shared \
      fstype=nfs options='defaults,rw,hard,proto=tcp,noatime,nfsvers=4.1,lock' op monitor interval=20s on-fail=fence timeout=120s OCF_CHECK_LEVEL=20 \
      op start interval=0 timeout=120 op stop interval=0 timeout=120
      
      # clone the /hana/shared file system resources for both site1 and site2
      pcs resource clone fs_hana_shared_s1 meta clone-node-max=1 interleave=true
      pcs resource clone fs_hana_shared_s2 meta clone-node-max=1 interleave=true
      

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

      on-fail=fence 屬性也會新增至監視作業。 使用此選項時,如果監視作業在節點上失敗,該節點就會立即受到隔離。 如果沒有此選項,預設行為是停止相依於失敗資源的所有資源,然後重新啟動失敗的資源,接著啟動相依於失敗資源的所有資源。 當 SAP Hana 資源相依於失敗的資源時,此行為不僅需要花費很長的時間,也可能完全失敗。 如果無法存取保存 HANA 二進位檔的 NFS 共用,則無法成功停止 SAP Hana 資源。

      上述設定中的逾時可能需要針對特定的 SAP 設定進行調整。

  4. [1] 設定並驗證節點屬性。 複寫網站 1 上的所有 SAP Hana DB 節點都會指派 S1 屬性,而複寫網站 2 上的所有 SAP Hana DB 節點都會指派 S2 屬性。

    # HANA replication site 1
    pcs node attribute hana-s1-db1 NFS_SID_SITE=S1
    pcs node attribute hana-s1-db2 NFS_SID_SITE=S1
    pcs node attribute hana-s1-db3 NFS_SID_SITE=S1
    # HANA replication site 2
    pcs node attribute hana-s2-db1 NFS_SID_SITE=S2
    pcs node attribute hana-s2-db2 NFS_SID_SITE=S2
    pcs node attribute hana-s2-db3 NFS_SID_SITE=S2
    # To verify the attribute assignment to nodes execute
    pcs node attribute
    
  5. [1] 設定條件約束,以確定要裝載 NFS 檔案系統的位置,並啟用檔案系統資源。

    # Configure the constraints
    pcs constraint location fs_hana_shared_s1-clone rule resource-discovery=never score=-INFINITY NFS_SID_SITE ne S1
    pcs constraint location fs_hana_shared_s2-clone rule resource-discovery=never score=-INFINITY NFS_SID_SITE ne S2
    # Enable the file system resources
    pcs resource enable fs_hana_shared_s1
    pcs resource enable fs_hana_shared_s2
    

    當您啟用檔案系統資源時,叢集會掛載 /hana/shared 檔案系統。

  6. [AH] 驗證 Azure NetApp Files 磁碟區已裝載在兩個網站上所有 HANA DB VM 的 /hana/shared 下。

    • 範例,如果使用 Azure NetApp Files:

      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.11,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.14,local_lock=none,addr=10.23.1.7
      
    • 範例,如果使用 Azure 檔案儲存體 NFS:

      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
      
  7. [1] 設定和複製屬性資源,並設定條件約束,如下所示:

    # Configure the attribute resources
    pcs resource create hana_nfs_s1_active ocf:pacemaker:attribute active_value=true inactive_value=false name=hana_nfs_s1_active
    pcs resource create hana_nfs_s2_active ocf:pacemaker:attribute active_value=true inactive_value=false name=hana_nfs_s2_active
    # Clone the attribute resources
    pcs resource clone hana_nfs_s1_active meta clone-node-max=1 interleave=true
    pcs resource clone hana_nfs_s2_active meta clone-node-max=1 interleave=true
    # Configure the constraints, which will set the attribute values
    pcs constraint order fs_hana_shared_s1-clone then hana_nfs_s1_active-clone
    pcs constraint order fs_hana_shared_s2-clone then hana_nfs_s2_active-clone
    

    提示

    如果您的設定包括 /hana/shared 以外的檔案系統,而且這些檔案系統已裝載 NFS,則請包括 sequential=false 選項。 此選項可確保檔案系統之間沒有排序相依性。 所有 NFS 裝載的檔案系統都必須在對應的屬性資源之前啟動,但不需要以彼此相對的任何順序啟動。 如需詳細資訊,請參閱當 HANA 檔案系統為 NFS 共用時,如何在 Pacemaker 叢集中設定 SAP Hana 擴增 HSR

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

    pcs property set maintenance-mode=true
    

建立 SAP HANA 叢集資源

現在您已準備好建立叢集資源:

  1. [A] 在所有叢集節點上安裝 HANA 擴增資源代理程式,包括多數製作者。

    yum install -y resource-agents-sap-hana-scaleout 
    

    注意

    如需作業系統版本的 resource-agents-sap-hana-scaleout 最低支援套件版本,請參閱叢集中 RHEL HA 叢集的支援原則 - 叢集中 SAP Hana 的管理

  2. [1,2] 在每個系統複寫網站的一個 HANA DB 節點上安裝 HANA 系統複寫勾點。 SAP Hana 仍應關閉。

    1. 將勾點準備為 root

      mkdir -p /hana/shared/myHooks
      cp /usr/share/SAPHanaSR-ScaleOut/SAPHanaSR.py /hana/shared/myHooks
      chown -R hn1adm:sapsys /hana/shared/myHooks
      
    2. 調整 global.ini

      # add to global.ini
      [ha_dr_provider_SAPHanaSR]
      provider = SAPHanaSR
      path = /hana/shared/myHooks
      execution_order = 1
      
      [trace]
      ha_dr_saphanasr = info
      
  3. [AH] 叢集需要 <sid>adm 叢集節點上的 sudoers 設定。 在此範例中,您會藉由建立新的檔案來達成此目的。 以 root 身份執行該命令。

    sudo visudo -f /etc/sudoers.d/20-saphana
    # Insert the following lines and then save
    Cmnd_Alias SOK = /usr/sbin/crm_attribute -n hana_hn1_glob_srHook -v SOK -t crm_config -s SAPHanaSR
    Cmnd_Alias SFAIL = /usr/sbin/crm_attribute -n hana_hn1_glob_srHook -v SFAIL -t crm_config -s SAPHanaSR
    hn1adm ALL=(ALL) NOPASSWD: SOK, SFAIL
    Defaults!SOK, SFAIL !requiretty
    
  4. [1,2] 啟動兩個複寫網站上的 SAP Hana。 以 <sid>adm 身分執行。

    sapcontrol -nr 03 -function StartSystem 
    
  5. [1] 驗證勾點安裝。 在作用中的 HANA 系統複寫網站上,以 <sid>adm 身分執行。

    cdtrace
     awk '/ha_dr_SAPHanaSR.*crm_attribute/ \
     { printf "%s %s %s %s\n",$2,$3,$5,$16 }' nameserver_*
    
     # Example entries
     # 2020-07-21 22:04:32.364379 ha_dr_SAPHanaSR SFAIL
     # 2020-07-21 22:04:46.905661 ha_dr_SAPHanaSR SFAIL
     # 2020-07-21 22:04:52.092016 ha_dr_SAPHanaSR SFAIL
     # 2020-07-21 22:04:52.782774 ha_dr_SAPHanaSR SFAIL
     # 2020-07-21 22:04:53.117492 ha_dr_SAPHanaSR SFAIL
     # 2020-07-21 22:06:35.599324 ha_dr_SAPHanaSR SOK
    
  6. [1] 建立 HANA 叢集資源。 以 root 執行下列命令。

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

    2. 接下來,建立 HANA 拓撲資源。
      如果要組建 RHEL 7.x 叢集,請使用下列命令:

      pcs resource create SAPHanaTopology_HN1_HDB03 SAPHanaTopologyScaleOut \
       SID=HN1 InstanceNumber=03 \
       op start timeout=600 op stop timeout=300 op monitor interval=10 timeout=600
      
      pcs resource clone SAPHanaTopology_HN1_HDB03 meta clone-node-max=1 interleave=true
      

      如果要組建 RHEL >= 8.x 叢集,請使用下列命令:

      pcs resource create SAPHanaTopology_HN1_HDB03 SAPHanaTopology \
       SID=HN1 InstanceNumber=03 meta clone-node-max=1 interleave=true \
       op methods interval=0s timeout=5 \
       op start timeout=600 op stop timeout=300 op monitor interval=10 timeout=600
      
      pcs resource clone SAPHanaTopology_HN1_HDB03 meta clone-node-max=1 interleave=true
      
    3. 建立 HANA 執行個體資源。

      注意

      本文參考了 Microsoft 不再使用的詞彙。 從軟體中移除該字詞時,我們也會將其從本文中移除。

      如果要組建 RHEL 7.x 叢集,請使用下列命令:

      pcs resource create SAPHana_HN1_HDB03 SAPHanaController \
       SID=HN1 InstanceNumber=03 PREFER_SITE_TAKEOVER=true DUPLICATE_PRIMARY_TIMEOUT=7200 AUTOMATED_REGISTER=false \
       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
      
      pcs resource master msl_SAPHana_HN1_HDB03 SAPHana_HN1_HDB03 \
       meta master-max="1" clone-node-max=1 interleave=true
      

      如果要組建 RHEL >= 8.x 叢集,請使用下列命令:

      pcs resource create SAPHana_HN1_HDB03 SAPHanaController \
       SID=HN1 InstanceNumber=03 PREFER_SITE_TAKEOVER=true DUPLICATE_PRIMARY_TIMEOUT=7200 AUTOMATED_REGISTER=false \
       op demote interval=0s timeout=320 op methods interval=0s timeout=5 \
       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
      
      pcs resource promotable SAPHana_HN1_HDB03 \
       meta master-max="1" clone-node-max=1 interleave=true
      

      重要

      當執行容錯移轉測試時,最好將 AUTOMATED_REGISTER 設定為 false,以防止失敗的主要執行個體自動註冊為次要執行個體。 測試之後,最佳做法是將 AUTOMATED_REGISTER 設定為 true,以便在接管之後,系統複寫可以自動繼續。

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

      pcs resource create vip_HN1_03 ocf:heartbeat:IPaddr2 ip=10.23.0.18 op monitor interval="10s" timeout="20s"
      sudo pcs resource create nc_HN1_03 azure-lb port=62503
      sudo pcs resource group add g_ip_HN1_03 nc_HN1_03 vip_HN1_03
      
    5. 建立叢集條件約束。

      如果要組建 RHEL 7.x 叢集,請使用下列命令:

      #Start HANA topology, before the HANA instance
      pcs constraint order SAPHanaTopology_HN1_HDB03-clone then msl_SAPHana_HN1_HDB03
      
      pcs constraint colocation add g_ip_HN1_03 with master msl_SAPHana_HN1_HDB03 4000
      #HANA resources are only allowed to run on a node, if the node's NFS file systems are mounted. The constraint also avoids the majority maker node
      pcs constraint location SAPHanaTopology_HN1_HDB03-clone rule resource-discovery=never score=-INFINITY hana_nfs_s1_active ne true and hana_nfs_s2_active ne true
      

      如果要組建 RHEL >= 8.x 叢集,請使用下列命令:

      #Start HANA topology, before the HANA instance
      pcs constraint order SAPHanaTopology_HN1_HDB03-clone then SAPHana_HN1_HDB03-clone
      
      pcs constraint colocation add g_ip_HN1_03 with master SAPHana_HN1_HDB03-clone 4000
      #HANA resources are only allowed to run on a node, if the node's NFS file systems are mounted. The constraint also avoids the majority maker node
      pcs constraint location SAPHanaTopology_HN1_HDB03-clone rule resource-discovery=never score=-INFINITY hana_nfs_s1_active ne true and hana_nfs_s2_active ne true
      
  7. [1] 將叢集置於維護模式外。 請確定叢集狀態 ok,且所有資源皆已啟動。

    sudo pcs property set maintenance-mode=false
    #If there are failed cluster resources, you may need to run the next command
    pcs resource cleanup
    

    注意

    上述設定中的逾時只是範例,可能需要針對特定的 HANA 安裝來調整。 比方說,如果啟動 SAP Hana 資料庫需要較長的時間,您可能需要延長啟動逾時。

設定啟用 HANA 作用中/讀取的系統複寫

從 SAP Hana 2.0 SPS 01 開始,SAP 允許 SAP Hana 系統複寫的作用中/啟用讀取設定。 透過這項功能,您可以使用 SAP Hana 系統複寫的次要系統主動進行讀取密集型工作負載。 若要在叢集中支援這類設定,您需要第二個虛擬 IP 位址,讓用戶端能夠存取已啟用次要讀取的 SAP Hana 資料庫。 為了確保在接管發生之後仍可存取次要複寫網站,叢集需要將虛擬 IP 位址與 SAP Hana 資源的次要網站一起移動。

本節說明在 Red Hat 高可用性叢集中,使用第二個虛擬 IP 位址來管理這種類型的系統複寫所需的額外步驟。

繼續之前,請確定您已完整設定 Red Hat 高可用性叢集、管理 SAP Hana 資料庫,如本文稍早所述。

利用支援讀取的次要資料庫確保 SAP HANA 擴增高可用性

在 Azure Load Balancer 中啟用/讀取啟用設定的其他設定

若要繼續佈建您的第二個虛擬 IP,請確定您已設定 Azure Load Balancer,如設定 Azure Load Balancer 中所述。

針對標準負載平衡器,請遵循您在上一節中建立的相同負載平衡器上的這些額外步驟。

  1. 建立第二個前端 IP 集區:

    1. 開啟負載平衡器,選取 [前端 IP 集區],然後選取 [新增]
    2. 輸入新的前端 IP 集區名稱 (例如 hana-secondaryIP)。
    3. 將 [指派] 設為 [靜態],然後輸入 IP 位址 (例如 10.23.0.19)。
    4. 選取 [確定]。
    5. 建立新的前端 IP 集區之後,請記下集區 IP 位址。
  2. 接下來,建立健全狀態探查:

    1. 開啟負載平衡器,選取 [健康情況探查],然後選取 [新增]
    2. 輸入新的健全狀態探查名稱 (例如 hana-secondaryhp)。
    3. 選取 [TCP] 作為通訊協定和連接埠 62603。 讓 [間隔] 值保持設定為 5,而讓 [狀況不良閾值] 值保持設定為 2。
    4. 選取 [確定]。
  3. 接下來,建立負載平衡規則:

    1. 開啟負載平衡器,選取 [負載平衡規則],然後選取 [新增]
    2. 輸入新的負載平衡器規則名稱 (例如 hana-secondarylb)。
    3. 選取您稍早建立的前端 IP 位址、後端集區及健全狀態探查 (例如,hana-secondaryIPhana-backendhana-secondaryhp)。
    4. 選取 [HA 連接埠]
    5. 務必啟用浮動 IP
    6. 選取 [確定]。

設定啟用 HANA 作用中/讀取的系統複寫

設定 HANA 系統複寫的步驟會在設定 SAP Hana 2.0 系統複寫一節中說明。 如果您要部署啟用讀取的次要案例,當您在第二個節點上設定系統複寫時,請以 hanasidadm 身分執行下列命令:

sapcontrol -nr 03 -function StopWait 600 10 

hdbnsutil -sr_register --remoteHost=hana-s1-db1 --remoteInstance=03 --replicationMode=sync --name=HANA_S2 --operationMode=logreplay_readaccess 

針對作用中/啟用讀取的設定新增次要虛擬 IP 位址資源

您可以使用下列命令來設定第二個虛擬 IP 和其他條件約束。 如果次要執行個體關閉,次要虛擬 IP 將會切換至主要執行個體。

pcs property set maintenance-mode=true

pcs resource create secvip_HN1_03 ocf:heartbeat:IPaddr2 ip="10.23.0.19"
pcs resource create secnc_HN1_03 ocf:heartbeat:azure-lb port=62603
pcs resource group add g_secip_HN1_03 secnc_HN1_03 secvip_HN1_03

# RHEL 8.x: 
pcs constraint location g_ip_HN1_03 rule score=500 role=master hana_hn1_roles eq "master1:master:worker:master" and hana_hn1_clone_state eq PROMOTED
pcs constraint location g_secip_HN1_03 rule score=50  hana_hn1_roles eq 'master1:master:worker:master'
pcs constraint order promote  SAPHana_HN1_HDB03-clone then start g_ip_HN1_03
pcs constraint order start g_ip_HN1_03 then start g_secip_HN1_03
pcs constraint colocation add g_secip_HN1_03 with Slave SAPHana_HN1_HDB03-clone 5

# RHEL 7.x:
pcs constraint location g_ip_HN1_03 rule score=500 role=master hana_hn1_roles eq "master1:master:worker:master" and hana_hn1_clone_state eq PROMOTED
pcs constraint location g_secip_HN1_03 rule score=50  hana_hn1_roles eq 'master1:master:worker:master'
pcs constraint order promote  msl_SAPHana_HN1_HDB03 then start g_ip_HN1_03
pcs constraint order start g_ip_HN1_03 then start g_secip_HN1_03
pcs constraint colocation add g_secip_HN1_03 with Slave msl_SAPHana_HN1_HDB03 5

pcs property set maintenance-mode=false

請確定叢集狀態 ok,且所有資源皆已啟動。 第二個虛擬 IP 將會在次要網站以及 SAP Hana 次要資源上執行,。

# Example output from crm_mon
#Online: [ hana-s-mm hana-s1-db1 hana-s1-db2 hana-s1-db3 hana-s2-db1 hana-s2-db2 hana-s2-db3 ]
#
#Active resources:
#
#rsc_st_azure    (stonith:fence_azure_arm):      Started hana-s-mm
#Clone Set: fs_hana_shared_s1-clone [fs_hana_shared_s1]
#    Started: [ hana--s1-db1 hana-s1-db2 hana-s1-db3 ]
#Clone Set: fs_hana_shared_s2-clone [fs_hana_shared_s2]
#    Started: [ hana-s2-db1 hana-s2-db2 hana-s2-db3 ]
#Clone Set: hana_nfs_s1_active-clone [hana_nfs_s1_active]
#    Started: [ hana-s1-db1 hana-s1-db2 hana-s1-db3 ]
#Clone Set: hana_nfs_s2_active-clone [hana_nfs_s2_active]
#    Started: [ hana-s2-db1 hana-s2-db2 hana-s2-db3 ]
#Clone Set: SAPHanaTopology_HN1_HDB03-clone [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 [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_03
#    nc_HN1_03  (ocf::heartbeat:azure-lb):      Started hana-s1-db1
#    vip_HN1_03 (ocf::heartbeat:IPaddr2):       Started hana-s1-db1
#Resource Group: g_secip_HN1_03
#    secnc_HN1_03       (ocf::heartbeat:azure-lb):      Started hana-s2-db1
#    secvip_HN1_03      (ocf::heartbeat:IPaddr2):       Started hana-s2-db1

在下一節中,您可以找到一組要執行的一般容錯移轉測試。

當您測試以啟用讀取的次要案例設定的 HANA 叢集時,請注意第二個虛擬 IP 的下列行為:

  • 當叢集資源 SAPHana_HN1_HDB03 移至次要網站 (S2) 時,第二個虛擬 IP 會移至另一個網站 (hana-s1-db1)。 如果您已設定 AUTOMATED_REGISTER="false",且 HANA 系統複寫未自動註冊,則第二個虛擬 IP 將會在 hana-s2-db1 上執行。

  • 當您測試伺服器損毀時,第二個虛擬 IP 資源 (secvip_HN1_03) 和 Azure Load Balancer 連接埠 (secnc_HN1_03) 會搭配主要虛擬 IP 資源在主要伺服器上執行。 當次要伺服器關閉時,連線到已啟用讀取 HANA 資料庫的應用程式將會連線到主要 HANA 資料庫。 此行為是預期的。 在次要伺服器無法使用時,它可讓連線到已啟用讀取的 HANA 資料庫應用程式運作。

  • 在容錯移轉和後援期間,使用第二個虛擬 IP 連線到 HANA 資料庫的應用程式現有連線可能會中斷。

測試 SAP Hana 容錯移轉

  1. 開始測試之前,請先檢查叢集並 SAP Hana 系統複寫狀態。

    1. 驗證沒有失敗的叢集動作。

      #Verify that there are no failed cluster actions
      pcs status
      # Example
      #Stack: corosync
      #Current DC: hana-s-mm (version 1.1.19-8.el7_6.5-c3c624ea3d) - partition with quorum
      #Last updated: Thu Sep 24 06:00:20 2020
      #Last change: Thu Sep 24 05:59:17 2020 by root via crm_attribute on hana-s1-db1
      #
      #7 nodes configured
      #45 resources 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:
      #
      #rsc_st_azure    (stonith:fence_azure_arm):      Started hana-s-mm
      #Clone Set: fs_hana_shared_s1-clone [fs_hana_shared_s1]
      #    Started: [ hana--s1-db1 hana-s1-db2 hana-s1-db3 ]
      #Clone Set: fs_hana_shared_s2-clone [fs_hana_shared_s2]
      #    Started: [ hana-s2-db1 hana-s2-db2 hana-s2-db3 ]
      #Clone Set: hana_nfs_s1_active-clone [hana_nfs_s1_active]
      #    Started: [ hana-s1-db1 hana-s1-db2 hana-s1-db3 ]
      #Clone Set: hana_nfs_s2_active-clone [hana_nfs_s2_active]
      #    Started: [ hana-s2-db1 hana-s2-db2 hana-s2-db3 ]
      #Clone Set: SAPHanaTopology_HN1_HDB03-clone [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 [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_03
      #    nc_HN1_03  (ocf::heartbeat:azure-lb):      Started hana-s1-db1
      #    vip_HN1_03 (ocf::heartbeat:IPaddr2):       Started hana-s1-db1
      
    2. 驗證 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 |
      #| -------- | ----------- | ----- | ------------ | --------- | ------- | --------- | ------------- | -------- | --------- | --------- | ------------- | ----------- | ----------- | -------------- |
      #| HN1      | hana-s1-db3 | 30303 | indexserver  |         5 |       2 | HANA_S1   | hana-s2-db3 |     30303  |         1 | HANA_S2   | YES           | SYNC        | ACTIVE      |                |
      #| HN1      | hana-s1-db2 | 30303 | indexserver  |         4 |       2 | HANA_S1   | hana-s2-db2 |     30303  |         1 | HANA_S2   | YES           | SYNC        | ACTIVE      |                |  
      #| SYSTEMDB | hana-s1-db1 | 30301 | nameserver   |         1 |       2 | HANA_S1   | hana-s2-db1 |     30301  |         1 | HANA_S2   | YES           | SYNC        | ACTIVE      |                |
      #| HN1      | hana-s1-db1 | 30307 | xsengine     |         2 |       2 | HANA_S1   | hana-s2-db1 |     30307  |         1 | HANA_S2   | YES           | SYNC        | ACTIVE      |                |
      #| HN1      | hana-s1-db1 | 30303 | indexserver  |         3 |       2 | HANA_S1   | hana-s2-db1 |     30303  |         1 | 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. 驗證失敗案例的叢集設定,當節點無法存取 NFS 共用時(/hana/shared)。

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

    預期結果:當您封鎖其中一個主要站台 VM 上的 /hana/shared NFS 掛接檔案系統存取權時,在檔案系統上執行讀取/寫入作業的監視作業便會失敗,因為無法存取檔案系統,且會觸發 HANA 資源容錯移轉。 當您的 HANA 節點失去 NFS 共用的存取權時,預期會產生相同的結果。

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

    # Output of crm_mon
    #7 nodes configured
    #45 resources 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:
    
    #rsc_st_azure    (stonith:fence_azure_arm):      Started hana-s-mm
    # Clone Set: fs_hana_shared_s1-clone [fs_hana_shared_s1]
    #    Started: [ hana-s1-db1 hana-s1-db2 hana-s1-db3 ]
    # Clone Set: fs_hana_shared_s2-clone [fs_hana_shared_s2]
    #     Started: [ hana-s2-db1 hana-s2-db2 hana-s2-db3 ]
    # Clone Set: hana_nfs_s1_active-clone [hana_nfs_s1_active]
    #     Started: [ hana-s1-db1 hana-s1-db2 hana-s1-db3 ]
    # Clone Set: hana_nfs_s2_active-clone [hana_nfs_s2_active]
    #     Started: [ hana-s2-db1 hana-s2-db2 hana-s2-db3 ]
    # Clone Set: SAPHanaTopology_HN1_HDB03-clone [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 [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_03
    #     nc_HN1_03  (ocf::heartbeat:azure-lb):      Started hana-s1-db1
    #     vip_HN1_03 (ocf::heartbeat:IPaddr2):       Started hana-s1-db1
    

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

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

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

    在此範例中,該命令已在 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/shared 存取權的 HANA VM 應該重新啟動或停止。 叢集資源會移轉至其他 HANA 系統複寫網站。

    如果叢集尚未在重新啟動的 VM 上啟動,請執行下列命令來啟動叢集:

    # Start the cluster 
    pcs cluster start
    

    叢集啟動時,會自動裝載 /hana/shared 檔案系統。 如果您設定 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 clean up failed resources
    pcs resource cleanup SAPHana_HN1_HDB03
    

    測試之後的資源狀態:

    # Output of crm_mon
    #7 nodes configured
    #45 resources 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:
    
    #rsc_st_azure    (stonith:fence_azure_arm):      Started hana-s-mm
    # Clone Set: fs_hana_shared_s1-clone [fs_hana_shared_s1]
    #    Started: [ hana-s1-db1 hana-s1-db2 hana-s1-db3 ]
    # Clone Set: fs_hana_shared_s2-clone [fs_hana_shared_s2]
    #     Started: [ hana-s2-db1 hana-s2-db2 hana-s2-db3 ]
    # Clone Set: hana_nfs_s1_active-clone [hana_nfs_s1_active]
    #     Started: [ hana-s1-db1 hana-s1-db2 hana-s1-db3 ]
    # Clone Set: hana_nfs_s2_active-clone [hana_nfs_s2_active]
    #     Started: [ hana-s2-db1 hana-s2-db2 hana-s2-db3 ]
    # Clone Set: SAPHanaTopology_HN1_HDB03-clone [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 [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_03
    #     nc_HN1_03  (ocf::heartbeat:azure-lb):      Started hana-s2-db1
    #     vip_HN1_03 (ocf::heartbeat:IPaddr2):       Started hana-s2-db1
    

建議您徹底測試 SAP Hana 叢集設定,方法是同時執行在 RHEL 上 Azure VM 的 SAP Hana 高可用性中記錄的測試。

下一步