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

在 Red Hat Enterprise Linux 上使用 SAP ASCS/SCS 高可用性 VM 部署 SAP 对话实例

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

参考

概述

本文介绍成本优化方案,在此方案中,在高可用性设置中使用 SAP ASCS/SCS 和 SAP 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 应用程序实例。

使用 SAP ASCS/SCS 群集安装对话实例的体系结构

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

  • 使用 SAP ASCS/SCS 群集设置只能部署两个对话实例:PAS 和一个 AAS。
  • 如果想要通过其他应用程序服务器(如 sapa03 和 sapa04)横向扩展 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 安装 ASCS、ERS 和 Database 实例后,请按照以下步骤安装 PAS 和 AAS 实例。

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

本文档假设你已配置 SAP ASCS/SCS 群集设置,这需要 Azure 负载均衡器。 在同一个 Azure 负载均衡器中,按照以下步骤为 PAS 和 AAS 创建虚拟 IP 和负载均衡规则。

  1. 打开为 SAP ASCS/SCS 群集设置创建的内部负载均衡器。
  2. 为 PAS 和 AAS 实例创建前端 IP 地址
    1. PAS 的 IP 地址为 10.90.90.30
      1. 在“设置”>“前端 IP 配置”中,单击“添加”。
      2. 输入新前端 IP 的名称(例如 frontend.NW1.PAS)。
      3. 选择“子网”。
      4. 将“分配”设置为“静态”并输入 IP 地址(例如 10.90.90.30)。
      5. 单击“确定”。
    2. AAS 的 IP 地址为 10.90.90.31
      1. 重复上述“2.a”下的步骤,为 ERS 创建前端 IP 地址(例如 10.90.90.31 和 frontend.NW1.AAS)
  3. 后端池保持不变,因为我们将在同一个后端池 (backend.NW1) 上部署 PAS 和 AAS。
  4. 为 PAS 和 AAS 实例创建运行状况探测
    1. PAS 的端口为 62002
      1. 在“设置”>“运行状况探测”中,单击“添加”。
      2. 输入运行状况探测的名称(例如 health.NW1.PAS)。
      3. 选择 TCP 作为协议,选择端口 62002,将间隔保留为 5。
      4. 单击“确定”。
    2. AAS 的端口为 62003
      1. 重复上述“4.a”下的步骤,为 AAS 创建运行状况探测(例如 62003 和 health.NW1.AAS)
  5. 为 PAS 和 AAS 实例创建负载均衡规则
    1. 用于 PAS 的负载均衡规则
      1. 在“设置”>“负载均衡规则”中,单击“添加”。
      2. 输入负载均衡规则的名称(例如 lb.NW1.PAS)。
      3. 选择先前创建的 PAS 的前端 IP 地址、后端池和运行状况探测(例如 frontend.NW1.PAS、backend.NW1 和 health.NW1.PAS)
      4. 选择“HA 端口”
      5. 确保“启用浮动 IP”
      6. 单击“确定”
    2. 用于 AAS 的负载均衡规则
      1. 重复上述“5.1”下的步骤,为 AAS 创建负载均衡规则(例如 lb.NW1.AAS)。

重要

负载均衡方案中的 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 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 port for PAS and AAS
    sudo firewall-cmd --zone=public --add-port=62002/tcp --permanent
    sudo firewall-cmd --zone=public --add-port=62002/tcp
    sudo firewall-cmd --zone=public --add-port=62003/tcp --permanent
    sudo firewall-cmd --zone=public --add-port=62003/tcp
    
    # Gateway port for PAS and AAS
    sudo firewall-cmd --zone=public --add-port=3302/tcp --permanent
    sudo firewall-cmd --zone=public --add-port=3302/tcp
    sudo firewall-cmd --zone=public --add-port=3303/tcp --permanent
    sudo firewall-cmd --zone=public --add-port=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='sec=sys,vers=4.1' \
      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

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

    可以使用 sapinst 参数 SAPINST_REMOTE_ACCESS_USER 允许非根用户连接到 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='sec=sys,vers=4.1' \
      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

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

    可以使用 sapinst 参数 SAPINST_REMOTE_ACCESS_USER 允许非根用户连接到 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 群集。 执行典型的故障转移测试