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

使用简单装载和 NFS 为 SLES for SAP Applications VM 安装高可用性 SAP NetWeaver

本文介绍如何使用简单装载结构部署和配置 Azure 虚拟机 (VM)、安装群集框架,以及安装高可用性 (HA) SAP NetWeaver 系统。 可使用以下 Azure 原生网络文件系统 (NFS) 服务之一来实现所述的体系结构:

对于 SLES for SAP Applications 15 上的新实现,简单装载配置应为默认值。

先决条件

以下指南包含设置 NetWeaver HA 系统所需的所有信息:

概述

本文介绍如何使用简单装载结构实现 ASCS 的高可用性配置。 若要部署 SAP 应用程序层,需要高度可用的共享目录,例如 /sapmnt/SID/usr/sap/SID/usr/sap/trans。 可以在 Azure 文件存储上的 NFS Azure NetApp 文件上部署这些文件系统。

仍然需要 Pacemaker 群集来帮助保护单一故障点组件,例如 SAP Central Services (SCS) 和 ASCS。

与经典 Pacemaker 群集配置相比,使用简单装载部署时,群集不会管理文件系统。 仅 SLES for SAP Applications 15 及更高版本支持此配置。 本文不详细介绍数据库层。

示例配置和安装命令使用以下实例编号。

实例名称 实例编号
ASCS 00
排队复制服务器 (ERS) 01
主应用程序服务器 (PAS) 02
其他应用程序服务器 (AAS) 03
SAP 系统标识符 NW1

重要

仅 SLES for SAP Applications 15 及更高版本才支持使用简单装载结构的配置。

显示如何使用简单装载和 NFS 实现 SAP NetWeaver 高可用性的图。

此图显示了一个使用简单装载的典型 SAP NetWeaver HA 体系结构。 “sapmnt”和“saptrans”文件系统部署在 Azure 本机 NFS 上:Azure 文件存储上的 NFS 共享或 Azure NetApp 文件上的 NFS 卷。 Pacemaker 群集保护 SAP Central Services。 群集 VM 位于 Azure 负载均衡器后面。 与经典 Pacemaker 配置相反,Pacemaker 群集不会管理文件系统。

准备基础结构

SAP 实例的资源代理随附 SUSE Linux Enterprise Server for SAP Applications 一起提供。 可在 Azure 市场中找到 SUSE Linux Enterprise Server for SAP Applications 12/15 的映像。 可使用该映像来部署新的 VM。

通过 Azure 门户手动部署 Linux VM

本文档假定你已部署 Azure 虚拟网络资源组和子网。

使用 SLES for SAP Applications 映像部署虚拟机。 选择 SAP 系统支持的、合适的 SLES 映像版本。 可以通过任何一个可用性选项(虚拟机规模集、可用性区域或可用性集)来部署 VM。

配置 Azure 负载均衡器

在配置 VM 期间,你可以在网络部分中创建或选择现有的负载均衡器。 按照以下步骤为 SAP ASCS 和 SAP ERS 的高可用性设置配置标准负载均衡器。

按照创建负载均衡器指南,使用 Azure 门户为高可用性 SAP 系统设置标准负载均衡器。 在设置负载均衡器期间,请考虑以下几点。

  1. 前端 IP 配置:创建两个前端 IP,一个用于 ASCS,另一个用于 ERS。 选择与你的 ASCS/ERS 虚拟机相同的虚拟网络和子网。
  2. 后端池:创建后端池并添加 ASCS 和 ERS VM。
  3. 入站规则:创建两个负载均衡规则,一个用于 ASCS,另一个用于 ERS。 对两个负载均衡规则执行相同步骤。
    • 前端 IP 地址:选择前端 IP
    • 后端池:选择后端池
    • 检查“高可用性端口”
    • 协议:TCP
    • 运行状况探测:创建具有以下详细信息的运行状况探测(适用于 ASCS 或 ERS)
      • 协议:TCP
      • 端口:[例如:对于 ASCS,为 620<Instance-no.>;对于 ERS,为 621<Instance-no.>]
      • 间隔: 5
      • 探测阈值: 2
    • 空闲超时 (分钟):30
    • 选中“启用浮动 IP”

注意

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

注意

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

重要

  • 不要在放置于 Azure 负载均衡器之后的 Azure VM 上启用 TCP 时间戳。 启用 TCP 时间戳将导致运行状况探测失败。 将 net.ipv4.tcp_timestamps 参数设置为 0。 有关详细信息,请参阅负载均衡器运行状况探测
  • 为防止 saptune 将手动设置的 net.ipv4.tcp_timestamps 值从 0 更改回 1,应将 saptune 版本更新为 3.1.1 或更高版本。 有关详细信息,请参阅 saptune 3.1.1 – 我是否需要更新?

部署 NFS

有两个选项可用于部署 Azure 本机 NFS 以托管 SAP 共享目录。 可以在 Azure 文件存储上部署 NFS 文件共享,或者在 Azure NetApp 文件上部署 NFS 卷。 Azure 文件存储上的 NFS 支持 NFSv4.1 协议。 Azure NetApp 文件上的 NFS 支持 NFSv4.1 和 NFSv3。

接下来的部分介绍部署 NFS 的步骤。 请仅选择一个选项。

部署 Azure 文件存储帐户和 NFS 共享

Azure 文件存储上的 NFS 在 Azure 文件存储高级存储上运行。 设置 Azure 文件存储上的 NFS 之前,请查看如何创建 NFS 共享

Azure 区域提供两种冗余选项:

检查所选的 Azure 区域是否向 Azure 文件存储上的 NFSv4.1 提供适当的冗余。 查看“高级文件存储”的按 Azure 区域显示的 Azure 文件存储可用性。 如果 ZRS 对你的方案有帮助,请验证你所在的 Azure 区域是否支持使用 ZRS 的高级文件共享

建议通过 Azure 专用终结点访问 Azure 存储帐户。 确保在同一 Azure 虚拟网络或对等互连的 Azure 虚拟网络中部署 Azure 文件存储帐户终结点和 VM(需要在其中装载 NFS 共享)。

  1. 部署名为 sapnfsafs 的 Azure 文件存储帐户。 本示例使用 ZRS。 如果你不熟悉该过程,请参阅 Azure 门户的创建存储帐户
  2. 在“基本信息”选项卡上使用以下设置
    1. 对于“存储帐户名称”,请输入“sapnfsafs”。
    2. 对于“性能”,请选择“高级” 。
    3. 对于“高级帐户类型”,请选择“FileStorage” 。
    4. 对于“复制”,请选择“区域冗余(ZRS)”。
  3. 选择“下一步”。
  4. 在“高级”选项卡中,清除“REST API 要求安全传输”。 如果不清除此选项,则无法将 NFS 共享装载到 VM。 装载操作将超时。
  5. 选择下一步
  6. 在“网络”部分,配置以下设置
    1. 在“网络连接”下,为“连接方法”选择“专用终结点”。
    2. 在“专用终结点”下,选择“添加专用终结点” 。
  7. 在“创建专用终结点”窗格中,选择你的订阅、资源组和位置。 然后进行以下选择:
    1. 对于“名称”,请输入“sapnfsafs_pe”。
    2. 对于“存储子资源”,请选择“文件” 。
    3. 在“网络”下,为“虚拟网络”选择要使用的虚拟网络和子网。 同样,可以使用 SAP VM 所在的虚拟网络或对等互连的虚拟网络。
    4. 在“专用 DNS 集成”下,对于“与专用 DNS 区域集成”,请接受默认选项“是”。 确保选择你的专用 DNS 区域。
    5. 选择“确定”。
  8. 还是在“网络”选项卡下,选择“下一步” 。
  9. 在“数据保护”选项卡上,保留所有默认设置。
  10. 选择“查看 + 创建”,验证你的配置。
  11. 等待验证完成。 解决所有问题,然后再继续。
  12. 在“查看 + 创建”选项卡上,选择“创建”。

接下来,在创建的存储帐户中部署 NFS 共享。 在此示例中,有两个数据集快照 - sapnw1saptrans

  1. 登录 Azure 门户
  2. 选择或搜索存储帐户。
  3. 在“存储帐户”页上,选择“sapnfsafs”。
  4. 在 sapnfsafs 的资源菜单中,选择“数据存储”下的“文件共享”。
  5. 在“文件共享”页上选择“文件共享”,然后
    1. 对于“名称”,请输入“sapnw1”和“saptrans”。
    2. 选择适当的共享大小。 考虑共享上存储的数据大小、每秒 I/O 次数 (IOPS) 和吞吐量要求。 有关详细信息,请参阅 Azure 文件共享目标
    3. 选择“NFS”作为协议。
    4. 选择“无根 Squash”。 否则,在 VM 上装载共享时,将看不到文件所有者或组。

无需通过 NFS 装载的 SAP 文件系统也可部署在 Azure 磁盘存储上。 在本例中,可在 Azure 磁盘存储上 部署 /usr/sap/NW1/D02/usr/sap/NW1/D03

有关 Azure 文件存储上的 NFS 共享的重要注意事项

规划使用 Azure 文件存储上的 NFS 进行部署时,请注意以下要点:

  • 共享大小不低于 100 GiB。 你只需为预配共享的容量付费。
  • 请根据容量要求和 IOPS 及吞吐量要求调整 NFS 共享的大小。 有关详细信息,请参阅 Azure 文件共享目标
  • 测试工作负载以验证大小调整情况,并确保它满足性能目标。 若要了解如何排查 Azure 文件存储上的 NFS 的性能问题,请参阅排查 Azure 文件共享性能问题
  • 对于 SAP J2EE 系统,不支持将 /usr/sap/<SID>/J<nr> 放在 Azure 文件存储上的 NFS 中。
  • 如果 SAP 系统的批处理作业负载繁重,你可能会收到数百万个作业日志。 如果 SAP 批处理作业日志存储在文件系统中,请特别注意 sapmnt 共享的大小。 自 SAP_BASIS 7.52 起,批处理作业日志的默认行为是存储到数据库中。 有关详细信息,请参阅数据库中的作业日志
  • 为每个 SAP 系统部署一个单独的 sapmnt 共享。
  • 不要将 sapmnt 共享用于任何其他活动,例如接口。
  • 不要将 saptrans 共享用于任何其他活动,例如接口。
  • 不要在单个存储帐户合并过多 SAP 系统的共享。 还需要满足存储帐户的 Azure 存储可伸缩性和性能目标。 此外,请注意不要超出存储帐户的限制。
  • 通常,不要在单个存储帐户中合并 5 个以上 SAP 系统的共享。 此准则有助于避免超出存储帐户限制并简化性能分析。
  • 在一般情况下,对于同一存储帐户中的非生产型和生产型 SAP 系统,请避免混合放置共享,例如 sapmnt
  • 建议在 SLES 15 SP2 或更高版本上进行部署,以便从 NFS 客户端改进中受益。
  • 使用专用终结点。 如果发生区域性故障(不太可能发生此情况),NFS 会话会自动重定向到运行正常的区域。 你不需要在 VM 上重新装载 NFS 共享。
  • 如果要跨可用性区域部署 VM,请在支持 ZRS 的 Azure 区域中使用带 ZRS 的存储帐户
  • 目前,Azure 文件存储不支持对灾难恢复方案使用自动跨区域复制。

部署 Azure NetApp 文件资源

  1. 检查 Azure NetApp 文件服务是否在所选 Azure 区域中可用。

  2. 在所选 Azure 区域中创建 NetApp 帐户。 按照这些说明进行操作。

  3. 设置 Azure NetApp 文件容量池。 按照这些说明进行操作。

    本文中介绍的 SAP NetWeaver 体系结构使用单个 Azure NetApp 文件容量池、高级 SKU。 对于 Azure 上的 SAP NetWeaver 应用程序工作负载,建议使用 Azure NetApp 文件高级 SKU。

  4. 按照这些说明中所述,将子网委托给 Azure NetApp 文件。

  5. 按照这些说明部署 Azure NetApp 文件卷。 将卷部署在指定的 Azure NetApp 文件子网中。 将自动分配 Azure NetApp 卷的 IP 地址。

    请记住,Azure NetApp 文件资源和 Azure VM 必须位于同一 Azure 虚拟网络或对等 Azure 虚拟网络中。 此示例使用两个 Azure NetApp 文件卷:sapnw1trans。 装载到相应装载点的文件路径为:

    • sapnw1 (nfs://10.27.1.5/sapnw1/sapmntNW1)
    • sapnw1 (nfs://10.27.1.5/sapnw1/usrsapNW1)
    • trans (nfs://10.27.1.5/trans)

无需共享的 SAP 文件系统也可部署在 Azure 磁盘存储上。 例如,/usr/sap/NW1/D02/usr/sap/NW1/D03 可部署为 Azure 磁盘存储。

有关 Azure NetApp 文件上的 NFS 的重要注意事项

在考虑将 Azure NetApp 文件用于 SAP NetWeaver 高可用性体系结构时,请注意以下重要事项:

  • 最小容量池为 4 TiB。 可以 1-TiB 为增量增加容量池的大小。
  • 最小卷大小为 100 GiB。
  • Azure NetApp 文件和装载 Azure NetApp 文件卷的所有虚拟机都必须位于同一 Azure 虚拟网络中或同一区域中的对等虚拟网络中。 支持通过同一区域中的虚拟网络对等互连进行 Azure NetApp 文件访问。 尚不支持通过全球对等互连进行 Azure NetApp 文件访问。
  • 所选的虚拟网络必须具有一个委派给 Azure NetApp 文件的子网。
  • Azure NetApp 文件卷的吞吐量和性能特征取决于卷配额和服务级别,如 Azure NetApp 文件的服务级别中所述。 为 SAP 调整 Azure NetApp 文件卷的大小时,请确保最终的吞吐量满足应用程序的要求。
  • Azure NetApp 文件提供导出策略。 可以控制允许的客户端和访问类型(例如,读/写或只读)。
  • Azure NetApp 文件尚不能识别区域。 目前,Azure NetApp 文件不会部署在 Azure 区域中的所有可用性区域中。 请注意某些 Azure 区域的潜在延迟影响。
  • Azure NetApp 文件卷可以部署为 NFSv3 或 NFSv4.1 卷。 SAP 应用程序层(ASCS/ERS、SAP 应用程序服务器)支持这两种协议。

设置 ASCS

接下来,你将做好准备并安装 SAP ASCS 和 ERS 实例。

创建 Pacemaker 群集

按照在 Azure 中的 SUSE Linux Enterprise Server 上设置 Pacemaker 中的步骤,为 SAP ASCS 创建一个基本 Pacemaker 群集。

准备安装

以下各项带有前缀:

  • [A]:适用于所有节点。
  • [1]:仅适用于节点 1。
  • [2]:仅适用于节点 2。
  1. [A] 安装最新版本的 SUSE 连接器。

    sudo zypper install sap-suse-cluster-connector
    
  2. [A] 安装 sapstartsrv 资源代理。

    sudo zypper install sapstartsrv-resource-agents
    
  3. [A] 更新 SAP 资源代理。

    若要使用本文所述的配置,需要安装资源代理包的一个修补程序。 若要检查是否已安装该修补程序,请使用以下命令。

    sudo grep 'parameter name="IS_ERS"' /usr/lib/ocf/resource.d/heartbeat/SAPInstance
    

    输出应如以下示例所示。

    <parameter name="IS_ERS" unique="0" required="0">;
    

    如果 grep 命令未找到 IS_ERS 参数,则你需要安装 SUSE 下载页上列出的修补程序。

    重要

    从 2021 年 11 月起,需要安装至少 sapstartsrv-resource-agents 版本 0.91 和 resource-agents 4.x。

  4. [A] 设置主机名称解析。

    可以使用 DNS 服务器,或修改所有节点上的 /etc/hosts。 此示例演示如何使用 /etc/hosts 文件。

    sudo vi /etc/hosts
    

    将以下行插入 /etc/hosts 中。 根据你的环境更改 IP 地址和主机名。

     # IP address of cluster node 1
     10.27.0.6    sap-cl1
     # IP address of cluster node 2
     10.27.0.7     sap-cl2
     # IP address of the load balancer's front-end configuration for SAP NetWeaver ASCS
     10.27.0.9   sapascs
     # IP address of the load balancer's front-end configuration for SAP NetWeaver ERS
     10.27.0.10    sapers
    
  5. [A] 配置 SWAP 文件。

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

    重启代理以激活更改。

    sudo service waagent restart
    

在 Azure 文件存储上使用 NFS 的情况下准备 SAP 目录

  1. [1] 在 NFS 共享上创建 SAP 目录。

    在其中一个 VM 上暂时装载 NFS 共享 sapnw1,并创建将用作嵌套装载点的 SAP 目录。

    # Temporarily mount the volume.
    sudo mkdir -p /saptmp
    sudo mount -t nfs sapnfsafs.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 sapmntNW1
    sudo mkdir -p usrsapNW1
    # Unmount the volume and delete the temporary directory.
    cd ..
    sudo umount /saptmp
    sudo rmdir /saptmp
    
  2. [A] 创建共享目录。

    sudo mkdir -p /sapmnt/NW1
    sudo mkdir -p /usr/sap/NW1
    sudo mkdir -p /usr/sap/trans
    
    sudo chattr +i /sapmnt/NW1
    sudo chattr +i /usr/sap/NW1
    sudo chattr +i /usr/sap/trans   
    
  3. [A] 装载文件系统。

    使用简单装载配置时,Pacemaker 群集不会控制文件系统。

    echo "sapnfsafs.file.core.windows.net:/sapnfsafs/sapnw1/sapmntNW1 /sapmnt/NW1 nfs noresvport,vers=4,minorversion=1,sec=sys  0  0" >> /etc/fstab
    echo "sapnfsafs.file.core.windows.net:/sapnfsafs/sapnw1/usrsapNW1/ /usr/sap/NW1 nfs noresvport,vers=4,minorversion=1,sec=sys  0  0" >> /etc/fstab
    echo "sapnfsafs.file.core.windows.net:/sapnfsafs/saptrans /usr/sap/trans nfs noresvport,vers=4,minorversion=1,sec=sys  0  0" >> /etc/fstab   
    # Mount the file systems.
    mount -a 
    

在 Azure NetApp 文件上使用 NFS 的情况下准备 SAP 目录

仅当使用带有 NFSv4.1 协议的 Azure NetApp 文件卷时,本部分中的说明才适用。 在要装载 Azure NetApp 文件 NFSv4.1 卷的所有 VM 上执行配置。

  1. [A] 禁用 ID 映射。

    1. 验证 NFS 域设置。 确保域配置为默认的 Azure NetApp 文件域 defaultv4iddomain.com。 另请验证映射是否设置为 nobody

      sudo cat /etc/idmapd.conf
      # Examplepython-azure-mgmt-compute
      [General]
      Verbosity = 0
      Pipefs-Directory = /var/lib/nfs/rpc_pipefs
      Domain = defaultv4iddomain.com
      [Mapping]
      Nobody-User = nobody
      Nobody-Group = nobody
      
    2. 验证 nfs4_disable_idmapping。 它应设置为 Y

      若要创建 nfs4_disable_idmapping 所在的目录结构,请运行 mount 命令。 无法在 /sys/modules 下手动创建目录,因为访问权限是为内核和驱动程序保留的。

      # 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.27.1.5:/sapnw1 /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
      
  2. [1] 在其中一个 VM 上暂时装载 Azure NetApp 文件卷,并创建 SAP 目录(文件路径)。

    # Temporarily mount the volume.
    sudo mkdir -p /saptmp
    # If you're using NFSv3:
    sudo mount -t nfs -o rw,hard,rsize=65536,wsize=65536,nfsvers=3,tcp 10.27.1.5:/sapnw1 /saptmp
    # If you're using NFSv4.1:
    sudo mount -t nfs -o rw,hard,rsize=65536,wsize=65536,nfsvers=4.1,sec=sys,tcp 10.27.1.5:/sapnw1 /saptmp
    # Create the SAP directories.
    sudo cd /saptmp
    sudo mkdir -p sapmntNW1
    sudo mkdir -p usrsapNW1
    # Unmount the volume and delete the temporary directory.
    sudo cd ..
    sudo umount /saptmp
    sudo rmdir /saptmp
    
  3. [A] 创建共享目录。

    sudo mkdir -p /sapmnt/NW1
    sudo mkdir -p /usr/sap/NW1
    sudo mkdir -p /usr/sap/trans
    
    sudo chattr +i /sapmnt/NW1
    sudo chattr +i /usr/sap/NW1
    sudo chattr +i /usr/sap/trans
    
  4. [A] 装载文件系统。

    使用简单装载配置时,Pacemaker 群集不会控制文件系统。

    # If you're using NFSv3:
    echo "10.27.1.5:/sapnw1/sapmntNW1 /sapmnt/NW1 nfs nfsvers=3,hard 0 0" >> /etc/fstab
    echo "10.27.1.5:/sapnw1/usrsapNW1 /usr/sap/NW1 nfs nfsvers=3,hard 0 0" >> /etc/fstab
    echo "10.27.1.5:/saptrans /usr/sap/trans nfs nfsvers=3,hard 0 0" >> /etc/fstab
    # If you're using NFSv4.1:
    echo "10.27.1.5:/sapnw1/sapmntNW1 /sapmnt/NW1 nfs nfsvers=4.1,sec=sys,hard 0 0" >> /etc/fstab
    echo "10.27.1.5:/sapnw1/usrsapNW1 /usr/sap/NW1 nfs nfsvers=4.1,sec=sys,hard 0 0" >> /etc/fstab
    echo "10.27.1.5:/saptrans /usr/sap/trans nfs nfsvers=4.1,sec=sys,hard 0 0" >> /etc/fstab
    # Mount the file systems.
    mount -a 
    

安装 SAP NetWeaver ASCS 和 ERS

  1. [1] 为 ASCS 实例创建虚拟 IP 资源和运行状况探测。

    重要

    我们建议使用 azure-lb 资源代理,它是资源代理包的一部分,最低版本为 resource-agents-4.3.0184.6ee15eb2-4.13.1

    sudo crm node standby sap-cl2   
    sudo crm configure primitive vip_NW1_ASCS IPaddr2 \
      params ip=10.27.0.9 \
      op monitor interval=10 timeout=20
    
    sudo crm configure primitive nc_NW1_ASCS azure-lb port=62000 \
      op monitor timeout=20s interval=10
    
    sudo crm configure group g-NW1_ASCS nc_NW1_ASCS vip_NW1_ASCS \
      meta resource-stickiness=3000
    

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

    sudo crm_mon -r
    # Node sap-cl2: standby
    # Online: [ sap-cl1 ]
    #
    # Full list of resources:
    #
    # stonith-sbd     (stonith:external/sbd): Started sap-cl1
    # Resource Group: g-NW1_ASCS
    #  nc_NW1_ASCS        (ocf::heartbeat:azure-lb):      Started sap-cl1
    #  vip_NW1_ASCS       (ocf::heartbeat:IPaddr2):       Started sap-cl1
    
  2. [1] 在第一个节点上以 root 身份安装 SAP NetWeaver ASCS。

    使用映射到负载均衡器的 ASCS 前端配置 IP 地址的虚拟主机名(例如 sapascs10.27.0.9)和用于负载均衡器探测的实例编号(例如 00)。

    可以使用 sapinst 参数 SAPINST_REMOTE_ACCESS_USER 来允许非 root 用户连接到 sapinst。 可以使用 SAPINST_USE_HOSTNAME 参数和虚拟主机名安装 SAP。

    sudo <swpm>/sapinst SAPINST_REMOTE_ACCESS_USER=sapadmin SAPINST_USE_HOSTNAME=<virtual_hostname>
    

    如果安装无法在 /usr/sap/NW1/ASCS00 中创建子文件夹,请设置 ASCS00 文件夹的所有者和组,然后重试。

    chown nw1adm /usr/sap/NW1/ASCS00
    chgrp sapsys /usr/sap/NW1/ASCS00
    
  3. [1] 为 ERS 实例创建虚拟 IP 资源和运行状况探测。

    sudo crm node online sap-cl2
    sudo crm node standby sap-cl1
    
    sudo crm configure primitive vip_NW1_ERS IPaddr2 \
      params ip=10.27.0.10 \
      op monitor interval=10 timeout=20
    
    sudo crm configure primitive nc_NW1_ERS azure-lb port=62101 \
      op monitor timeout=20s interval=10
    
    sudo crm configure group g-NW1_ERS nc_NW1_ERS vip_NW1_ERS
    

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

    sudo crm_mon -r
    
    # Node sap-cl1: standby
    # Online: [ sap-cl2 ]
    # 
    # Full list of resources:
    #
    # stonith-sbd     (stonith:external/sbd): Started sap-cl2
    #  Resource Group: g-NW1_ASCS
    #      nc_NW1_ASCS        (ocf::heartbeat:azure-lb):      Started sap-cl2
    #      vip_NW1_ASCS       (ocf::heartbeat:IPaddr2):       Started sap-cl2
    #  Resource Group: g-NW1_ERS
    #      nc_NW1_ERS (ocf::heartbeat:azure-lb):      Started sap-cl2
    #      vip_NW1_ERS  (ocf::heartbeat:IPaddr2):     Started sap-cl2
    
  4. [2] 在第二个节点上以 root 身份安装 SAP NetWeaver ERS。

    使用映射到负载均衡器的 ERS 前端配置 IP 地址的虚拟主机名(例如 sapers10.27.0.10)和用于负载均衡器探测的实例编号(例如 01)。

    可以使用 SAPINST_REMOTE_ACCESS_USER 参数来允许非 root 用户连接到 sapinst。 可以使用 SAPINST_USE_HOSTNAME 参数和虚拟主机名安装 SAP。

    <swpm>/sapinst SAPINST_REMOTE_ACCESS_USER=sapadmin SAPINST_USE_HOSTNAME=virtual_hostname
    

    注意

    使用 SWPM SP 20 PL 05 或更高版本。 早期版本无法正确设置权限,会导致安装失败。

    如果安装无法在 /usr/sap/NW1/ERS01 中创建子文件夹,请设置 ERS01 文件夹的所有者和组,然后重试。

    chown nw1adm /usr/sap/NW1/ERS01
    chgrp sapsys /usr/sap/NW1/ERS01
    
  5. [1] 修改 ASCS 实例配置文件。

    sudo vi /sapmnt/NW1/profile/NW1_ASCS00_sapascs
    
    # Change the restart command to a start command.
    # Restart_Program_01 = local $(_EN) pf=$(_PF).
    Start_Program_01 = local $(_EN) pf=$(_PF)
    
    # Add the following lines.
    service/halib = $(DIR_CT_RUN)/saphascriptco.so
    service/halib_cluster_connector = /usr/bin/sap_suse_cluster_connector
    
    # Add the keepalive parameter, if you're using ENSA1.
    enque/encni/set_so_keepalive = TRUE
    

    对于独立排队服务器 1 和 2(ENSA1 和 ENSA2),请确保按照 SAP 说明 1410736 中所述设置 keepalive OS 参数。

    现在修改 ERS 实例配置文件。

    sudo vi /sapmnt/NW1/profile/NW1_ERS01_sapers
    
    # Change the restart command to a start command.
    # Restart_Program_00 = local $(_ER) pf=$(_PFL) NR=$(SCSID).
    Start_Program_00 = local $(_ER) pf=$(_PFL) NR=$(SCSID)
    
    # Add the following lines.
    service/halib = $(DIR_CT_RUN)/saphascriptco.so
    service/halib_cluster_connector = /usr/bin/sap_suse_cluster_connector
    
    # Remove Autostart from the ERS profile.
    # Autostart = 1
    
  6. [A] 配置 keepalive

    SAP NetWeaver 应用程序服务器和 ASCS 之间的通信是通过软件负载均衡器路由的。 负载均衡器在可配置的超时之后将断开非活动连接。

    为了防止断开连接,需要在 SAP NetWeaver ASCS 配置文件中设置一个参数(如果使用 ENSA1)。 在所有 SAP 服务器上,更改 ENSA1 和 ENSA2 的 Linux 系统 keepalive 设置。 有关详细信息,请参阅 SAP 说明 1410736

    # Change the Linux system configuration.
    sudo sysctl net.ipv4.tcp_keepalive_time=300
    
  7. [A] 在安装后配置 SAP 用户。

    # Add sidadm to the haclient group.
    sudo usermod -aG haclient nw1adm
    
  8. [1] 将 ASCS 和 ERS SAP 服务添加到 sapservice 文件。

    将 ASCS 服务入口添加到第二个节点,并将 ERS 服务入口复制到第一个节点。

    cat /usr/sap/sapservices | grep ASCS00 | sudo ssh sap-cl2 "cat >>/usr/sap/sapservices"
    sudo ssh sap-cl2 "cat /usr/sap/sapservices" | grep ERS01 | sudo tee -a /usr/sap/sapservices
    
  9. [A] 禁用 ASCS 和 ERS SAP 实例的 systemd 服务。 仅当 SAP 启动框架由 systemd 管理(如 SAP 说明 3115048 中描述的那样)时,此步骤才适用

    注意

    使用 SLES 群集配置来管理 SAP ASCS 和 SAP ERS ​​之类的 SAP 实例时,需要进行额外的修改以将群集与基于 systemd 的原生 SAP 启动框架集成。 这可以确保维护过程不会损害群集稳定性。 按照 SAP 说明 3115048 安装 SAP 启动框架或将其切换到启用 systemd 的设置后,应该为 ASCS 和 ERS ​​SAP 实例禁用 systemd 服务。

    # Stop ASCS and ERS instances using <sid>adm
    sapcontrol -nr 00 -function Stop
    sapcontrol -nr 00 -function StopService
    
    sapcontrol -nr 01 -function Stop
    sapcontrol -nr 01 -function StopService
    
    # Execute below command on VM where you have performed ASCS instance installation (e.g. sap-cl1)
    sudo systemctl disable SAPNW1_00
    # Execute below command on VM where you have performed ERS instance installation (e.g. sap-cl2)
    sudo systemctl disable SAPNW1_01
    
  10. [A] 启用 sappingsappongsapping 代理在 sapinit 之前运行以隐藏 /usr/sap/sapservices 文件。 sappong 代理在 sapinit 之后运行以在 VM 启动期间取消隐藏 sapservices 文件。 在启动时,SAPStartSrv 不会对 SAP 实例自动启动,因为 Pacemaker 群集对其进行管理。

    sudo systemctl enable sapping
    sudo systemctl enable sappong
    
  11. [1] 为 ASCS 和 ERS 创建 SAPStartSrv 资源,方法是创建一个文件,然后加载该文件。

    vi crm_sapstartsrv.txt
    

    crm_sapstartsrv.txt 文件中输入以下基元并保存

    primitive rsc_sapstartsrv_NW1_ASCS00 ocf:suse:SAPStartSrv \
     params InstanceName=NW1_ASCS00_sapascs
    
    primitive rsc_sapstartsrv_NW1_ERS01 ocf:suse:SAPStartSrv \
     params InstanceName=NW1_ERS01_sapers
    

    使用以下命令加载文件。

    sudo crm configure load update crm_sapstartsrv.txt
    

    注意

    如果在 crmsh 版本 4.4.0+20220708.6ed6b56f-150400.3.3.1 或更高版本上使用“crm configure primitive…”命令设置了 SAPStartSrv 资源,请务必查看 SAPStartSrv 资源基元的配置。 如果存在监视操作,则应将其移除。 虽然 SUSE 还建议移除启动和停止操作,但这些操作不如监视操作那么重要。 有关详细信息,请参阅 crmsh 包的最新更改可能会导致 SAP NetWeaver HA 群集中 SAPStartSrv 资源代理的配置不受支持

  12. [1] 创建 SAP 群集资源。

    根据是运行 ENSA1 还是 ENSA2 系统,选择相应的选项卡来定义资源。 SAP 在 SAP NetWeaver 7.52 中引入了对 ENSA2 的支持,包括复制。 从 ABAP 平台 1809 开始,默认会安装 ENSA2。 有关 ENSA2 支持,请参阅 SAP 说明 2630416

    sudo crm configure property maintenance-mode="true"
    
    # If you're using NFS on Azure Files or NFSv3 on Azure NetApp Files:
    sudo crm configure primitive rsc_sap_NW1_ASCS00 SAPInstance \
     op monitor interval=11 timeout=60 on-fail=restart \
     params InstanceName=NW1_ASCS00_sapascs START_PROFILE="/sapmnt/NW1/profile/NW1_ASCS00_sapascs" \
     AUTOMATIC_RECOVER=false MINIMAL_PROBE=true \
     meta resource-stickiness=5000 failure-timeout=60 migration-threshold=1 priority=10
    
    # If you're using NFS on Azure Files or NFSv3 on Azure NetApp Files:
    sudo crm configure primitive rsc_sap_NW1_ERS01 SAPInstance \
     op monitor interval=11 timeout=60 on-fail=restart \
     params InstanceName=NW1_ERS01_sapers START_PROFILE="/sapmnt/NW1/profile/NW1_ERS01_sapers" \
     AUTOMATIC_RECOVER=false IS_ERS=true MINIMAL_PROBE=true \
     meta priority=1000
    
    # If you're using NFSv4.1 on Azure NetApp Files:
    sudo crm configure primitive rsc_sap_NW1_ASCS00 SAPInstance \
     op monitor interval=11 timeout=105 on-fail=restart \
     params InstanceName=NW1_ASCS00_sapascs START_PROFILE="/sapmnt/NW1/profile/NW1_ASCS00_sapascs" \
     AUTOMATIC_RECOVER=false MINIMAL_PROBE=true \
     meta resource-stickiness=5000 failure-timeout=60 migration-threshold=1 priority=10
    
    # If you're using NFSv4.1 on Azure NetApp Files:
    sudo crm configure primitive rsc_sap_NW1_ERS01 SAPInstance \
     op monitor interval=11 timeout=105 on-fail=restart \
     params InstanceName=NW1_ERS01_sapers START_PROFILE="/sapmnt/NW1/profile/NW1_ERS01_sapers" \
     AUTOMATIC_RECOVER=false IS_ERS=true MINIMAL_PROBE=true \
     meta priority=1000
    
    sudo crm configure modgroup g-NW1_ASCS add rsc_sapstartsrv_NW1_ASCS00
    sudo crm configure modgroup g-NW1_ASCS add rsc_sap_NW1_ASCS00
    sudo crm configure modgroup g-NW1_ERS add rsc_sapstartsrv_NW1_ERS01
    sudo crm configure modgroup g-NW1_ERS add rsc_sap_NW1_ERS01
    
    sudo crm configure colocation col_sap_NW1_no_both -5000: g-NW1_ERS g-NW1_ASCS
    sudo crm configure location loc_sap_NW1_failover_to_ers rsc_sap_NW1_ASCS00 rule 2000: runs_ers_NW1 eq 1
    sudo crm configure order ord_sap_NW1_first_start_ascs Optional: rsc_sap_NW1_ASCS00:start rsc_sap_NW1_ERS01:stop symmetrical=false
    
    sudo crm_attribute --delete --name priority-fencing-delay
    
    sudo crm node online sap-cl1
    sudo crm configure property maintenance-mode="false"
    

如果要从旧版本升级并切换到 ENSA2,请参阅 SAP 说明 2641019

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

sudo crm_mon -r
# Full list of resources:
# 
# stonith-sbd     (stonith:external/sbd): Started sap-cl2
#  Resource Group: g-NW1_ASCS
#      nc_NW1_ASCS        (ocf::heartbeat:azure-lb):      Started sap-cl1
#      vip_NW1_ASCS       (ocf::heartbeat:IPaddr2):       Started sap-cl1
#      rsc_sapstartsrv_NW1_ASCS00 (ocf::suse:SAPStartSrv):        Started sap-cl1
#      rsc_sap_NW1_ASCS00 (ocf::heartbeat:SAPInstance):   Started sap-cl1
#  Resource Group: g-NW1_ERS
#      nc_NW1_ERS (ocf::heartbeat:azure-lb):      Started sap-cl2
#      vip_NW1_ERS        (ocf::heartbeat:IPaddr2):       Started sap-cl2
#      rsc_sapstartsrv_NW1_ERS01  (ocf::suse:SAPStartSrv):        Started sap-cl2
#      rsc_sap_NW1_ERS01  (ocf::heartbeat:SAPInstance):   Started sap-cl1

准备 SAP 应用程序服务器

某些数据库要求在应用程序服务器上执行数据库安装。 准备应用程序服务器 VM,以便能够执行数据库安装。

以下通用步骤假设你在与 ASCS 和 HANA 服务器不同的服务器上安装应用程序服务器:

  1. 设置主机名称解析。

    可以使用 DNS 服务器,或修改所有节点上的 /etc/hosts。 此示例演示如何使用 /etc/hosts 文件。

    sudo vi /etc/hosts
    

    将以下行插入 /etc/hosts 中。 根据你的环境更改 IP 地址和主机名。

    10.27.0.6   sap-cl1
    10.27.0.7   sap-cl2
    # IP address of the load balancer's front-end configuration for SAP NetWeaver ASCS
    10.27.0.9   sapascs
    # IP address of the load balancer's front-end configuration for SAP NetWeaver ERS
    10.27.0.10  sapers
    10.27.0.8   sapa01
    10.27.0.12  sapa02
    
  2. 配置 SWAP 文件。

    sudo vi /etc/waagent.conf
    
    # Set the ResourceDisk.EnableSwap property to y.
    # Create and use the SWAP file on the resource disk.
    ResourceDisk.EnableSwap=y
    
    # Set the size of the SWAP file by using the ResourceDisk.SwapSizeMB property.
    # The free space of the resource disk varies by virtual machine size. Don't set a value that's too big. You can check the SWAP space by using the swapon command.
    ResourceDisk.SwapSizeMB=2000
    

    重启代理以激活更改。

    sudo service waagent restart
    

准备 SAP 目录

如果在 Azure 文件存储上使用 NFS,请使用以下说明在 SAP 应用程序服务器 VM 上准备 SAP 目录:

  1. 创建装载点。

    sudo mkdir -p /sapmnt/NW1
    sudo mkdir -p /usr/sap/trans
    
    sudo chattr +i /sapmnt/NW1
    sudo chattr +i /usr/sap/trans
    
  2. 装载文件系统。

    echo "sapnfsafs.file.core.windows.net:/sapnfsafs/sapnw1/sapmntNW1 /sapmnt/NW1  nfs noresvport,vers=4,minorversion=1,sec=sys  0  0" >> /etc/fstab
    echo "sapnfsafs.file.core.windows.net:/sapnfsafs/saptrans /usr/sap/trans  nfs noresvport,vers=4,minorversion=1,sec=sys  0  0" >> /etc/fstab   
    # Mount the file systems.
    mount -a 
    

如果在 Azure NetApp 文件上使用 NFS,请使用以下说明在 SAP 应用程序服务器 VM 上准备 SAP 目录:

  1. 创建装载点。

    sudo mkdir -p /sapmnt/NW1
    sudo mkdir -p /usr/sap/trans
    
    sudo chattr +i /sapmnt/NW1
    sudo chattr +i /usr/sap/trans
    
    
  2. 装载文件系统。

    # If you're using NFSv3:
    echo "10.27.1.5:/sapnw1/sapmntNW1 /sapmnt/NW1 nfs nfsvers=3,hard 0 0" >> /etc/fstab
    echo "10.27.1.5:/saptrans /usr/sap/trans nfs nfsvers=3, hard 0 0" >> /etc/fstab
    # If you're using NFSv4.1:
    echo "10.27.1.5:/sapnw1/sapmntNW1 /sapmnt/NW1 nfs nfsvers=4.1,sec=sys,hard 0 0" >> /etc/fstab    
    echo "10.27.1.5:/saptrans /usr/sap/trans nfs nfsvers=4.1,sec=sys,hard 0 0" >> /etc/fstab
    # Mount the file systems.
    mount -a 
    

安装数据库

在此示例中,SAP NetWeaver 安装在 SAP HANA 上。 可以使用任何受支持的数据库完成此安装。 有关如何在 Azure 中安装 SAP HANA 的详细信息,请参阅 Azure 虚拟机上的 SAP HANA 高可用性。 有关支持的数据库列表,请参阅 SAP 说明 1928533

以 root 身份使用映射到负载均衡器前端配置 IP 地址的虚拟主机名安装数据库的 SAP NetWeaver 数据库实例。 可以使用 SAPINST_REMOTE_ACCESS_USER 参数来允许非 root 用户连接到 sapinst

sudo <swpm>/sapinst SAPINST_REMOTE_ACCESS_USER=sapadmin

安装 SAP NetWeaver 应用程序服务器

按照以下步骤安装 SAP 应用程序服务器:

  1. [A] 准备应用程序服务器。

    按照 SAP NetWeaver 应用程序服务器准备中的步骤操作。

  2. [A] 安装主要或其他 SAP NetWeaver 应用程序服务器。

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

    sudo <swpm>/sapinst SAPINST_REMOTE_ACCESS_USER=sapadmin
    
  3. [A] 更新 SAP HANA 安全存储以指向 SAP HANA 系统复制设置的虚拟名称。

    运行以下命令列出条目。

    hdbuserstore List
    

    该命令应会列出类似于以下示例的所有条目。

    DATA FILE       : /home/nw1adm/.hdb/sapa01/SSFS_HDB.DAT
    KEY FILE        : /home/nw1adm/.hdb/sapa01/SSFS_HDB.KEY
    
    KEY DEFAULT 
      ENV : 10.27.0.4:30313
      USER: SAPABAP1
      DATABASE: NW1
    

    在此示例中,默认入口点的 IP 地址指向 VM,而不是指向负载均衡器。 请更改此条目,使其指向负载均衡器的虚拟主机名。 请确保使用相同的端口和数据库名称。 例如,使用示例输出中的 30313NW1

    su - nw1adm
    hdbuserstore SET DEFAULT nw1db:30313@NW1 SAPABAP1 <password of ABAP schema>
    

测试群集设置

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

后续步骤