在多区域环境中的 Red Hat Enterprise Linux High Availability Add-On 集群中为 SAP S/4HANA (ASCS 和 ERS) 配置高可用性
以下信息介绍了如何在 Red Hat Enterprise Linux (RHEL) High Availability Add-On 集群中配置 ABAP SAP Central Services (ASCS) 和 Enqueue Replication Server (ERS )。 群集在 IBM® Power® Virtual Server.
本配置示例适用于第二代 独立 Enqueue 服务器,也称为 ENSA2.
自 SAP S/4HANA 1809 起,默认安装 ENSA2,支持双节点和多节点集群配置。 本示例演示了使用 ENSA2 设置双节点 RHEL HA Add-On 群集。 如果 ASCS 服务出现故障,它会自动在托管 ERS 实例的节点上重新启动。 锁项从 ERS 实例的锁表副本中恢复。 当故障节点重新激活时, ERS 实例会重新定位到另一个节点(反定位),以保持冗余并保护锁表副本。
在用于 ASCS 和 ERS 实例的双节点群集之外的虚拟服务器实例上安装 SAP 数据库实例和其他 SAP 应用服务器实例。
准备工作
查看 IBM Power Virtual Server 参考资料中为 SAP 应用程序实施高可用性 中列出的一般要求、产品文档、支持文章和 SAP 注释。
先决条件
-
该信息介绍了使用 NFS 安装实例目录存储的设置。
- ASCS实例使用挂载点
/usr/sap/<SID>/ASCS<INSTNO>
。 - ERS实例使用挂载点
/usr/sap/<SID>/ERS<INSTNO>
。 - 这两种情况都使用
/sapmnt/<SID>
挂载点,具有共享的读写权限。 - 可能需要其他共享文件系统,例如 saptrans
/usr/sap/trans
。
请确保配置了高可用性的 NFS 服务器来为这些共享提供服务。 NFS 服务器不得安装在属于集群的虚拟服务器上 ENSA2 集群的一部分。 本文档不描述设置文件存储或创建群集文件系统的步骤。
- ASCS实例使用挂载点
确保 ASCS 和 ERS 实例的虚拟主机名符合 SAP ABAP Platform 服务器的主机名中概述的要求。
- ASCS 和 ERS 实例的子网和虚拟 IP 地址不能存在于 Power Virtual Server 工作区中。 它们被配置为集群资源。 但是,您必须将 ASCS 和 ERS 实例的虚拟 IP 地址和虚拟主机名添加到域名服务 (DNS) 和所有群集节点上的
/etc/hosts
文件中。
准备节点以安装ASCS和ERS实例
以下信息介绍了如何准备节点,以便安装 SAP ASCS 和 ERS实例。
准备环境变量
为简化设置过程,请在两个群集节点上为 root
用户定义以下环境变量。 这些变量将在后续的操作系统命令中使用。
在两个节点上设置以下环境变量。 某些变量已作标记,只需为资源代理 powervs-move-ip
或资源代理 powervs-subnet
设置。
# General settings
export CLUSTERNAME="SAP_S01" # Cluster name
export NODE1=<HOSTNAME_1> # Virtual server instance 1 hostname (in Workspace_1)
export NODE2=<HOSTNAME_2> # Virtual server instance 2 hostname (in Workspace_2)
export SID=<SID> # SAP System ID (uppercase)
export sid=<sid> # SAP System ID (lowercase)
# ASCS instance
export ASCS_INSTNO=<INSTNO> # ASCS instance number
export ASCS_VH=<virtual hostname> # ASCS virtual hostname
export ASCS_IP=<IP address> # ASCS virtual IP address
# resource agent powervs-move-ip only
export ASCS_ROUTE_CRN1=<Route_CRN1> # CRN of the static route in Workspace_1 with destination ASCS_IP (powervs-move-ip only)
export ASCS_ROUTE_CRN2=<Route_CRN2> # CRN of the static route in Workspace_2 with destination ASCS_IP (powervs-move-ip only)
# resource agent powervs-subnet only
export ASCS_NET=<Subnet name> # Name for the ASCS subnet in IBM Cloud (powervs-subnet only)
export ASCS_CIDR=<CIDR of subnet> # CIDR of the ASCS subnet containing the service IP address (powervs-subnet only)
# ERS instance
export ERS_INSTNO=<INSTNO> # ERS instance number
export ERS_VH=<virtual hostname> # ERS virtual hostname
export ERS_IP=<IP address> # ERS virtual IP address
# resource agent powervs-move-ip only
export ERS_ROUTE_CRN1=<Route_CRN1> # CRN of the static route in Workspace_1 with destination ERS_IP (powervs-move-ip only)
export ERS_ROUTE_CRN2=<Route_CRN2> # CRN of the static route in Workspace_2 with destination ERS_IP (powervs-move-ip only)
# resource agent powervs-subnet only
export ERS_NET=<Subnet name> # Name for the ERS subnet in IBM Cloud (powervs-subnet only)
export ERS_CIDR=<CIDR of subnet> # CIDR of the ERS subnet containing the service IP address (powervs-subnet only)
# Other multizone region settings
export CLOUD_REGION=<CLOUD_REGION> # Multizone region name
export APIKEY="APIKEY or path to file" # API key of the ServiceID for the resource agent
export API_TYPE="private or public" # Use private or public API endpoints
# resource agent powervs-move-ip only
export MON_API="false or true" # Use cloud api in monitor command (powervs-move-ip only)
# resource agent powervs-subnet only
export IBMCLOUD_CRN_1=<IBMCLOUD_CRN_1> # Workspace 1 CRN (powervs-subnet only)
export IBMCLOUD_CRN_2=<IBMCLOUD_CRN_2> # Workspace 2 CRN (powervs-subnet only)
export POWERVSI_1=<POWERVSI_1> # Virtual server 1 instance id (powervs-subnet only)
export POWERVSI_2=<POWERVSI_2> # Virtual server 2 instance id (powervs-subnet only)
export JUMBO="true or false" # Enable Jumbo frames (powervs-subnet only)
# NFS settings
export NFS_SERVER="NFS server" # Hostname or IP address of the highly available NFS server
export NFS_SHARE="NFS server directory" # Exported file system directory on the NFS server
export NFS_OPTIONS="rw,sec=sys" # Sample NFS client mount options
以下导出命令举例说明了在使用资源代理 powervs-move-ip
时,如何设置多区区域实施所需的额外环境变量。
# General settings
export CLUSTERNAME="SAP_S01" # Cluster name
export NODE1="cl-s01-1" # Virtual service instance 1 hostname
export NODE2="cl-s01-2" # Virtual server instance 2 hostname
export SID="S01" # SAP System ID (uppercase)
export sid="s01" # SAP System ID (lowercase)
# ASCS instance
export ASCS_INSTNO="21" # ASCS instance number
export ASCS_VH="s01ascs" # ASCS virtual hostname
export ASCS_IP="10.40.21.102" # ASCS virtual IP address
export ASCS_ROUTE_CRN1="crn:v1:bluemix:public:power-iaas:eu-de-2:a/a1b2c3d4e5f60123456789a1b2c3d4e5:a1b2c3d4-0123-4567-89ab-a1b2c3d4e5f6:route:a1b2c3d4-1234-5678-9abc-a1b2c3"
export ASCS_ROUTE_CRN2="crn:v1:bluemix:public:power-iaas:eu-de-1:a/a1b2c3d4e5f60123456789a1b2c3d4e5:e5f6a1b2-cdef-0123-4567-a1b2c3d4e5f6:route:1a2b3c4d-cba9-8765-4321-c3b2a1"
# ERS instance
export ERS_INSTNO="22" # ERS instance number
export ERS_VH="s01ers" # ERS virtual hostname
export ERS_IP="10.40.22.102" # ERS virtual IP address
export ERS_ROUTE_CRN1="crn:v1:bluemix:public:power-iaas:eu-de-2:a/a1b2c3d4e5f60123456789a1b2c3d4e5:a1b2c3d4-0123-4567-89ab-a1b2c3d4e5f6:route:cba98765-5678-1234-9abc-a1b2c3"
export ERS_ROUTE_CRN2="crn:v1:bluemix:public:power-iaas:eu-de-1:a/a1b2c3d4e5f60123456789a1b2c3d4e5:e5f6a1b2-cdef-0123-4567-a1b2c3d4e5f6:route:9abca1b2-4321-8765-4321-b2a1c3"
# Other multizone region settings
export CLOUD_REGION="eu-de"
export APIKEY="@/root/.apikey.json"
export API_TYPE="private"
export MON_API="false"
# NFS settings
export NFS_SERVER="cl-nfs" # Hostname or IP address of the highly available NFS server
export NFS_SHARE="/sapS01" # Exported file system directory on the NFS server
export NFS_OPTIONS="rw,sec=sys" # Sample NFS client mount options
为实例文件系统创建挂载点
在两个群集节点上运行以下命令,为 SAP 实例文件系统创建所需的挂载点。
mkdir -p /usr/sap/${SID}/{ASCS${ASCS_INSTNO},ERS${ERS_INSTNO}} /sapmnt/${SID}
安装和设置 RHEL HA 附加群集
请按照 在多区区域环境中在 IBM Power Virtual Server 上实施 RHEL HA Add-On 群集中的 说明安装和配置 RHEL HA Add-On 群集。 安装完成后,按照 创建围栏设备 中的说明配置和测试群集围栏。
在 SAP 安装前准备集群资源
确保 RHEL HA Add-On 群集在两个虚拟服务器实例上都处于活动状态,并验证节点围栏是否按预期运行。
配置一般群集属性
为防止群集重新定位健康资源(例如,当先前发生故障的节点重新启动时),请设置以下默认元属性。
resource-stickiness=1
:确保资源保留在当前节点上。migration-threshold=3
:限制移动资源前的失败次数。
在 NODE1 上,运行以下命令。
pcs resource defaults update resource-stickiness=1
pcs resource defaults update migration-threshold=3
准备在 NODE1
在 NODE1 上,运行以下命令创建一个文件系统集群资源,用于挂载 ASCS实例目录。
pcs resource create ${sid}_fs_ascs${ASCS_INSTNO} Filesystem \
device="${NFS_SERVER}:${NFS_SHARE}/ASCS" \
directory=/usr/sap/${SID}/ASCS${ASCS_INSTNO} \
fstype=nfs \
options="${NFS_OPTIONS}" \
force_unmount=safe \
op start interval=0 timeout=60 \
op stop interval=0 timeout=120 \
--group ${sid}_ascs${ASCS_INSTNO}_group
确定 多区域环境中 SAP HANA 高可用性解决方案中虚拟 IP 集群资源的资源管理器 - 网络注意 事项部分。
确保完成了“为虚拟 IP 地址资源准备多区 RHEL HA Add-On 群集”部分中的所有步骤。
使用 pcs resource describe powervs-move-ip
命令获取有关 powervs-move-ip
资源代理参数的信息。 使用 pcs resource describe powervs-subnet
命令获取有关 powervs-subnet
资源代理参数的信息。
如果使用 powervs-move-ip
资源代理,请在 NODE1 上运行以下命令,为 ASCS 虚拟 IP 地址创建群集资源。
pcs resource create ${sid}_vip_ascs${ASCS_INSTNO} powervs-move-ip \
api_key=${APIKEY} \
api_type=${API_TYPE} \
ip=${ASCS_IP} \
route_host_map="${NODE1}:${ASCS_ROUTE_CRN1};${NODE2}:${ASCS_ROUTE_CRN2}" \
region=${CLOUD_REGION} \
monitor_api=${MON_API}
op start timeout=60 \
op stop timeout=60 \
op monitor interval=60 timeout=60 \
--group ${sid}_ascs${ASCS_INSTNO}_group
否则,请在 NODE1 上运行以下命令,为 ASCS 虚拟 IP 地址创建 powervs-subnet
群集资源。
pcs resource create ${sid}_vip_ascs${ASCS_INSTNO} powervs-subnet \
api_key=${APIKEY} \
api_type=${API_TYPE} \
cidr=${ASCS_CIDR} \
ip=${ASCS_IP} \
crn_host_map="${NODE1}:${IBMCLOUD_CRN_1};${NODE2}:${IBMCLOUD_CRN_2}" \
vsi_host_map="${NODE1}:${POWERVSI_1};${NODE2}:${POWERVSI_2}" \
jumbo=${JUMBO} \
region=${CLOUD_REGION} \
subnet_name=${ASCS_NET} \
route_table=5${ASCS_INSTNO} \
op start timeout=720 \
op stop timeout=300 \
op monitor interval=60 timeout=30 \
--group ${sid}_ascs${ASCS_INSTNO}_group
准备在 NODE2
在 NODE1 上,运行以下命令创建文件系统集群资源,以挂载 ERS实例目录。
pcs resource create ${sid}_fs_ers${ERS_INSTNO} Filesystem \
device="${NFS_SERVER}:${NFS_SHARE}/ERS" \
directory=/usr/sap/${SID}/ERS${ERS_INSTNO} \
fstype=nfs \
options="${NFS_OPTIONS}" \
force_unmount=safe \
op start interval=0 timeout=60 \
op stop interval=0 timeout=120 \
--group ${sid}_ers${ERS_INSTNO}_group
如果使用 powervs-move-ip
资源代理,请在 NODE1 上运行以下命令,为 ERS 虚拟 IP 地址创建群集资源。
pcs resource create ${sid}_vip_ers${ERS_INSTNO} powervs-move-ip \
api_key=${APIKEY} \
api_type=${API_TYPE} \
ip=${ERS_IP} \
route_host_map="${NODE1}:${ERS_ROUTE_CRN1};${NODE2}:${ERS_ROUTE_CRN2}" \
region=${CLOUD_REGION} \
monitor_api=${MON_API}
op start timeout=60 \
op stop timeout=60 \
op monitor interval=60 timeout=60 \
--group ${sid}_ers${ERS_INSTNO}_group
否则,在 NODE1 上运行以下命令,为 ERS 虚拟 IP 地址创建 powervs-subnet
群集资源。
pcs resource create ${sid}_vip_ers${ERS_INSTNO} powervs-subnet \
api_key=${APIKEY} \
api_type=${API_TYPE} \
cidr=${ERS_CIDR} \
ip=${ERS_IP} \
crn_host_map="${NODE1}:${IBMCLOUD_CRN_1};${NODE2}:${IBMCLOUD_CRN_2}" \
vsi_host_map="${NODE1}:${POWERVSI_1};${NODE2}:${POWERVSI_2}" \
jumbo=${JUMBO} \
region=${CLOUD_REGION} \
subnet_name=${ERS_NET} \
route_table=5${ERS_INSTNO} \
op start timeout=720 \
op stop timeout=300 \
op monitor interval=60 timeout=30 \
--group ${sid}_ers${ERS_INSTNO}_group
在运行 pcs resource config
命令之前,确保群集中的两个虚拟服务器实例都有状态 Active
和健康状态 OK
。
验证集群配置
在 NODE1 上,运行以下命令验证当前群集配置,确保所有资源都已正确定义并处于活动状态。
pcs status --full
样本输出:
# pcs status --full
Cluster name: SAP_S01
Status of pacemakerd: 'Pacemaker is running' (last updated 2024-11-20 14:04:05 +01:00)
Cluster Summary:
* Stack: corosync
* Current DC: cl-s01-2 (2) (version 2.1.5-9.el9_2.4-a3f44794f94) - partition with quorum
* Last updated: Wed Nov 20 14:04:06 2024
* Last change: Wed Nov 20 13:51:19 2024 by hacluster via crmd on cl-s01-2
* 2 nodes configured
* 8 resource instances configured
Node List:
* Node cl-s01-1 (1): online, feature set 3.16.2
* Node cl-s01-2 (2): online, feature set 3.16.2
Full List of Resources:
* fence_node1 (stonith:fence_ibm_powervs): Started cl-s01-2
* fence_node2 (stonith:fence_ibm_powervs): Started cl-s01-2
* Clone Set: fs_sapmnt-clone [fs_sapmnt]:
* fs_sapmnt (ocf:heartbeat:Filesystem): Started cl-s01-1
* fs_sapmnt (ocf:heartbeat:Filesystem): Started cl-s01-2
* Resource Group: s01_ascs21_group:
* s01_fs_ascs21 (ocf:heartbeat:Filesystem): Started cl-s01-1
* s01_vip_ascs21 (ocf:heartbeat:powervs-subnet): Started cl-s01-1
* Resource Group: s01_ers22_group:
* s01_fs_ers22 (ocf:heartbeat:Filesystem): Started cl-s01-1
* s01_vip_ers22 (ocf:heartbeat:powervs-subnet): Started cl-s01-1
Migration Summary:
Tickets:
PCSD Status:
cl-s01-1: Online
cl-s01-2: Online
Daemon Status:
corosync: active/disabled
pacemaker: active/disabled
pcsd: active/enabled
确保 ${sid}_ascs${ASCS_INSTNO}_group
群集资源组在 NODE1 上运行,${sid}_ers${ERS_INSTNO}_group
群集资源组在 NODE2 上运行。 如果需要,使用 pcs resource move <resource_group_name>
命令将资源组重新定位到适当的节点。
更改ASCS和ERS挂载点的所有权
sidadm 用户必须拥有 ASCS 和 ERS 实例文件系统的挂载点。 在开始安装实例之前,创建所需的用户和组,并设置挂载点所有权。
在两个节点上按照以下步骤配置正确的所有权。
-
启动 SAP Software Provisioning Manager (SWPM) 创建操作系统用户和组。
<swpm>/sapinst
在 SWPM 网络界面中,转到系统重命名 > 准备工作 > 操作系统用户和组。 记录用户和组 IDss,并验证它们在两个节点上是否相同。
-
更改挂载点所有权。
chown -R ${sid}adm:sapsys /sapmnt/${SID} /usr/sap/${SID}
安装ASCS和ERS实例
使用SWPM安装两个实例。
-
在集群节点上安装 ASCS 和 ERS 实例。
- 在 NODE1 上,使用与 ASCS 虚拟 IP 地址关联的虚拟主机名
${ASCS_VH}
安装 ASCS 实例。
<swpm>/sapinst SAPINST_USE_HOSTNAME=${ASCS_VH}
- 在 NODE2 上,使用与 ERS 虚拟 IP 地址关联的虚拟主机名
${ERS_VH}
安装 ERS 实例。
<swpm>/sapinst SAPINST_USE_HOSTNAME=${ERS_VH}
- 在 NODE1 上,使用与 ASCS 虚拟 IP 地址关联的虚拟主机名
-
在群集环境之外安装所有其他 SAP 应用程序实例。
准备ASCS和ERS实例,用于集群集成
使用以下步骤为集群集成准备 SAP 实例。
禁用自动启动 ASCS 和 ERS 的 SAP 实例代理
禁止在系统重启后自动启动 ASCS 和 ERS 实例的 sapstartsrv
实例代理。
验证 SAP 实例代理集成类型
SAP 实例代理的最新版本 sapstartsrv
在 Linux 上提供本机 systemd
支持。 欲了解更多信息,请参阅 SAP Notes 列出的 SAP 注释。
在两个节点上,检查 /usr/sap/sapservices
文件的内容。
cat /usr/sap/sapservices
在 systemd
格式中,条目以 systemctl
命令开头。
示例:
systemctl --no-ask-password start SAPS01_01 # sapstartsrv pf=/usr/sap/S01/SYS/profile/S01_ASCS01_cl-sap-scs
如果 ASCS 和 ERS 条目使用 systemd
格式,请继续执行 注册 ASCS 和 ERS 实例 中的步骤。 在 classic
格式中,条目以 LD_LIBRARY_PATH
定义开始。
示例:
LD_LIBRARY_PATH=/usr/sap/S01/ASCS01/exe:$LD_LIBRARY_PATH;export LD_LIBRARY_PATH;/usr/sap/S01/ASCS01/exe/sapstartsrv pf=/usr/sap/S01/SYS/profile/S01_ASCS01_cl-sap-scs -D -u s01adm
如果 ASCS 和 ERS 的条目采用 classic
格式,请修改 /usr/sap/sapservices
文件,以防止在系统重启后自动启动 ASCS 和 ERS 实例的 sapstartsrv
实例代理。
在两个节点上,删除或注释 SAP 服务文件中 ASCS 和 ERS 的 sapstartsrv
条目。
sed -i -e 's/^LD_LIBRARY_PATH=/#LD_LIBRARY_PATH=/' /usr/sap/sapservices
示例:
#LD_LIBRARY_PATH=/usr/sap/S01/ASCS01/exe:$LD_LIBRARY_PATH;export LD_LIBRARY_PATH;/usr/sap/S01/ASCS01/exe/sapstartsrv pf=/usr/sap/S01/SYS/profile/S01_ASCS01_cl-sap-scs -D -u s01adm
继续 安装永久 SAP 许可证密钥。
注册 ASCS 和 ERS 实例
在两个节点上注册 SAP 实例。
-
以
root
用户身份登录两个节点。 -
设置
LD_LIBRARY_PATH
环境变量,使其包含 ASCS 实例可执行目录,并注册 ASCS 实例。export LD_LIBRARY_PATH=/usr/sap/${SID}/ASCS${ASCS_INSTNO}/exe && \ /usr/sap/${SID}/ASCS${ASCS_INSTNO}/exe/sapstartsrv \ pf=/usr/sap/${SID}/SYS/profile/${SID}_ASCS${ASCS_INSTNO}_${ASCS_VH} -reg
-
使用 ERS 配置文件对 ERS 实例重复注册步骤。
export LD_LIBRARY_PATH=/usr/sap/${SID}/ERS${ERS_INSTNO}/exe && \ /usr/sap/${SID}/ERS${ERS_INSTNO}/exe/sapstartsrv \ pf=/usr/sap/${SID}/SYS/profile/${SID}_ERS${ERS_INSTNO}_${ERS_VH} -reg
禁用 ASCS 和 ERS 实例的 systemd 服务
在两个节点上,禁用 ASCS 实例代理的 systemd 服务。
systemctl disable --now SAP${SID}_${ASCS_INSTNO}.service
然后,禁用 ERS 实例代理的 systemd 服务。
systemctl disable --now SAP${SID}_${ERS_INSTNO}.service
禁用 systemd
重启崩溃的 ASCS 或 ERS 实例
Systemd
包括重新启动崩溃服务的内置机制。 在高可用性设置中,只有 HA 群集应管理 SAP ASCS 和 ERS 实例。 为防止 systemd
自动重启这些实例,请在两个群集节点上创建插入式配置文件。
在两个节点上,创建投放文件的目录。
mkdir /etc/systemd/system/SAP${SID}_${ASCS_INSTNO}.service.d
mkdir /etc/systemd/system/SAP${SID}_${ERS_INSTNO}.service.d
在两个节点上为 ASCS 和 ERS 创建插入文件。
cat >> /etc/systemd/system/SAP${SID}_${ASCS_INSTNO}.service.d/HA.conf << EOT
[Service]
Restart=no
EOT
cat >> /etc/systemd/system/SAP${SID}_${ERS_INSTNO}.service.d/HA.conf << EOT
[Service]
Restart=no
EOT
Restart=no
必须位于 部分,且所有群集节点上都必须有投放文件。[Service]
在两个节点上重新加载 systemd
单元文件。
systemctl daemon-reload
安装永久 SAP 许可证密钥
当 SAP ASCS 实例在 Power Virtual Server 实例上运行时,SAP 许可证机制会使用分区 UUID 生成硬件密钥。 详情请参阅 SAP note 2879336 - 基于唯一 ID 的硬件密钥。
在两个节点上,以 sidadm 用户身份运行以下命令,以获取硬件密钥。
sudo -i -u ${sid}adm -- sh -c 'saplikey -get'
样本输出:
$ sudo -i -u ${sid}adm -- sh -c 'saplikey -get'
saplikey: HARDWARE KEY = H1428224519
记录每个节点的 HARDWARE KEY
。
您需要两个节点的硬件密钥,才能分别申请 SAP 许可证密钥。 有关申请故障转移系统许可证密钥的指导,请参阅以下 SAP Notes:
安装 SAP 资源代理
安装所需的软件包。
resource-agents-sap
软件包提供 SAPInstance 集群资源代理,用于管理 SAP 实例。
如果 sap_cluster_connector
没有为 SAP 实例配置,RHEL HA Add-On 群集会将任何状态变化视为潜在问题。 当外部 SAP 工具(如 sapcontrol
)用于管理实例时,sap_cluster_connector
可与群集内运行的 SAP 实例进行安全交互。 如果 SAP 实例完全由群集工具管理,则不需要 sap_cluster_connector
。
安装群集资源代理和 SAP Cluster Connector 库的软件包。 有关详情,请参阅 如何为 SAP ABAP 应用程序服务器实例启用 SAP HA 接口,该实例由 RHEL HA Add-On 管理
在两个节点上运行以下命令。
如有必要,使用 subscription-manager
启用 SAP NetWeaver 资源库。 有关说明,请参阅 RHEL for SAP Subscriptions and Repositories 文档。
subscription-manager repos --enable="rhel-8-for-ppc64le-sap-netweaver-e4s-rpms"
安装必需的软件包。
dnf install -y resource-agents-sap sap-cluster-connector
配置 SAP 群集连接器
将 sidadm 用户添加到两个节点上的 haclient
组。
usermod -a -G haclient ${sid}adm
调整 SAP 实例配置文件
修改由集群外的 SAP 工具管理的 SAP 实例的启动配置文件。 RHEL HA Add-On 群集及其资源代理可以控制 ASCS 和 ERS 实例。 要防止自动重启实例进程,请相应调整 SAP 实例配置文件。
在 NODE1 上,更改到 SAP 配置文件目录。
cd /sapmnt/${SID}/profile
用 Start_Program
替换 ASCS 和 ERS 实例配置文件中的所有 Restart_Program
条目。
sed -i -e 's/Restart_Program_\([0-9][0-9]\)/Start_Program_\1/' ${SID}_ASCS${ASCS_INSTNO}_${ASCS_VH}
sed -i -e 's/Restart_Program_\([0-9][0-9]\)/Start_Program_\1/' ${SID}_ERS${ERS_INSTNO}_${ERS_VH}
在 ASCS 和 ERS 实例配置文件末尾添加以下行,以启用 sap_cluster_connector
整合:
service/halib = $(DIR_EXECUTABLE)/saphascriptco.so
service/halib_cluster_connector = /usr/bin/sap_cluster_connector
配置ASCS和ERS集群资源
到目前为止,我们假设:
- 在两个虚拟服务器实例上运行 RHEL HA 附加集群,并测试节点围栏。
- 已配置克隆的文件系统集群资源,用于挂载 sapmnt共享。
- 两个文件系统集群资源被配置为挂载 ASCS 和 ERS 实例文件系统。
- 为 ASCS 和 ERS 实例的虚拟 IP 地址配置两个 powervs-subnet 集群资源。
- ASCS实例已安装并激活,地址为 NODE1。
- ERS实例已安装并激活,地址为 NODE2。
- 为群集集成准备 ASCS 和 ERS 实例 中描述的所有步骤均已完成。
配置ASCS集群资源组
在 NODE1 上,运行以下命令创建管理 ASCS 实例的群集资源。
pcs resource create ${sid}_ascs${ASCS_INSTNO} SAPInstance \
InstanceName="${SID}_ASCS${ASCS_INSTNO}_${ASCS_VH}" \
START_PROFILE=/sapmnt/${SID}/profile/${SID}_ASCS${ASCS_INSTNO}_${ASCS_VH} \
AUTOMATIC_RECOVER=false \
meta resource-stickiness=5000 \
migration-threshold=1 failure-timeout=60 \
op monitor interval=20 on-fail=restart timeout=60 \
op start interval=0 timeout=600 \
op stop interval=0 timeout=600 \
--group ${sid}_ascs${ASCS_INSTNO}_group
meta resource-stickiness=5000
选项可平衡 ERS 实例的故障切换行为。 该选项可确保资源保留在原节点上,不会在群集内意外迁移。
为确保 ASCS 实例保持在指定节点上,请为组添加资源粘性。
pcs resource meta ${sid}_ascs${ASCS_INSTNO}_group \
resource-stickiness=3000
配置ERS集群资源组
在 NODE2 上,运行以下命令创建管理 ERS 实例的群集资源。
pcs resource create ${sid}_ers${ERS_INSTNO} SAPInstance \
InstanceName="${SID}_ERS${ERS_INSTNO}_${ERS_VH}" \
START_PROFILE=/sapmnt/${SID}/profile/${SID}_ERS${ERS_INSTNO}_${ERS_VH} \
AUTOMATIC_RECOVER=false \
IS_ERS=true \
op monitor interval=20 on-fail=restart timeout=60 \
op start interval=0 timeout=600 \
op stop interval=0 timeout=600 \
--group ${sid}_ers${ERS_INSTNO}_group
配置集群约束
在 NODE1 上,运行以下命令配置群集约束。
如果至少有两个节点可用,则主机托管约束可确保资源组 ${sid}_ascs${ASCS_INSTNO}_group
和 ${sid}_ers${ERS_INSTNO}_group
不在同一节点上运行。 如果只有一个节点可用,
-5000
的粘性值允许两个组在同一节点上运行。
pcs constraint colocation add \
${sid}_ers${ERS_INSTNO}_group with ${sid}_ascs${ASCS_INSTNO}_group -- -5000
顺序约束确保 ${sid}_ascs${ASCS_INSTNO}_group
在 ${sid}_ers${ERS_INSTNO}_group
之前开始。
pcs constraint order start \
${sid}_ascs${ASCS_INSTNO}_group then stop ${sid}_ers${ERS_INSTNO}_group \
symmetrical=false \
kind=Optional
以下两个顺序约束确保 SAPMNT 文件系统在 ${sid}_ascs${ASCS_INSTNO}_group
和 ${sid}_ers${ERS_INSTNO}_group
启动之前挂载。
pcs constraint order fs_sapmnt-clone then ${sid}_ascs${ASCS_INSTNO}_group
pcs constraint order fs_sapmnt-clone then ${sid}_ers${ERS_INSTNO}_group
结论
多区环境中的 ENSA2 多区环境中的群集实施工作现已完成。
现在,运行与 测试 SAP ENSA2 集群中 所述测试类似的测试来验证集群。
下面显示的是 pcs status
命令在多区区域部署中已完成的群集的输出示例。ENSA2 集群的输出示例。
Cluster name: SAP_S01
Status of pacemakerd: 'Pacemaker is running' (last updated 2024-11-22 09:42:15 +01:00)
Cluster Summary:
* Stack: corosync
* Current DC: cl-s01-1 (version 2.1.5-9.el9_2.4-a3f44794f94) - partition with quorum
* Last updated: Fri Nov 22 09:42:15 2024
* Last change: Fri Nov 22 09:06:18 2024 by root via cibadmin on cl-s01-1
* 2 nodes configured
* 10 resource instances configured
Node List:
* Online: [ cl-s01-1 cl-s01-2 ]
Full List of Resources:
* fence_node1 (stonith:fence_ibm_powervs): Started cl-s01-1
* fence_node2 (stonith:fence_ibm_powervs): Started cl-s01-2
* Clone Set: fs_sapmnt-clone [fs_sapmnt]:
* Started: [ cl-s01-1 cl-s01-2 ]
* Resource Group: s01_ascs21_group:
* s01_fs_ascs21 (ocf:heartbeat:Filesystem): Started cl-s01-1
* s01_vip_ascs21 (ocf:heartbeat:powervs-subnet): Started cl-s01-1
* s01_ascs21 (ocf:heartbeat:SAPInstance): Started cl-s01-1
* Resource Group: s01_ers22_group:
* s01_fs_ers22 (ocf:heartbeat:Filesystem): Started cl-s01-2
* s01_vip_ers22 (ocf:heartbeat:powervs-subnet): Started cl-s01-2
* s01_ers22 (ocf:heartbeat:SAPInstance): Started cl-s01-2
Daemon Status:
corosync: active/disabled
pacemaker: active/disabled
pcsd: active/enabled