在 Pacemaker 中配置带有 Standalone Enqueue Server 2 (ENSA2)的 SAP S/4HANA ASCS/ERS
备注:本文档的更新版本作为 RHEL 8 的 产品文档 提供。
本文档的更新版本作为 RHEL 9 的 产品文档 提供。
内容
- 1.概述
- 2.要求
- 3.安装 SAP S/4
- 4.安装 Pacemaker
- 5.测试集群配置
- 6.在重启后使集群自动启动
- 7.可选:多节点集群
- 8.可选 - 通过外部工具为管理启用 SAP HAlib
- 9.多 SID 支持
1.概述
1.1.简介
SAP S/4HANA 系统在业务流程中扮演着重要角色,因此对于要成为高可用的此类系统至关重要。集群的基本思想非常简单:不是一台大型机器承担所有的负载和风险;而是一台或多台机器自动加入,作为已失败的服务或机器的即时全面替代。在最佳情况下,这个替代过程不会给系统的用户造成中断。
1.2.受众
本文档适用于 SAP 和红帽认证或培训的管理员和顾问,他们已有使用 RHEL HA 附加组件或其他集群解决方案建立高可用性解决方案的经验。需要可以访问 SAP Service Marketplace 和红帽客户门户网站,以能够下载软件和其他文档。
红帽咨询强烈建议建立集群并定制解决方案,以满足客户的数据中心要求,这通常比本文档中介绍的解决方案更复杂。
1.3.概念
本文档论述了如何建立一个双节点或三节点集群解决方案,该解决方案符合 SAP 和 Red Hat 建立的高可用性准则。它基于 Standalone Enqueue Server 2,现在是带有 RHEL HA 附加组件的 Red Hat Enterprise Linux 7.6 或更新版本上 SAP S/4HANA 1809 或更新版本中的默认安装。
根据 SAP,Standalone Enqueue Server 2 (ENSA2)是standalone enqueue server 的继任者。它是 SAP 锁概念的一个组件,并管理锁表。这个原则确保 ABAP 系统中数据的一致性。如果有故障转移,则需要旧的 Standalone Enqueue Server 以"跟随" Enqueue Replication Server。也就是说,HA 软件必须在当前运行 ERS 实例的主机上启动 ASCS 实例。与旧的 Standalone Enqueue Server 相比,新的 Standalone Enqueue Server 2 和 Enqueue Replicator 2 不再有这些限制。有关 ENSA2 的更多信息,请参阅 SAP 备注 2630416 - 支持 Standalone Enqueue Server 2
1.4.支持策略
请参阅:RHEL 高可用性集群的支持政策 - SAP S/4HANA 的管理
2.要求
2.1 订阅
在所有集群节点上保持订阅、内核和补丁级别一样非常重要。
请按照这个 kbase 文章 向 Update Service for RHEL for SAP Solutions 订阅您的系统。
2.2.Pacemaker 资源代理
- RHEL for SAP Solutions 7.6 或更新版本。
2.3.SAP S/4HANA 高可用性架构
SAP S/4HANA 高可用性的典型设置由 3 个不同的组件组成:
- SAP S/4 ASCS/ERS 集群资源
- SAP S/4 应用服务器 - 主应用服务器(PAS)和其他应用服务器(AAS)
- 数据库 :SAP HANA
本文重点介绍了 pacemaker 集群中 SAP S/4 ASCS 和 ERS 的配置。作为最佳实践,建议在集群之外的独立节点上,专门为(A) SCS 和 ERS 安装应用服务器和数据库。
2.4.两节点集群与多节点集群
如果有故障转移,则需要旧的 Standalone Enqueue Server 以"跟随" Enqueue Replication Server。也就是说,HA 软件必须在当前运行 ERS 实例的主机上启动 ASCS 实例。与旧的 Standalone Enqueue Server 相比,新的 Standalone Enqueue Server 2 和 Enqueue Replicator 2 不再有这些限制,这使多节点集群成为可能。
pacemaker 中的 ENSA2 可以在双节点或多节点集群中配置。在双节点集群中,ASCS 将故障转移到运行 ERS 的节点,而在多节点集群中,ASCS 将故障转移到备用节点,如下所示。

备注:以下是三节点集群安装示例的架构图。本文档中的示例重点在双节点集群设置,对多节点集群的设计和配置有单独的一章。

2.5.SAPInstance 资源代理
SAPInstance 是一个用于 ASCS 和 ERS 资源的 pacemaker 资源代理。SAPInstance 资源代理的所有操作都是通过使用 SAP 启动服务框架 sapstartsrv 来完成的。
2.6.存储要求
由集群管理的 S/4HANA 安装使用的目录必须按照 SAP 提供的准则建立。如需更多信息,请参阅 SAP 目录。
2.6.1.实例特定目录
对于 ASCS、ERS 和其他由集群管理的应用服务器实例,必须在单独的 SAN LUN 或 NFS 导出上创建实例特定目录,该导出可以在应该运行实例的节点上被集群作为本地目录挂载。例如:
- ASCS:
/usr/sap/<SAPSID>/ASCS<Ins#> - ERS:
/usr/sap/<SAPSID>/ERS<Ins#> - 应用服务器:
/usr/sap/<SAPSID>/D<Ins#>
当将 SAN LUN 用于实例特定目录时,客户必须使用 HA-LVM ,以确保实例目录一次只能在一个节点上挂载。
除 NFS 外,不支持使用共享文件系统(例如 GFS2)来托管所有实例特定目录,并使其同时在所有集群节点上可用。
当将 NFS 导出用于实例特定目录时,如果目录在 NFS 文件服务器(如 Azure NetApp Files (ANF)或 Amazon EFS)上的同一目录树上创建,则在配置 Filesystem 资源时必须使用选项 force_unmount=safe。这个选项将确保集群只停止在特定 NFS 导出上运行的进程,而不是停止创建导出的目录树上运行的所有进程(如需更多信息,请参阅 在 pacemaker 资源的故障转移过程中,文件系统资源终止没有使用文件系统的进程)。
2.6.2.共享目录
在运行 SAP 系统的 SAP 实例的所有服务器上必须提供以下目录:
/sapmnt
/usr/sap/trans
/sapmnt 目录还必须在运行 SAP 系统的一部分服务的其他服务器上可访问(例如托管 HANA DB 实例的服务器或托管不由集群管理的其他应用服务器的服务器)。
要在托管同一 SAP 系统的服务的所有服务器之间共享 /sapmnt 和 /usr/sap/trans 目录,您可以使用以下方法之一:
- 使用外部 NFS 服务器(如 RHEL 高可用性集群的支持策略 - 高可用性文件系统挂载的管理 中所述,不支持同时使用同一主机作为 NFS 服务器和挂载来自此 NFS 服务器的同一 NFS 导出("循环挂载")的 NFS 客户端)
- 使用 GFS2 文件系统(这需要所有节点都有 Resilient Storage Add-on 订阅)
- 使用 glusterfs 文件系统(检查文章 glusterfs 是否可用于 SAP NetWeaver 共享文件系统? 中的额外备注)
共享目录可以通过 /etc/fstab 静态挂载,或者挂载可由集群管理(在这种情况下,必须确保集群在尝试通过设置合适的约束启动任何 SAP 实例前在集群节点上挂载 /sapmnt 目录)。
3.安装 SAP S/4
3.1.本文档中使用的配置选项
以下是本文档中将用于实例的配置选项:
两个节点将在 pacemaker 中运行 ASCS/ERS 实例:
1st node hostname: s4node1
2nd node hostname: s4node2
SID: S4H
ASCS Instance number: 20
ASCS virtual hostname: s4ascs
ERS Instance number: 29
ERS virtual hostname: s4ers
双节点集群外:
PAS Instance number: 21
AAS Instance number: 22
HANA 数据库:
SID: S4D
HANA Instance number: 00
HANA virtual hostname: s4db
3.2.准备主机
在开始安装前,请确保:
- 安装 RHEL for SAP Solutions 7.6+
- 将系统注册到 RHN 或 Satellite,启用 RHEL for SAP 应用程序渠道,或更新服务(E4S)渠道
- 启用高可用性附加组件渠道
- 共享存储和文件系统在正确的挂载点存在
- 实例使用的虚拟 IP 地址存在并可访问
- 实例将使用的主机名可以解析到 IP 地址,反之亦然
- 安装介质可用
- 系统根据运行 SAP S/4 的建议进行了配置
- Red Hat Enterprise Linux 7.x:安装和升级 - SAP 备注 2002167
- Red Hat Enterprise Linux 8.x:安装和配置 - SAP 备注 2772999
3.3.安装 S/4
使用软件置备管理器(SWPM)按下列顺序安装实例:
- ASCS 实例
- ERS 实例
- DB 实例
- PAS 实例
- AAS 实例
3.3.1.在 s4node1 上安装 S/4
以下文件系统应挂载到 s4node1 上,其中将安装 ASCS:
/usr/sap/S4H/ASCS20
/usr/sap/S4H/SYS
/usr/sap/trans
/sapmnt
s4ascs 的虚拟 IP 应该在 s4node1 上启用。
运行安装程序:
[root@s4node1]# ./sapinst SAPINST_USE_HOSTNAME=s4ascs
选择 High-Availability System 选项。

3.3.2.在 s4node2 上安装 ERS
以下文件系统应挂载到 s4node2 上,其中将安装 ERS:
/usr/sap/S4H/ERS29
/usr/sap/S4H/SYS
/usr/sap/trans
/sapmnt
s4ers 的虚拟 IP 应在 s4node2 上启用。
运行安装程序:
[root@s4node2]# ./sapinst SAPINST_USE_HOSTNAME=s4ers
选择 High-Availability System 选项。

3.3.3.SAP HANA
在示例中,SAP HANA 将使用以下配置:您也可以使用其他支持的数据库。
SAP HANA SID: S4D
SAP HANA Instance number: 00
SAP HANA 应安装在单独的主机上。另外,也可以按照文档 pacemaker 集群中的 SAP HANA 系统复制 ,在另一个 pacemaker 集群中安装自动化 HANA 系统复制。
在 HANA 主机上运行安装程序:
[root]# ./sapinst SAPINST_USE_HOSTNAME=s4db
3.3.4.安装应用服务器
以下文件系统应挂载在主机上,以运行应用服务器实例。如果您有多个应用服务器,请在相应的主机上安装每个应用服务器:
/usr/sap/S4H/D<Ins#>
/usr/sap/S4H/SYS
/usr/sap/trans
/sapmnt
运行安装程序:
[root]# ./sapinst
选择 High-Availability System 选项。
3.4.安装后
3.4.1.(A)SCS 配置文件修改
(A)SCS 实例需要在配置文件中进行以下修改,以防止 enqueue 服务器的自动重启,因为它将由集群管理。要应用更改,请对 ASCS 配置文件 /sapmnt/S4H/profile/S4H_ASCS20_s4ascs 运行以下命令。
[root]# sed -i -e 's/Restart_Program_01/Start_Program_01/' /sapmnt/S4H/profile/S4H_ASCS20_s4ascs
3.4.2.ERS 配置文件修改
ERS 实例需要在配置文件中进行以下修改,以防止自动重启,因为它将由集群管理。要应用更改,请对 ERS 配置文件 /sapmnt/S4H/profile/S4H_ERS29_s4ers 运行以下命令。
[root]# sed -i -e 's/Restart_Program_00/Start_Program_00/' /sapmnt/S4H/profile/S4H_ERS29_s4ers
3.4.3.更新 /usr/sap/sapservices 文件
在 s4node1 和 s4node2 上,确保 /usr/sap/sapservices 文件中注释掉了以下两行:
#LD_LIBRARY_PATH=/usr/sap/S4H/ERS29/exe:$LD_LIBRARY_PATH; export LD_LIBRARY_PATH; /usr/sap/S4H/ERS29/exe/sapstartsrv pf=/usr/sap/S4H/SYS/profile/S4H_ERS29_s4ers -D -u s4hadm
#LD_LIBRARY_PATH=/usr/sap/S4H/ASCS20/exe:$LD_LIBRARY_PATH; export LD_LIBRARY_PATH; /usr/sap/S4H/ASCS20/exe/sapstartsrv pf=/usr/sap/S4H/SYS/profile/S4H_ASCS20_s4ascs -D -u s4hadm
3.4.4.在故障转移节点上为 ASCS 和 ERS 创建挂载点
[root@s4node1 ~]# mkdir /usr/sap/S4H/ERS29/
[root@s4node1 ~]# chown s4hadm:sapsys /usr/sap/S4H/ERS29/
[root@s4node2 ~]# mkdir /usr/sap/S4H/ASCS20
[root@s4node2 ~]# chown s4hadm:sapsys /usr/sap/S4H/ASCS20
3.4.5.在其他节点上手动测试实例
停止 ASCS 和 ERS 实例。将实例特定目录移到其他节点:
[root@s4node1 ~]# umount /usr/sap/S4H/ASCS20
[root@s4node2 ~]# mount /usr/sap/S4H/ASCS20
[root@s4node2 ~]# umount /usr/sap/S4H/ERS29/
[root@s4node1 ~]# mount /usr/sap/S4H/ERS29/
在其他集群节点上手动启动 ASCS 和 ERS 实例,然后分别手动停止它们。
3.4.6.检查所有节点上的 SAP HostAgent
在所有节点上,检查 SAP HostAgent 是否有相同的版本,并满足最低版本要求:
[root]# /usr/sap/hostctrl/exe/saphostexec -version
要升级/安装 SAP HostAgent,请按照 SAP 备注 1031096 操作。
3.4.7.安装永久 SAP 许可证密钥
改进了高可用性场景中的 SAP 硬件密钥确定。可能需要根据每个集群节点的硬件密钥安装几个 SAP 许可证密钥。请参阅 SAP 备注 1178686 - Linux:生成 SAP 硬件密钥的替代方法,以了解更多信息。
4.安装 Pacemaker
请参阅以下文档来首先建立一个 pacemaker 集群。
请确保遵循 RHEL 高可用性集群的支持策略 - 隔离/STONITH 的一般要求 中的指导方针进行隔离/STONITH 设置。有关支持不同平台的隔离/STONITH 代理的信息在 集群平台和架构 中提供。
本指南假定以下事项工作正常:
- Pacemaker 集群按照文档进行了配置,并有适当和正常的隔离
- (A)SCS 和 ERS 实例之间的 Enqueue 复制已手动测试了,如 设置 Enqueue 复制服务器故障切换 中所述
- 节点订阅到所需的渠道,如 RHEL for SAP 存储库和如何启用它们 中所述,
4.1.配置常规集群属性
为了避免在初始测试和后期生产过程中资源的不必要故障转移,请为 resource-stickiness 和 migration-threshold 参数设置以下默认值:请注意,默认值不适用于使用自己的定义值覆盖它们的资源。
[root]# pcs resource defaults resource-stickiness=1
[root]# pcs resource defaults migration-threshold=3
备注 :
1.在集群的一个节点上运行上述命令就足够了。
2.命令 resource-stickiness=1 将鼓励资源在所在位置保持运行,而 migration-threshold=3 将导致资源在 3 次失败后移到新节点。3 通常足以防止资源被过早故障转移到另一个节点。这也可确保资源故障切换时间保持在可控制的限制内。
4.2.在所有集群节点上安装 resource-agents-sap
[root]# yum install resource-agents-sap
4.3.为共享文件系统配置集群资源
配置共享文件系统,以在所有集群节点上提供以下挂载点。
/sapmnt
/usr/sap/trans
/usr/sap/RH2/SYS
4.3.1.配置集群管理的共享文件系统
克隆的 Filesystem 集群资源可用于在所有集群节点上挂载来自外部 NFS 服务器的共享,如下所示。
对于 RHEL 7
[root]# pcs resource create rh2_fs_sapmnt Filesystem device='<NFS_Server>:<sapmnt_nfs_share>' directory='/sapmnt' fstype='nfs' --clone interleave=true
[root]# pcs resource create rh2_fs_sap_trans Filesystem device='<NFS_Server>:<sap_trans_nfs_share>' directory='/usr/sap/trans' fstype='nfs' --clone interleave=true
[root]# pcs resource create rh2_fs_sap_sys Filesystem device='<NFS_Server>:<rh2_sys_nfs_share>' directory='/usr/sap/RH2/SYS' fstype='nfs' --clone interleave=true
4.3.2.配置在集群外管理的共享文件系统
如果共享文件系统不是由集群管理,则必须确保它们在 pacemaker 服务启动之前可用。
在 RHEL 7 中,由于 systemd 并行化,您必须确保共享文件系统在 resource-agents-deps 目标中启动。有关这方面的更多详细信息,请参阅文档 9.6 部分。为不是由 Pacemaker 管理的资源依赖项配置启动顺序(Red Hat Enterprise Linux 7.4 及更新版本)。
4.4.配置 ASCS 资源组
4.4.1.为虚拟 IP 地址创建资源
# pcs resource create rh2_vip_ascs20 IPaddr2 ip=192.168.200.101 --group rh2_ASCS20_group
4.4.2.为 ASCS 文件系统创建资源。
以下是为 NFS 文件系统创建资源的示例
# pcs resource create rh2_fs_ascs20 Filesystem device='<NFS_Server>:<rh2_ascs20_nfs_share>' directory=/usr/sap/RH2/ASCS20 fstype=nfs force_unmount=safe --group rh2_ASCS20_group \
op start interval=0 timeout=60 \
op stop interval=0 timeout=120 \
op monitor interval=200 timeout=40
以下是为 HA-LVM 文件系统创建资源的示例
# pcs resource create rh2_fs_ascs20_lvm LVM volgrpname='<ascs_volume_group>' exclusive=true --group rh2_ASCS20_group
# pcs resource create rh2_fs_ascs20 Filesystem device='/dev/mapper/<ascs_logical_volume>' directory=/usr/sap/RH2/ASCS20 fstype=ext4 --group rh2_ASCS20_group
4.4.3.为 ASCS 实例创建资源
# pcs resource create rh2_ascs20 SAPInstance InstanceName="RH2_ASCS20_rhascs" START_PROFILE=/sapmnt/RH2/profile/RH2_ASCS20_rhascs AUTOMATIC_RECOVER=false \
meta resource-stickiness=5000 \
--group rh2_ASCS20_group \
op monitor interval=20 on-fail=restart timeout=60 \
op start interval=0 timeout=600 \
op stop interval=0 timeout=600
注:此处的 meta resource-stickiness=5000 是为了平衡 ERS 的故障转移约束,因此资源保留在其启动的节点上,且不会在集群中不受控制地迁移。
向组中添加一个资源粘性,以确保 ASCS 在可能的情况下保留在一个节点上:
# pcs resource meta rh2_ASCS20_group resource-stickiness=3000
4.5.配置 ERS 资源组
4.5.1.为虚拟 IP 地址创建资源
# pcs resource create rh2_vip_ers29 IPaddr2 ip=192.168.200.102 --group rh2_ERS29_group
4.5.2.为 ERS 文件系统创建资源
以下是为 NFS 文件系统创建资源的示例
# pcs resource create rh2_fs_ers29 Filesystem device='<NFS_Server>:<rh2_ers29_nfs_share>' directory=/usr/sap/RH2/ERS29 fstype=nfs force_unmount=safe --group rh2_ERS29_group \
op start interval=0 timeout=60 \
op stop interval=0 timeout=120 \
op monitor interval=200 timeout=40
以下是为 HA-LVM 文件系统创建资源的示例
# pcs resource create rh2_fs_ers29_lvm LVM volgrpname='<ers_volume_group>' exclusive=true --group rh2_ERS29_group
# pcs resource create rh2_fs_ers29 Filesystem device='/dev/mapper/<ers_logical_volume>' directory=/usr/sap/RH2/ERS29 fstype=ext4 --group rh2_ERS29_group
4.5.3.为 ERS 实例创建资源
创建 ERS 实例集群资源。备注:对于 ENSA1 部署,IS_ERS=true 属性是必须的。有关 IS_ERS 的更多信息,可在 IS_ERS 属性如何在具有 Standalone Enqueue Server (ENSA1 和 ENSA2)的 SAP NetWeaver 集群上工作? 上找到
# pcs resource create rh2_ers29 SAPInstance InstanceName="RH2_ERS29_rhers" START_PROFILE=/sapmnt/RH2/profile/RH2_ERS29_rhers AUTOMATIC_RECOVER=false IS_ERS=true --group rh2_ERS29_group \
op monitor interval=20 on-fail=restart timeout=60 \
op start interval=0 timeout=600 \
op stop interval=0 timeout=600
4.6.创建约束
4.6.1.为 ASCS 和 ERS 资源组创建托管约束
资源组 rh2_ASCS20_group 和 rh2_ERS29_group 应该尝试避免在同一节点上运行。组的顺序很重要。
# pcs constraint colocation add rh2_ERS29_group with rh2_ASCS20_group -5000
4.6.2.为 ASCS 和 ERS 资源组创建顺序约束
首选在 rh2_ERS29_group 之前启动 rh2_ASCS20_group(可选)
# pcs constraint order start rh2_ASCS20_group then stop rh2_ERS29_group symmetrical=false kind=Optional
4.6.3.为集群管理的 /sapmnt 资源创建顺序约束
如果共享文件系统 /sapmnt 是由集群管理的,则以下约束确保具有 ASCS 和 ERS SAPInstance 资源的资源组仅在文件系统可用时启动。
# pcs constraint order rh2_fs_sapmnt-clone then rh2_ASCS20_group
# pcs constraint order rh2_fs_sapmnt-clone then rh2_ERS29_group
4.7.配置主应用服务器组(PAS)(可选)
以下是配置资源组 rh2_PAS_D01_group 的示例,该资源组包含由 SAPInstance 资源代理管理的主应用服务器(PAS)实例 rh2_pas_d01。
4.7.1.为 PAS 实例创建虚拟 IP 地址
要创建将是 rh2_PAS_D01_group 一部分的虚拟 IP 地址,请使用以下命令。
[root]# pcs resource create rh2_vip_pas_d01 IPaddr2 ip=192.168.0.16 --group rh2_PAS_D01_group
要验证资源是否在新组 rh2_PAS_D01_group 中创建了,pcs status 命令的输出应该像如下这样:
[root]# pcs status
...
Resource Group: rh2_PAS_D01_group
rh1_vip_pas_d01 (ocf::heartbeat:IPaddr2): Started node1
...
4.7.2.在 PAS 资源组中配置 LVM 和 Filesystem 集群资源
首先添加 LVM 集群资源,然后添加 Filesystem 集群资源。集群共享的 LVM 应该按照文章 什么是高可用性 LVM (HA-LVM)配置以及如何实现它? 中的描述进行配置。
[root]# pcs resource create rh2_lvm_pas_d01 LVM volgrpname=vg_d01 exclusive=true --group rh2_PAS_D01_group
[root]# pcs resource create rh2_fs_pas_d01 Filesystem device=/dev/vg_d01/lv_d01 directory=/usr/sap/RH2/D01 fstype=xfs --group rh2_PAS_D01_group
验证资源是否添加到 rh2_PAS_D01_group 资源组并启动,如下所示。
[root]# pcs status
...
Resource Group: rh2_PAS_D01_group
rh2_vip_pas_d01 (ocf::heartbeat:IPaddr2): Started node1
rh2_lvm_pas_d01 (ocf::heartbeat:LVM): Started node1
rh2_fs_pas_d01 (ocf::heartbeat:Filesystem): Started node1
...
4.7.3.为 PAS 资源组配置约束
PAS 要求 ASCS 和数据库实例在其正确启动前运行。以下是如何为可被 SAP Netweaver 使用的各种数据库设置约束以达到此目的的命令示例。
4.7.3.1.带有 rh2_SAPDatabase_group 组的部署
对于有一个将启动数据库所需的所有资源的集群资源组的配置。此处的 SAPDatabase 资源代理用于管理数据库,并且是数据库组 rh2_SAPDatabase_group 的一部分。以下命令将创建约束,其将仅在 ASCS 实例被提升且数据库组 rh2_SAPDatabase_group 运行后启动整个 rh2_PAS_D01_group。
[root]# pcs constraint order rh2_SAPDatabase_group then rh2_PAS_D01_group kind=Optional symmetrical=false
[root]# pcs constraint order start rh2_ASCS20_group then rh2_PAS_D01_group kind=Optional symmetrical=false
执行命令后,验证约束是否已正确添加。
[root]# pcs constraint
Ordering Constraints:
...
start rh2_SAPDatabase_group then start rh2_PAS_group (kind:Optional) (non-symmetrical)
start rh2_ASCS20_group then start rh2_PAS_group (kind:Optional) (non-symmetrical)
...
4.7.3.2.具有系统复制的 SAP HANA 作为数据库的部署
当使用为集群管理的系统复制(SR)配置的 SAP HANA 数据库时,以下约束将确保整个 rh2_PAS_D01_group 只在 ASCS 实例被提升且升级了 SAP HANA SAPHana_RH2_02-master 后启动。
[root]# pcs constraint order promote SAPHana_RH2_02-master then rh2_PAS_D01_group Kind=Optional symmetrical=false
[root]# pcs constraint order start rh2_ASCS20_group then rh2_PAS_D01_group Kind=Optional symmetrical=false
执行命令后,验证约束是否已正确添加。
[root]# pcs constraint
Ordering Constraints:
...
promote SAPHana_RH2_02-master then start rh2_PAS_group (kind:Optional) (non-symmetrical)
start rh2_ASCS20_group then start rh2_PAS_group (kind:Optional) (non-symmetrical)
...
4.7.4.配置 PAS SAPInstance 集群资源
要运行 PAS 实例,请使用与(A)SCS/ERS 实例相同的 SAPInstance 资源代理。与(A)SCS/ERS 相比,PAS 实例是一个简单的实例,需要配置的属性较少。检查以下命令,例如,如何为 'D01' 实例创建一个 PAS 实例,并将其放在 rh2_PAS_D01_group 资源组的末尾。
[root]# pcs resource create rh2_pas_d01 SAPInstance InstanceName="RH2_D01_rh1-pas" DIR_PROFILE=/sapmnt/RH2/profile START_PROFILE=/sapmnt/RH2/profile/RH2_D01_rh1-pas --group rh2_PAS_D01_group
使用以下命令验证 PAS SAPInstance 资源的配置。
[root]# pcs resource show rh2_pas_d01
Resource: rh2_pas_d01 (class=ocf provider=heartbeat type=SAPInstance)
Attributes: DIR_PROFILE=/sapmnt/RH2/profile InstanceName=RH2_D01_rh1-pas START_PROFILE=/sapmnt/RH2/profile/RH2_D01_rh2-pas
Operations: demote interval=0s timeout=320 (rh2_pas_d01-demote-interval-0s)
monitor interval=120 timeout=60 (rh2_pas_d01-monitor-interval-120)
monitor interval=121 role=Slave timeout=60 (rh2_pas_d01-monitor-interval-121)
monitor interval=119 role=Master timeout=60 (rh2_pas_d01-monitor-interval-119)
promote interval=0s timeout=320 (rh2_pas_d01-promote-interval-0s)
start interval=0s timeout=180 (rh2_pas_d01-start-interval-0s)
stop interval=0s timeout=240 (rh2_pas_d01-stop-interval-0s)
4.8.配置额外的应用服务器组(AAS)(可选)
以下是配置资源组 rh2_AAS_D02_group 的示例,其包含由 SAPInstance 资源代理管理的其它应用服务器(AAS)实例 rh2_aas_d02。
4.8.1.为 AAS 实例创建虚拟 IP 地址
要创建将是 rh2_AAS_D02_group 一部分的虚拟 IP 地址,请使用以下命令。
[root]# pcs resource create rh2_vip_aas_d02 IPaddr2 ip=192.168.0.17 --group rh2_AAS_D02_group
要验证资源是否在新组 rh2_AAS_D02_group 中创建了,pcs status 命令的输出应类似如下:
[root]# pcs status
...
Resource Group: rh2_AAS_D02_group
rh2_vip_aas_d02 (ocf::heartbeat:IPaddr2): Started node1
...
4.8.2.在 AAS 资源组中配置 LVM 和 Filesystem 集群资源
首先添加 LVM 集群资源,然后添加 Filesystem 集群资源。集群共享的 LVM 应该按照文章 什么是高可用性 LVM (HA-LVM)配置以及如何实现它? 中的描述进行配置。
[root]# pcs resource create rh2_lvm_aas_d02 LVM volgrpname=vg_d02 exclusive=true --group rh2_AAS_D02_group
[root]# pcs resource create rh2_fs_aas_d02 Filesystem device=/dev/vg_d02/lv_d02 directory=/usr/sap/RH2/D02 fstype=xfs --group rh1_AAS_D02_group
验证资源是否已添加到 rh1_AAS_D02_group 资源组中并已启动,如下所示。
[root]# pcs status
...
Resource Group: rh1_AAS_D02_group
rh2_vip_aas_d02 (ocf::heartbeat:IPaddr2): Started node1
rh2_lvm_aas_d02 (ocf::heartbeat:LVM): Started node1
rh2_fs_aas_d02 (ocf::heartbeat:Filesystem): Started node1
...
4.8.3.为 AAS 资源组配置约束
在其正确启动前,AAS 还需要 ASCS 和数据库实例运行。以下是如何为可被 SAP Netweaver 使用的各种数据库设置约束以达到此目的的命令示例。
4.8.3.1.带有 rh2_SAPDatabase_group 组的部署
对于有一个将启动数据库所需的所有资源的集群资源组的配置。此处的 SAPDatabase 资源代理用于管理数据库,并且是数据库组 rh2_SAPDatabase_group 的一部分。以下命令将创建约束,其将只在 ASCS 实例被提升,且数据库组 rh2_SAPDatabase_group 运行后,启动整个 rh2_AAS_D02_group。
[root]# pcs constraint order rh2_SAPDatabase_group then rh2_AAS_D02_group kind=Optional symmetrical=false
[root]# pcs constraint order start rh2_ASCS20_group then rh1_AAS_D02_group kind=Optional symmetrical=false
执行命令后,验证约束是否已正确添加。
[root]# pcs constraint
Ordering Constraints:
...
start rh2_SAPDatabase_group then start rh2_AAS_group (kind:Optional) (non-symmetrical)
start rh2_ASCS20_group then start rh2_AAS_group (kind:Optional) (non-symmetrical)
...
4.8.3.2.具有 SR 的 SAP HANA 作为数据库的部署
当使用为集群管理的系统复制(SR)配置的 SAP HANA 数据库时,以下约束将确保整个 rh2_PAS_D01_group 只在 ASCS 实例被提升且升级了 SAP HANA SAPHana_RH2_02-master 后启动。
[root]# pcs constraint order promote SAPHana_RH2_02-master then rh2_AAS_D02_group symmetrical=false
[root]# pcs constraint order start rh2_ASCS20_group then rh2_AAS_D02_group
执行命令后,验证约束是否已正确添加。
[root]# pcs constraint
Ordering Constraints:
...
promote SAPHana_RH2_02-master then start rh2_AAS_group (kind:Optional) (non-symmetrical)
start rh2_ASCS20_group then start rh2_AAS_group (kind:Optional) (non-symmetrical)
...
重要备注:请注意,当设置了参数 kind=Optional 和 symmetrical=false 时,ASCS 和 HANA 数据库的故障转移不会导致 PAS 和/或 AAS 实例的重启,但在 Initial startup 过程中,如果关联的 ASCS 和/或 Database 实例无法启动,则集群仍然尝试启动 PAS 和 AAS 实例,而它们将依次失败。
4.8.4.配置 AAS SAPInstance 集群资源
要运行 AAS 实例,也使用与(A) SCS/ERS 实例相同的 SAPInstance 资源代理。与(A)SCS/ERS 相比,AAS 实例是一个简单的实例,需要配置的属性较少。检查以下命令,例如,如何为 'D02' 实例创建一个 AAS 实例,并将它放在 rh2_AAS_D02_group 资源组的末尾。
[root]# pcs resource create rh2_aas_d02 SAPInstance InstanceName="RH2_D02_rh2-aas" DIR_PROFILE=/sapmnt/RH2/profile START_PROFILE=/sapmnt/RH2/profile/RH2_D02_rh2-aas --group rh2_AAS_D02_group
使用以下命令,验证 AAS SAPInstance 资源的配置。
[root]# pcs resource show rh2_aas_d02
Resource: rh2_aas_d02 (class=ocf provider=heartbeat type=SAPInstance)
Attributes: DIR_PROFILE=/sapmnt/RH2/profile InstanceName=RH2_D02_rh2-aas START_PROFILE=/sapmnt/RH2/profile/RH2_D02_rh2-aas
Operations: demote interval=0s timeout=320 (rh2_aas_d02-demote-interval-0s)
monitor interval=120 timeout=60 (rh2_aas_d02-monitor-interval-120)
monitor interval=121 role=Slave timeout=60 (rh2_aas_d02-monitor-interval-121)
monitor interval=119 role=Master timeout=60 (rh2_aas_d02-monitor-interval-119)
promote interval=0s timeout=320 (rh2_aas_d02-promote-interval-0s)
start interval=0s timeout=180 (rh2_aas_d02-start-interval-0s)
stop interval=0s timeout=240 (rh2_aas_d02-stop-interval-0s)
4.8.5.为 PAS 和 AAS SAPInstance 集群资源配置约束
要确保 PAS 和 AAS 实例在两个节点都运行时不会在相同的节点上运行,您可以使用以下命令添加负托管约束:
[root]# pcs constraint colocation add rh2_AAS_D02_group with rh2_PAS_D01_group score=-1000
验证约束集:
[root]# pcs constraint colocation
Colocation Constraints:
rh2_AAS_D02_group with rh2_PAS_D01_group (score:-1000)
分数 -1000 是为了确保只有 1 个节点可用时,AAS 实例将继续在其他节点上运行。在这种情况下,如果您想要关闭 AAS 实例,您可以使用 score=-INFINITY ,这将强制这种情况。
4.8.6.更新 /usr/sap/sapservices 文件
在两个节点上,通过注释掉以下 2 行来更新 /usr/sap/sapservices 文件。
...........
#LD_LIBRARY_PATH=/usr/sap/RH2/D01/exe:$LD_LIBRARY_PATH; export LD_LIBRARY_PATH; /usr/sap/RH2/D01/exe/sapstartsrv pf=/usr/sap/RH2/SYS/profile/RH2_D01_rh2pas -D -u rh2adm
#LD_LIBRARY_PATH=/usr/sap/RH2/D02/exe:$LD_LIBRARY_PATH; export LD_LIBRARY_PATH; /usr/sap/RH2/D02/exe/sapstartsrv pf=/usr/sap/RH2/SYS/profile/RH2_D02_rh2aas -D -u rh2adm
由于集群现在管理实例,因此不再需要上述条目。
5.测试集群配置
5.1.检查约束
# pcs constraint
Location Constraints:
Ordering Constraints:
start s4h_ASCS20_group then start s4h_ERS29_group (kind:Optional) (non-symmetrical)
start s4h_ASCS20_group then stop s4h_ERS29_group (kind:Optional) (non-symmetrical)
Colocation Constraints:
s4h_ERS29_group with s4h_ASCS20_group (score:-5000)
Ticket Constraints:
5.2.因为节点崩溃而故障转移 ASCS
在崩溃前,ASCS 运行在 s4node1 上,而 ERS 运行在 s4node2 上。
# pcs status
...
Resource Group: s4h_ASCS20_group
s4h_fs_ascs20 (ocf::heartbeat:Filesystem): Started s4node1
s4h_vip_ascs20 (ocf::heartbeat:IPaddr2): Started s4node1
s4h_ascs20 (ocf::heartbeat:SAPInstance): Started s4node1
Resource Group: s4h_ERS29_group
s4h_fs_ers29 (ocf::heartbeat:Filesystem): Started s4node2
s4h_vip_ers29 (ocf::heartbeat:IPaddr2): Started s4node2
s4h_ers29 (ocf::heartbeat:SAPInstance): Started s4node2
...
在 s4node2 上,运行以下命令来监控集群中的状态变化:
[root@s4node2 ~]# crm_mon -Arf
运行以下命令来使 s4node1 崩溃。请注意,到 s4node1 的连接将在命令后丢失。
[root@s4node1 ~]# echo c > /proc/sysrq-trigger
在 s4node2 上,监控故障转移过程。故障转移后,集群应处于这样的状态,在 s4node2 上都有 ASCS 和 ERS。
[root@s4node2 ~]# pcs status
...
Resource Group: s4h_ASCS20_group
s4h_fs_ascs20 (ocf::heartbeat:Filesystem): Started s4node2
s4h_vip_ascs20 (ocf::heartbeat:IPaddr2): Started s4node2
s4h_ascs20 (ocf::heartbeat:SAPInstance): Started s4node2
Resource Group: s4h_ERS29_group
s4h_fs_ers29 (ocf::heartbeat:Filesystem): Started s4node2
s4h_vip_ers29 (ocf::heartbeat:IPaddr2): Started s4node2
s4h_ers29 (ocf::heartbeat:SAPInstance): Started s4node2
...
5.3.ERS 移到之前失败的节点
使 s4node1 重新在线并启动集群:
[root@s4node1 ~]# pcs cluster start
ERS 应该移到 s4node1 上,而 ASCS 保留在 s4node2 上。等待 ERS 完成迁移,最后,集群应处于这种状态:
[root@node1 ~]# pcs status
...
Resource Group: s4h_ASCS20_group
s4h_fs_ascs20 (ocf::heartbeat:Filesystem): Started s4node2
s4h_vip_ascs20 (ocf::heartbeat:IPaddr2): Started s4node2
s4h_ascs20 (ocf::heartbeat:SAPInstance): Started s4node2
Resource Group: s4h_ERS29_group
s4h_fs_ers29 (ocf::heartbeat:Filesystem): Started s4node1
s4h_vip_ers29 (ocf::heartbeat:IPaddr2): Started s4node1
s4h_ers29 (ocf::heartbeat:SAPInstance): Started s4node1
...
6.启用集群以在重启后自动启动
集群尚未被启用为重启后自动启动。系统管理员需要在节点被隔离并重启后手动启动集群。
测试上一部分后,当一切正常时,启用集群以在重启后自动启动:
# pcs cluster enable --all
注: 在某些情况下,在节点重启后,不使集群自动启动是有好处的。例如:如果集群资源需要的文件系统有问题,且文件系统在被重新使用前需要首先修复,则使集群自动启动,但然后会失败,因为文件系统无法正常工作,可能导致更多问题。
现在,请重新运行上一部分中的测试,以确保集群仍然可以正常工作。请注意,在 5.3 部分中,不需要在节点重启后运行 pcs cluster start 命令。重启后集群应自动启动。
此时您已成功为 ENSA2 配置了一个双节点集群。您可以继续进行密集测试来准备生产环境,或者选择性向集群中添加更多节点。
7.可选:多节点集群
这是运行多节点集群的一个选项。但是,随着集群越来越复杂,请仔细设计以下红帽支持策略。建议与红帽集群顾问进行合作。
7.1.仲裁策略
仲裁 的选项因配置而异。请查看配置指南。
- 如何使用 pacemaker 和 corosync 配置我的 RHEL 7 高 Availabililty 集群,以在一半节点失败后保持仲裁?
- RHEL 高可用性集群设计指南 - 使用 qdevice 仲裁的注意事项
注:以下是向之前配置的双节点集群添加第三个节点的示例,假设仲裁策略将被正确配置。
7.2.操作系统配置
在 RHEL for SAP Solutions 订阅、操作系统配置等资源方面,创建一个与前两个节点一样的节点。如果您可以从其他集群节点克隆节点,则这是首选。
在示例中,节点的主机名是 s4node3。确保每个集群节点上的 /etc/hosts 包含所有集群节点和 virt。SAP 实例的 IP 。
确保将 /etc/services 中与 SAP 相关的条目从前两个节点复制到第三个节点,例如 sapmsS4H 3620/tcp # SAP System Message Server Port。
7.3.创建用户
创建以下与其它两个节点相同的组和用户。例如:
Groups in /etc/group:
sapsys:x:1010:
sapinst:x:1011:root,s4hadm
Users in /etc/passwd:
s4hadm:x:1020:1010:SAP System Administrator:/home/s4hadm:/bin/csh
sapadm:x:1001:1010:SAP System Administrator:/home/sapadm:/bin/false
7.4.创建挂载点
创建以下挂载点,您不必挂载文件系统。
/usr/sap/S4H/ASCS20
/usr/sap/S4H/ERS29
/usr/sap/S4H/SYS
/usr/sap/trans
/sapmnt
7.5.安装 pacemaker
# yum -y install pcs pacemaker
7.6.向集群中添加节点
在现有集群 s4ha 的一个节点上,添加第三个节点:
# pcs cluster auth s4node3
Username: hacluster
Password:
# pcs cluster node add s4node3
7.7.更新 STONITH 以包含第三个节点
根据 STONITH 设置,您可能需要更新 STONITH 资源,以包含第三个节点。
测试隔离是否在第三个节点上工作正常。
[root@s4node1 ~]# pcs stonith fence s4node3
隔离后,请记住手动启动集群,因为集群还没有配置为在引导时自动启动:
[root@s4node3 ~]# pcs cluster start
7.8.更新 ERS 资源
此处的 meta resource-stickiness=3000 是为了确保资源 ERS 保持在其启动的节点上,且不会不受控制地在集群中迁移。
# pcs resource meta s4h_ers29 resource-stickiness=3000
7.9.测试故障转移
7.9.1.因为节点崩溃而故障转移 ASCS
在崩溃前,ASCS 运行在 s4node1 上,而 ERS 运行在 s4node2 上。
在 s4node2 上,运行以下命令来监控集群中的状态变化:
[root@s4node2 ~]# crm_mon -Arf
运行以下命令来使 s4node1 崩溃。请注意,到 s4node1 的连接将在命令后丢失。
[root@s4node1 ~]# echo c > /proc/sysrq-trigger
在 s4node2 上,监控故障转移过程。故障转移后,集群应处于这种状态,ASCS 在 s4node3 上运行,且 ERS 保留在 s4node2 上。
[root@s4node2 ~]# pcs status
...
Resource Group: s4h_ASCS20_group
s4h_fs_ascs20 (ocf::heartbeat:Filesystem): Started s4node3
s4h_vip_ascs20 (ocf::heartbeat:IPaddr2): Started s4node3
s4h_ascs20 (ocf::heartbeat:SAPInstance): Started s4node3
Resource Group: s4h_ERS29_group
s4h_fs_ers29 (ocf::heartbeat:Filesystem): Started s4node2
s4h_vip_ers29 (ocf::heartbeat:IPaddr2): Started s4node2
s4h_ers29 (ocf::heartbeat:SAPInstance): Started s4node2
...
7.9.2.ERS 保留在当前节点上
使 s4node1 重新在线,ERS 应该保留在当前节点上,而不是移回到 s4node1。
7.9.3.测试 ERS 崩溃
同样,测试崩溃运行 ERS 的节点。ERS 组应该故障转移到备用节点,而 ASCS 在其当前节点上保持不变。崩溃的节点恢复后,ERS 组不应移回。
7.10.启用集群以在重启后自动启动
[root@s4node3 ~]# pcs cluster enable
8.可选 - 为外部工具管理启用 SAP HAlib
当系统管理员控制在 pacemaker 集群内运行的 SAP 实例时,可以手动或使用 SAP 管理控制台(MC/MMC)等工具,需要通过 HA 集群软件提供的 HA 接口完成更改。SAP 启动服务 sapstartsrv 控制 SAP 实例,需要被配置为通过 HA 接口与 pacemaker 集群软件进行通信。
请按照 kbase 文章来配置 HAlib :如何为 SAPInstance 资源配置 SAP HAlib?
9.多 SID 支持
本文档中描述的设置也可用于在同一集群中管理多个 SAP 环境(Multi-SID)的 ASCS/ERS 实例。以下是一些注意事项:
9.1.先决条件
9.1.1.唯一的 SID 和实例号
要避免冲突,每一对 ASCS/ERS 实例必须使用不同的 SID,每个实例必须使用唯一的实例号,即使它们属于不同的 SID。
9.1.2.大小
每个集群节点必须满足 SAP 对大小的要求,以支持多个实例。
9.1.3.共享文件系统
由于共享文件系统可以由集群或在集群外管理,因此如果您想要简化集群管理,您可以选择配置在集群外管理的共享文件系统,如 4.5.2 部分中所述。
9.2.安装
对于每个 ASCS/ERS 对,请重复上面第 4.6、4.7 和 4.8 部分中记录的所有步骤。
每个 ASCS/ERS 对将根据配置规则独立进行故障转移。
Comments