Translated message

A translation of this page exists in English.

在 Pacemaker 中配置带有 Standalone Enqueue Server 2 (ENSA2)的 SAP S/4HANA ASCS/ERS

已更新 -

备注:本文档的更新版本作为 RHEL 8 的 产品文档 提供。
本文档的更新版本作为 RHEL 9 的 产品文档 提供。

内容

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 个不同的组件组成:

本文重点介绍了 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 将故障转移到备用节点,如下所示。

EFS 创建

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

EFS 创建

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 的建议进行了配置

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 选项。

ASCS 安装

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 选项。

ERS 安装

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 代理的信息在 集群平台和架构 中提供。

本指南假定以下事项工作正常:

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_grouprh2_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 资源组中配置 LVMFilesystem 集群资源

首先添加 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 资源组中配置 LVMFilesystem 集群资源

首先添加 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=Optionalsymmetrical=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.仲裁策略

仲裁 的选项因配置而异。请查看配置指南。

注:以下是向之前配置的双节点集群添加第三个节点的示例,假设仲裁策略将被正确配置。

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.64.74.8 部分中记录的所有步骤。

每个 ASCS/ERS 对将根据配置规则独立进行故障转移。

Comments