你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

在 RHEL 上使用 SAP ASCS/SCS 高可用性 VM 部署 SAP 对话实例

本文介绍如何在 Red Hat Enterprise Linux (RHEL) 上运行的同一 ABAP SAP 中心服务 (ASCS)/SAP 中心服务 (SCS) 高可用性群集上安装和配置主应用程序服务器 (PAS) 和其他应用程序服务器 (AAS) 对话实例。

参考

概述

本文介绍成本优化方案,在此方案中,在高可用性设置中使用 SAP ASCS/SCS 和排队复制服务器 (ERS) 部署 PAS 和 AAS 对话实例。 若要将单个 SAP 系统的 VM 数量降至最低,需在运行 SAP ASCS/SCS 和 SAP ERS 的同一主机上安装 PAS 和 AAS。 在高可用性群集设置中配置 SAP ASCS/SCS 后,PAS 和 AAS 也需要由群集管理。 本质上,该配置是对已配置的 SAP ASCS/SCS 群集设置的补充。 在此设置中,PAS 和 AAS 安装在虚拟主机名上,其实例目录由群集进行管理。

对于此设置,PAS 和 AAS 需要高度可用的实例目录 (/usr/sap/<SID>/D<nr>)。 可以将实例目录文件系统放置在用于 ASCS 和 ERS 实例配置的同一个高度可用的存储上。 演示的体系结构展示 Azure 文件存储上的 NFSAzure NetApp 文件,用于设置的高可用性实例目录。

本文中所示的用于描述部署的示例使用以下系统信息:

实例名称 实例编号 虚拟主机名 虚拟 IP(探测端口)
ABAP SAP 中心服务 (ASCS) 00 sapascs 10.90.90.10 (62000)
排队复制服务器 (ERS) 01 sapers 10.90.90.9 (62001)
主应用程序服务器 (PAS) 02 sappas 10.90.90.30 (62002)
其他应用程序服务器 (AAS) 03 sapers 10.90.90.31 (62003)
SAP 系统标识符 NW1 --- ---

注意

如果要横向扩展,请在单独的 VM 上安装更多 SAP 应用程序实例。

Diagram that shows the architecture of dialog instance installation with an SAP ASCS/SCS cluster.

成本优化解决方案的重要注意事项

  • 使用 SAP ASCS/SCS 群集设置只能部署两个对话实例:PAS 和一个 AAS。
  • 如果想要通过更多应用程序服务器(如 sapa03sapa04)横向扩展 SAP 系统,可以将其安装在单独的 VM 中。 在虚拟主机名上安装 PAS 和 AAS 后,可以在单独的 VM 中使用物理或虚拟主机名安装更多应用程序服务器。 若要详细了解如何将虚拟主机名分配给 VM,请参阅博客在 Azure 中将 SAP 虚拟主机名与 Linux 结合使用
  • 使用 SAP ASCS/SCS 群集设置进行 PAS 和 AAS 部署时,ASCS、ERS、PAS 和 AAS 的实例编号必须不同。
  • 请考虑根据调整大小指南适当调整 VM SKU 的大小。 必须考虑到群集行为,如果群集中的另一个 VM 不可用,多个 SAP 实例(ASCS、ERS、PAS 和 AAS)可能会在单个 VM 上运行。
  • 使用 SAP ASCS/SCS 群集设置运行的对话实例(PAS 和 AAS)必须使用虚拟主机名进行安装。
  • 还必须使用与 SAP ASCS/SCS 群集设置相同的存储解决方案来部署 PAS 和 AAS 实例。 例如,如果使用 Azure 文件存储上的 NFS 配置了 SAP ASCS/SCS 群集,则必须使用相同的存储解决方案来部署 PAS 和 AAS。
  • PAS 和 AAS 的实例目录 /usr/sap/<SID>/D<nr> 必须装载在 NFS 文件系统上,并作为资源由群集进行管理。

    注意

    对于 SAP J2EE 系统,不支持在 Azure 文件存储上的 NFS 上放置 /usr/sap/<SID>/J<nr>

  • 若要在单独的 VM 上安装更多应用程序服务器,可以使用 NFS 共享或本地托管磁盘作为实例目录文件系统。 如果要为 SAP J2EE 系统安装更多应用程序服务器,则不支持 Azure 文件存储上 NFS 上的 /usr/sap/<SID>/J<nr>
  • 在传统的 SAP ASCS/SCS 高可用性配置中,如果对 SAP ASCS 和 ERS 群集节点有任何影响,则在单独的 VM 上运行的应用程序服务器实例不受影响。 但是,通过成本优化配置,如果群集中的其中一个节点受到影响,则 PAS 或 AAS 实例会重启。
  • 请参阅 Azure 文件存储上的 NFS 注意事项Azure NetApp 文件注意事项,因为这些注意事项同样适用于此设置。

先决条件

本文中所述的配置是对已配置的 SAP ASCS/SCS 群集设置的补充。 在此配置中,PAS 和 AAS 安装在虚拟主机名上,其实例目录由群集进行管理。 根据你的存储,按照以下文章中所述的步骤为群集中的 SAP ASCS 和 SAP ERS 实例配置 SAPInstance 资源。

使用软件设置管理器 (SWPM) 安装 ASCSERS数据库实例后,请按照后续步骤安装 PAS 和 AAS 实例。

配置适用于 PAS 和 AAS 的 Azure 负载均衡器

本文假设已为 SAP ASCS/SCS 群集设置配置了负载均衡器,如配置 Azure 负载均衡器中所述。 在相同的 Azure 负载均衡器实例中,按照以下步骤为 PAS 和 AAS 创建更多前端 IP 和负载均衡规则。

  1. 打开为 SAP ASCS/SCS 群集设置创建的内部负载均衡器。
  2. 前端 IP 配置:创建两个前端 IP,一个用于 PAS,另一个用于 AAS(例如:10.90.90.3010.90.90.31)。
  3. 后端池:此池保持不变,因为 PAS 和 AAS 是在同一个后端池上部署的。
  4. 入站规则:创建两个负载均衡规则,一个用于 PAS,另一个用于 AAS。 对两个负载均衡规则执行相同步骤。
  5. 前端 IP 地址:选择前端 IP。
    1. 后端池:选择后端池。
    2. 高可用性端口:选择此选项。
    3. 协议:选择“TCP”。
    4. 运行状况探测:创建具有以下详细信息的运行状况探测(适用于 PAS 和 AAS):
      1. 协议:选择“TCP”。
      2. 端口:例如:620<Instance-no.> 用于 PAS, 620<Instance-no.> 用于 AAS。
      3. 间隔时间:输入 5
      4. 探测阈值:输入 2
    5. 空闲超时(分钟):输入 30
    6. 启用浮动 IP:选择此选项。

不会遵循运行状况探测配置属性 numberOfProbes(在 Microsoft Azure 门户中也称为“运行不正常阈值”)。 要控制成功或失败的连续探测数量,请将属性 probeThreshold 设置为 2。 目前无法使用 Microsoft Azure 门户设置此属性。 请使用 Azure CLIPowerShell 命令。

重要

负载均衡方案中的 NIC 辅助 IP 配置不支持浮动 IP。 有关详细信息,请参阅 Azure 负载均衡器限制。 如果 VM 需要更多 IP 地址,请部署第二个 NIC。

如果没有公共 IP 地址的 VM 放在内部(无公共 IP 地址)标准 Azure 负载均衡器实例的后端池中,则除非执行更多的配置以允许路由到公共终结点,否则就没有出站 Internet 连接。 有关如何实现出站连接的步骤,请参阅 SAP 高可用性方案中使用 Azure 标准负载均衡器的虚拟机的公共终结点连接

重要

请勿在放置于 Azure 负载均衡器之后的 Azure VM 上启用 TCP 时间戳。 启用 TCP 时间戳会导致运行状况探测失败。 将参数 net.ipv4.tcp_timestamps 设置为 0。 有关详细信息,请参阅负载均衡器运行状况探测

准备用于 PAS 和 AAS 安装的服务器

如果本文档中的步骤标有以下前缀,它们的含义如下:

  • [A]:适用于所有节点。
  • [1]:仅适用于节点 1。
  • [2]:仅适用于节点 2。
  1. [A] 设置主机名称解析。

    可以使用 DNS 服务器,或修改所有节点上的 /etc/hosts。 此示例演示如何使用 /etc/hosts 文件。 请替换以下命令中的 IP 地址和主机名:

    sudo vi /etc/hosts
    
    # IP address of cluster node 1
    10.90.90.7    sap-cl1
    # IP address of cluster node 2
    10.90.90.8     sap-cl2
    # IP address of the load balancer frontend configuration for SAP Netweaver ASCS
    10.90.90.10   sapascs
    # IP address of the load balancer frontend configuration for SAP Netweaver ERS
    10.90.90.9    sapers
    # IP address of the load balancer frontend configuration for SAP Netweaver PAS
    10.90.90.30   sappas
    # IP address of the load balancer frontend configuration for SAP Netweaver AAS
    10.90.90.31   sapaas
    
  2. [1] 在 NFS 共享上创建 SAP 目录。 在其中一个 VM 上临时装载 NFS 共享 sapnw1,并创建要用作嵌套装入点的 SAP 目录。

    1. 如果使用 Azure 文件存储上的 NFS:

      # mount temporarily the volume
      sudo mkdir -p /saptmp
      sudo mount -t nfs sapnfs.file.core.windows.net:/sapnfsafs/sapnw1 /saptmp -o noresvport,vers=4,minorversion=1,sec=sys
      
      # create the SAP directories
      sudo cd /saptmp
      sudo mkdir -p usrsapNW1D02
      sudo mkdir -p usrsapNW1D03
      
      # unmount the volume and delete the temporary directory
      cd ..
      sudo umount /saptmp
      sudo rmdir /saptmp
      
    2. 如果使用 Azure NetApp 文件:

      # mount temporarily the volume
      sudo mkdir -p /saptmp
      
      # If using NFSv3
      sudo mount -t nfs -o rw,hard,rsize=65536,wsize=65536,vers=3,tcp 10.90.91.5:/sapnw1 /saptmp
      # If using NFSv4.1
      sudo mount -t nfs -o rw,hard,rsize=65536,wsize=65536,vers=4.1,sec=sys,tcp 10.90.91.5:/sapnw1 /saptmp
      
      # create the SAP directories
      sudo cd /saptmp
      sudo mkdir -p usrsapNW1D02
      sudo mkdir -p usrsapNW1D03
      
      # unmount the volume and delete the temporary directory
      sudo cd ..
      sudo umount /saptmp
      sudo rmdir /saptmp
      
  3. [A] 创建共享目录。

    sudo mkdir -p /usr/sap/NW1/D02
    sudo mkdir -p /usr/sap/NW1/D03
    
    sudo chattr +i /usr/sap/NW1/D02
    sudo chattr +i /usr/sap/NW1/D03
    
  4. [A] 配置交换空间。 使用中心服务安装对话实例时,必须配置更多交换空间。

    sudo vi /etc/waagent.conf
    
    # Check if property ResourceDisk.Format is already set to y and if not, set it
    ResourceDisk.Format=y
    
    # Set the property ResourceDisk.EnableSwap to y
    # Create and use swapfile on resource disk.
    ResourceDisk.EnableSwap=y
    
    # Set the size of the SWAP file with property ResourceDisk.SwapSizeMB
    # The free space of resource disk varies by virtual machine size. Make sure that you do not set a value that is too big. You can check the SWAP space with command swapon
    # Size of the swapfile.
    #ResourceDisk.SwapSizeMB=2000
    ResourceDisk.SwapSizeMB=10480
    

    重启代理以激活更改。

    sudo service waagent restart
    
  5. [A] 为 PAS 和 AAS 添加防火墙规则。

    # Probe and gateway port for PAS and AAS
    sudo firewall-cmd --zone=public --add-port={62002,62003,3302,3303}/tcp --permanent
    sudo firewall-cmd --zone=public --add-port={62002,62003,3303,3303}/tcp
    

安装 SAP Netweaver PAS 实例

  1. [1] 检查群集的状态。 在配置 PAS 资源以进行安装之前,请确保配置并启用了 ASCS 和 ERS 资源。

    sudo pcs status
    
    # Online: [ sap-cl1 sap-cl2 ]
    #
    # Full list of resources:
    #
    # rsc_st_azure    (stonith:fence_azure_arm):      Started sap-cl1
    #  Resource Group: g-NW1_ASCS
    #      fs_NW1_ASCS        (ocf::heartbeat:Filesystem):    Started sap-cl1
    #      nc_NW1_ASCS        (ocf::heartbeat:azure-lb):      Started sap-cl1
    #      vip_NW1_ASCS       (ocf::heartbeat:IPaddr2):       Started sap-cl1
    #      rsc_sap_NW1_ASCS00 (ocf::heartbeat:SAPInstance):   Started sap-cl1
    #  Resource Group: g-NW1_AERS
    #      fs_NW1_AERS        (ocf::heartbeat:Filesystem):    Started sap-cl2
    #      nc_NW1_AERS        (ocf::heartbeat:azure-lb):      Started sap-cl2
    #      vip_NW1_AERS       (ocf::heartbeat:IPaddr2):       Started sap-cl2
    #      rsc_sap_NW1_ERS01  (ocf::heartbeat:SAPInstance):   Started sap-cl2
    
  2. [1] 为 PAS 实例创建文件系统、虚拟 IP 和运行状况探测资源。

    sudo pcs node standby sap-cl2
    sudo pcs resource create vip_NW1_PAS IPaddr2 ip=10.90.90.30 --group g-NW1_PAS
    sudo pcs resource create nc_NW1_PAS azure-lb port=62002 --group g-NW1_PAS
    
    # If using NFS on Azure files
    sudo pcs resource create fs_NW1_PAS Filesystem device='sapnfs.file.core.windows.net:/sapnfsafs/sapnw1/usrsapNW1D02' \
      directory='/usr/sap/NW1/D02' fstype='nfs' force_unmount=safe options='noresvport,vers=4,minorversion=1,sec=sys' \
      op start interval=0 timeout=60 \
      op stop interval=0 timeout=120 \
      op monitor interval=200 timeout=40 \
      --group g-NW1_PAS
    
    # If using NFsv3 on Azure NetApp Files
    sudo pcs resource create fs_NW1_PAS Filesystem device='10.90.91.5:/sapnw1/usrsapNW1D02' \
      directory='/usr/sap/NW1/D02' fstype='nfs' force_unmount=safe \
      op start interval=0 timeout=60 \
      op stop interval=0 timeout=120 \ 
      op monitor interval=200 timeout=40 \
      --group g-NW1_PAS
    
    # If using NFSv4.1 on Azure NetApp Files
    sudo pcs resource create fs_NW1_PAS Filesystem device='10.90.91.5:/sapnw1/usrsapNW1D02' \
      directory='/usr/sap/NW1/D02' fstype='nfs' force_unmount=safe options='sec=sys,vers=4.1' \
      op start interval=0 timeout=60 \
      op stop interval=0 timeout=120 \
      op monitor interval=200 timeout=105 \
      --group g-NW1_PAS
    

    确保群集状态正常,并且所有资源都已启动。 资源在哪个节点上运行并不重要。

    sudo pcs status
    
    # Node List:
    #   Node sap-cl2: standby
    #   Online: [ sap-cl1 ]
    #
    # Full list of resources:
    #
    # rsc_st_azure    (stonith:fence_azure_arm):      Started sap-cl1
    #  Resource Group: g-NW1_ASCS
    #      fs_NW1_ASCS        (ocf::heartbeat:Filesystem):    Started sap-cl1
    #      nc_NW1_ASCS        (ocf::heartbeat:azure-lb):      Started sap-cl1
    #      vip_NW1_ASCS       (ocf::heartbeat:IPaddr2):       Started sap-cl1
    #      rsc_sap_NW1_ASCS00 (ocf::heartbeat:SAPInstance):   Started sap-cl1
    #  Resource Group: g-NW1_AERS
    #      fs_NW1_AERS        (ocf::heartbeat:Filesystem):    Started sap-cl1
    #      nc_NW1_AERS        (ocf::heartbeat:azure-lb):      Started sap-cl1
    #      vip_NW1_AERS       (ocf::heartbeat:IPaddr2):       Started sap-cl1
    #      rsc_sap_NW1_ERS01  (ocf::heartbeat:SAPInstance):   Started sap-cl1
    #  Resource Group: g-NW1_PAS:
    #      vip_NW1_PAS       (ocf::heartbeat:IPaddr2):        Started sap-cl1
    #      nc_NW1_PAS        (ocf::heartbeat:azure-lb):       Started sap-cl1
    #      fs_NW1_PAS        (ocf::heartbeat:Filesystem):     Started sap-cl1
    
  3. [1] 在装载文件系统后,请更改 /usr/sap/SID/D02 文件夹的所有权。

    sudo chown nw1adm:sapsys /usr/sap/NW1/D02
    
  4. [1] 安装 SAP Netweaver PAS。

    使用映射到适用于 PAS 的负载均衡器前端配置的 IP 地址的虚拟主机名,以 root 身份在第一个节点上安装 SAP NetWeaver PAS。 例如,使用 sappas10.90.90.30,以及用于负载均衡器探测的实例编号(如 02)。

    可以使用 sapinst 参数 SAPINST_REMOTE_ACCESS_USER 来允许非 root 用户连接到 sapinst。

    # Allow access to SWPM. This rule is not permanent. If you reboot the machine, you have to run the command again.
    sudo firewall-cmd --zone=public  --add-port=4237/tcp
    
    sudo <swpm>/sapinst SAPINST_REMOTE_ACCESS_USER=sapadmin SAPINST_USE_HOSTNAME=<pas_virtual_hostname>
    
  5. 更新 /usr/sap/sapservices 文件。

    要防止 sapinit 启动脚本启动实例,必须从 /usr/sap/sapservices 文件中禁止注释由 Pacemaker 管理的所有实例。

    sudo vi /usr/sap/sapservices
    
    # On the node where PAS is installed, comment out the following lines. 
    # LD_LIBRARY_PATH=/usr/sap/NW1/D02/exe:$LD_LIBRARY_PATH;export LD_LIBRARY_PATH;/usr/sap/NW1/D02/exe/sapstartsrv pf=/usr/sap/NW1/SYS/profile/NW1_D02_sappas -D -u nw1adm
    
  6. [1] 创建 PAS 群集资源。

    # If using NFS on Azure Files or NFSv3 on Azure NetApp Files
    pcs resource create rsc_sap_NW1_PAS02 SAPInstance InstanceName="NW1_D02_sappas" \
     START_PROFILE=/sapmnt/NW1/profile/NW1_D02_sappas \
     op monitor interval=20 timeout=60 \
     --group g-NW1_PAS
    
    # If using NFSv4.1 on Azure NetApp Files
    pcs resource create rsc_sap_NW1_PAS02 SAPInstance InstanceName="NW1_D02_sappas" \
     START_PROFILE=/sapmnt/NW1/profile/NW1_D02_sappas \
     op monitor interval=20 timeout=105 \
     --group g-NW1_PAS
    

    检查群集的状态。

    sudo pcs status
    
    # Node List:
    #   Node sap-cl2: standby
    #   Online: [ sap-cl1 ]
    #
    # Full list of resources:
    #
    # rsc_st_azure    (stonith:fence_azure_arm):      Started sap-cl1
    #  Resource Group: g-NW1_ASCS
    #      fs_NW1_ASCS        (ocf::heartbeat:Filesystem):    Started sap-cl1
    #      nc_NW1_ASCS        (ocf::heartbeat:azure-lb):      Started sap-cl1
    #      vip_NW1_ASCS       (ocf::heartbeat:IPaddr2):       Started sap-cl1
    #      rsc_sap_NW1_ASCS00 (ocf::heartbeat:SAPInstance):   Started sap-cl1
    #  Resource Group: g-NW1_AERS
    #      fs_NW1_AERS        (ocf::heartbeat:Filesystem):    Started sap-cl1
    #      nc_NW1_AERS        (ocf::heartbeat:azure-lb):      Started sap-cl1
    #      vip_NW1_AERS       (ocf::heartbeat:IPaddr2):       Started sap-cl1
    #      rsc_sap_NW1_ERS01  (ocf::heartbeat:SAPInstance):   Started sap-cl1
    #  Resource Group: g-NW1_PAS:
    #      vip_NW1_PAS       (ocf::heartbeat:IPaddr2):        Started sap-cl1
    #      nc_NW1_PAS        (ocf::heartbeat:azure-lb):       Started sap-cl1
    #      fs_NW1_PAS        (ocf::heartbeat:Filesystem):     Started sap-cl1
    #      rsc_sap_NW1_PAS02 (ocf::heartbeat:SAPInstance):    Started sap-cl1
    
  7. 将约束配置为只有在 ASCS 实例启动后才能启动 PAS 资源组。

    sudo pcs constraint order g-NW1_ASCS then g-NW1_PAS kind=Optional symmetrical=false
    

安装 SAP Netweaver AAS 实例

  1. [2] 检查群集的状态。 在配置 AAS 资源以进行安装之前,请确保 ASCS、ERS 和 PAS 资源已启用。

    sudo pcs status
    
    # Node List:
    #   Node sap-cl2: standby
    #   Online: [ sap-cl1 ]
    #
    # Full list of resources:
    #
    # rsc_st_azure    (stonith:fence_azure_arm):      Started sap-cl1
    #  Resource Group: g-NW1_ASCS
    #      fs_NW1_ASCS        (ocf::heartbeat:Filesystem):    Started sap-cl1
    #      nc_NW1_ASCS        (ocf::heartbeat:azure-lb):      Started sap-cl1
    #      vip_NW1_ASCS       (ocf::heartbeat:IPaddr2):       Started sap-cl1
    #      rsc_sap_NW1_ASCS00 (ocf::heartbeat:SAPInstance):   Started sap-cl1
    #  Resource Group: g-NW1_AERS
    #      fs_NW1_AERS        (ocf::heartbeat:Filesystem):    Started sap-cl1
    #      nc_NW1_AERS        (ocf::heartbeat:azure-lb):      Started sap-cl1
    #      vip_NW1_AERS       (ocf::heartbeat:IPaddr2):       Started sap-cl1
    #      rsc_sap_NW1_ERS01  (ocf::heartbeat:SAPInstance):   Started sap-cl1
    #  Resource Group: g-NW1_PAS:
    #      vip_NW1_PAS       (ocf::heartbeat:IPaddr2):        Started sap-cl1
    #      nc_NW1_PAS        (ocf::heartbeat:azure-lb):       Started sap-cl1
    #      fs_NW1_PAS        (ocf::heartbeat:Filesystem):     Started sap-cl1
    #      rsc_sap_NW1_PAS02 (ocf::heartbeat:SAPInstance):    Started sap-cl1
    
  2. [2] 为 AAS 实例创建文件系统、虚拟 IP 和运行状况探测资源。

    sudo pcs node unstandby sap-cl2
    # Disable PAS resource as it will fail on sap-cl2 due to missing environment variables like hdbuserstore. 
    sudo pcs resource disable g-NW1_PAS
    sudo pcs node standby sap-cl1
    # Execute below command to cleanup resource, if required
    pcs resource cleanup rsc_sap_NW1_ERS01
    
    sudo pcs resource create vip_NW1_AAS IPaddr2 ip=10.90.90.31 --group g-NW1_AAS
    sudo pcs resource create nc_NW1_AAS azure-lb port=62003 --group g-NW1_AAS
    
    # If using NFS on Azure files
    sudo pcs resource create fs_NW1_AAS Filesystem device='sapnfs.file.core.windows.net:/sapnfsafs/sapnw1/usrsapNW1D03' \
      directory='/usr/sap/NW1/D03' fstype='nfs' force_unmount=safe options='noresvport,vers=4,minorversion=1,sec=sys' \
      op start interval=0 timeout=60 \
      op stop interval=0 timeout=120 \
      op monitor interval=200 timeout=40 \
      --group g-NW1_AAS
    
    # If using NFsv3 on Azure NetApp Files
    sudo pcs resource create fs_NW1_AAS Filesystem device='10.90.91.5:/sapnw1/usrsapNW1D03' \
      directory='/usr/sap/NW1/D03' fstype='nfs' force_unmount=safe \
      op start interval=0 timeout=60 \
      op stop interval=0 timeout=120 \ 
      op monitor interval=200 timeout=40 \
      --group g-NW1_AAS
    
    # If using NFSv4.1 on Azure NetApp Files
    sudo pcs resource create fs_NW1_AAS Filesystem device='10.90.91.5:/sapnw1/usrsapNW1D03' \
      directory='/usr/sap/NW1/D03' fstype='nfs' force_unmount=safe options='sec=sys,vers=4.1' \
      op start interval=0 timeout=60 \
      op stop interval=0 timeout=120 \
      op monitor interval=200 timeout=105 \
      --group g-NW1_AAS
    

    确保群集状态正常,并且所有资源都已启动。 资源在哪个节点上运行并不重要。 由于 g-NW1_PAS 资源组已停止,所有 PAS 资源都停止在(已禁用)状态。

    sudo pcs status
    
    # Node List:
    #   Node sap-cl1: standby
    #   Online: [ sap-cl2 ]
    #
    # Full list of resources:
    #
    # rsc_st_azure    (stonith:fence_azure_arm):      Started sap-cl2
    #  Resource Group: g-NW1_ASCS
    #      fs_NW1_ASCS        (ocf::heartbeat:Filesystem):    Started sap-cl2
    #      nc_NW1_ASCS        (ocf::heartbeat:azure-lb):      Started sap-cl2
    #      vip_NW1_ASCS       (ocf::heartbeat:IPaddr2):       Started sap-cl2
    #      rsc_sap_NW1_ASCS00 (ocf::heartbeat:SAPInstance):   Started sap-cl2
    #  Resource Group: g-NW1_AERS
    #      fs_NW1_AERS        (ocf::heartbeat:Filesystem):    Started sap-cl2
    #      nc_NW1_AERS        (ocf::heartbeat:azure-lb):      Started sap-cl2
    #      vip_NW1_AERS       (ocf::heartbeat:IPaddr2):       Started sap-cl2
    #      rsc_sap_NW1_ERS01  (ocf::heartbeat:SAPInstance):   Started sap-cl2
    #  Resource Group: g-NW1_PAS:
    #      vip_NW1_PAS       (ocf::heartbeat:IPaddr2):        Stopped (disabled)
    #      nc_NW1_PAS        (ocf::heartbeat:azure-lb):       Stopped (disabled)
    #      fs_NW1_PAS        (ocf::heartbeat:Filesystem):     Stopped (disabled)
    #      rsc_sap_NW1_PAS02 (ocf::heartbeat:SAPInstance):    Stopped (disabled)
    #  Resource Group: g-NW1_AAS:
    #      vip_NW1_AAS       (ocf::heartbeat:IPaddr2):        Started sap-cl2
    #      nc_NW1_AAS        (ocf::heartbeat:azure-lb):       Started sap-cl2
    #      fs_NW1_AAS        (ocf::heartbeat:Filesystem):     Started sap-cl2
    
  3. [2] 在装载文件系统后,请更改 /usr/sap/SID/D03 文件夹的所有权。

    sudo chown nw1adm:sapsys /usr/sap/NW1/D03
    
  4. [2] 安装 SAP Netweaver AAS。

    使用映射到适用于 PAS 的负载均衡器前端配置的 IP 地址的虚拟主机名,以 root 身份在第二个节点上安装 SAP NetWeaver AAS。 例如,使用 sapaas10.90.90.31,以及用于负载均衡器探测的实例编号(如 03)。

    可以使用 sapinst 参数 SAPINST_REMOTE_ACCESS_USER 来允许非 root 用户连接到 sapinst。

    # Allow access to SWPM. This rule is not permanent. If you reboot the machine, you have to run the command again.
    sudo firewall-cmd --zone=public  --add-port=4237/tcp
    
    sudo <swpm>/sapinst SAPINST_REMOTE_ACCESS_USER=sapadmin SAPINST_USE_HOSTNAME=<aas_virtual_hostname>
    
  5. 更新 /usr/sap/sapservices 文件。

    要防止 sapinit 启动脚本启动实例,必须从 /usr/sap/sapservices 文件中禁止注释由 Pacemaker 管理的所有实例。

    sudo vi /usr/sap/sapservices
    
    # On the node where AAS is installed, comment out the following lines. 
    #LD_LIBRARY_PATH=/usr/sap/NW1/D03/exe:$LD_LIBRARY_PATH;export LD_LIBRARY_PATH;/usr/sap/NW1/D03/exe/sapstartsrv pf=/usr/sap/NW1/SYS/profile/NW1_D03_sapaas -D -u nw1adm
    
  6. [2] 创建 AAS 群集资源。

    # If using NFS on Azure Files or NFSv3 on Azure NetApp Files
    pcs resource create rsc_sap_NW1_AAS03 SAPInstance InstanceName="NW1_D03_sapaas" \
     START_PROFILE=/sapmnt/NW1/profile/NW1_D03_sapaas \
     op monitor interval=120 timeout=60 \
     --group g-NW1_AAS
    
    # If using NFSv4.1 on Azure NetApp Files
    pcs resource create rsc_sap_NW1_AAS03 SAPInstance InstanceName="NW1_D03_sapaas" \
     START_PROFILE=/sapmnt/NW1/profile/NW1_D03_sapaas \
     op monitor interval=120 timeout=105 \
     --group g-NW1_AAS
    

    检查群集的状态。

    sudo pcs status
    
    # Node List:
    #   Node sap-cl1: standby
    #   Online: [ sap-cl2 ]
    #
    # Full list of resources:
    #
    # rsc_st_azure    (stonith:fence_azure_arm):      Started sap-cl2
    #  Resource Group: g-NW1_ASCS
    #      fs_NW1_ASCS        (ocf::heartbeat:Filesystem):    Started sap-cl2
    #      nc_NW1_ASCS        (ocf::heartbeat:azure-lb):      Started sap-cl2
    #      vip_NW1_ASCS       (ocf::heartbeat:IPaddr2):       Started sap-cl2
    #      rsc_sap_NW1_ASCS00 (ocf::heartbeat:SAPInstance):   Started sap-cl2
    #  Resource Group: g-NW1_AERS
    #      fs_NW1_AERS        (ocf::heartbeat:Filesystem):    Started sap-cl2
    #      nc_NW1_AERS        (ocf::heartbeat:azure-lb):      Started sap-cl2
    #      vip_NW1_AERS       (ocf::heartbeat:IPaddr2):       Started sap-cl2
    #      rsc_sap_NW1_ERS01  (ocf::heartbeat:SAPInstance):   Started sap-cl2
    #  Resource Group: g-NW1_PAS:
    #      vip_NW1_PAS       (ocf::heartbeat:IPaddr2):        Stopped (disabled)
    #      nc_NW1_PAS        (ocf::heartbeat:azure-lb):       Stopped (disabled)
    #      fs_NW1_PAS        (ocf::heartbeat:Filesystem):     Stopped (disabled)
    #      rsc_sap_NW1_PAS02 (ocf::heartbeat:SAPInstance):    Stopped (disabled)
    #  Resource Group: g-NW1_AAS:
    #      vip_NW1_AAS       (ocf::heartbeat:IPaddr2):        Started sap-cl2
    #      nc_NW1_AAS        (ocf::heartbeat:azure-lb):       Started sap-cl2
    #      fs_NW1_AAS        (ocf::heartbeat:Filesystem):     Started sap-cl2
    #      rsc_sap_NW1_AAS03 (ocf::heartbeat:SAPInstance):    Started sap-cl2
    
  7. 将约束配置为只有在 ASCS 实例启动后才能启动 AAS 资源组。

    sudo pcs constraint order g-NW1_ASCS then g-NW1_AAS kind=Optional symmetrical=false
    

针对 PAS 和 AAS 实例的后配置

  1. [1] 要在任何群集节点(sap-cl1 或 sap-cl2)上运行 PAS 和 AAS,需要复制这两个群集节点的 <sid>adm$HOME/.hdb 中的内容。

    # Check current content of /home/nw1adm/.hdb on sap-cl1
    sap-cl1:nw1adm > ls -ltr $HOME/.hdb
    drwx------. 2 nw1adm sapsys 66 Aug  8 19:11 sappas
    drwx------. 2 nw1adm sapsys 84 Aug  8 19:12 sap-cl1
    # Check current content of /home/nw1adm/.hdb on sap-cl2
    sap-cl2:nw1adm > ls -ltr $HOME/.hdb
    total 0
    drwx------. 2 nw1adm sapsys 64 Aug  8 20:25 sap-cl2
    drwx------. 2 nw1adm sapsys 66 Aug  8 20:26 sapaas
    
    # As PAS and AAS is installed using virtual hostname, you need to copy virtual hostname directory in /home/nw1adm/.hdb
    # Copy sappas directory from sap-cl1 to sap-cl2
    sap-cl1:nw1adm > scp -r sappas nw1adm@sap-cl2:/home/nw1adm/.hdb
    # Copy sapaas directory from sap-cl2 to sap-cl1. Execute the command from the same sap-cl1 host. 
    sap-cl1:nw1adm > scp -r nw1adm@sap-cl2:/home/nw1adm/.hdb/sapaas . 
    
  2. [1] 为了确保在两个节点运行时,PAS 和 AAS 实例不会在同一节点上运行,请使用以下命令添加负场地租用约束:

    sudo pcs constraint colocation add g-NW1_AAS with g-NW1_PAS score=-1000
    sudo pcs node unstandby sap-cl1
    sudo pcs resource enable g-NW1_PAS
    

    -1000 分是为了确保如果只有一个节点可用,那么两个实例都会继续在另一个节点上运行。 如果要在这种情况下停止 AAS 实例,则可以使用 score=-INFINITY 来强制实施此条件。

  3. 检查群集的状态。

    sudo pcs status
    
    # Node List:
    #   Online: [ sap-cl1 sap-cl2 ]
    #
    # Full list of resources:
    #
    # rsc_st_azure    (stonith:fence_azure_arm):      Started sap-cl2
    #  Resource Group: g-NW1_ASCS
    #      fs_NW1_ASCS        (ocf::heartbeat:Filesystem):    Started sap-cl2
    #      nc_NW1_ASCS        (ocf::heartbeat:azure-lb):      Started sap-cl2
    #      vip_NW1_ASCS       (ocf::heartbeat:IPaddr2):       Started sap-cl2
    #      rsc_sap_NW1_ASCS00 (ocf::heartbeat:SAPInstance):   Started sap-cl2
    #  Resource Group: g-NW1_AERS
    #      fs_NW1_AERS        (ocf::heartbeat:Filesystem):    Started sap-cl1
    #      nc_NW1_AERS        (ocf::heartbeat:azure-lb):      Started sap-cl1
    #      vip_NW1_AERS       (ocf::heartbeat:IPaddr2):       Started sap-cl1
    #      rsc_sap_NW1_ERS01  (ocf::heartbeat:SAPInstance):   Started sap-cl1
    #  Resource Group: g-NW1_PAS:
    #      vip_NW1_PAS       (ocf::heartbeat:IPaddr2):        Started sap-cl1
    #      nc_NW1_PAS        (ocf::heartbeat:azure-lb):       Started sap-cl1
    #      fs_NW1_PAS        (ocf::heartbeat:Filesystem):     Started sap-cl1
    #      rsc_sap_NW1_PAS02 (ocf::heartbeat:SAPInstance):    Started sap-cl1
    #  Resource Group: g-NW1_AAS:
    #      vip_NW1_AAS       (ocf::heartbeat:IPaddr2):        Started sap-cl2
    #      nc_NW1_AAS        (ocf::heartbeat:azure-lb):       Started sap-cl2
    #      fs_NW1_AAS        (ocf::heartbeat:Filesystem):     Started sap-cl2
    #      rsc_sap_NW1_AAS03 (ocf::heartbeat:SAPInstance):    Started sap-cl2
    

测试群集设

通过运行典型故障转移测试来全面测试 Pacemaker 群集。