IBM Cloud Docs
在多区域环境中实施 Red Hat Enterprise Linux High Availability Add-On 集群

在多区域环境中实施 Red Hat Enterprise Linux High Availability Add-On 集群

使用以下信息和程序在多区环境中实施 Red Hat Enterprise Linux (RHEL) 高可用性附加集群。 该集群使用 IBM® Power® Virtual Server 作为集群节点。 虚拟服务器实例在多区域区域的不同区域运行。 该设置使用 powervs-subnet 集群资源代理来管理多区域实施中应用程序的服务IP地址。 资源代理仅支持在同一多区域区域中使用不同的区域。 不支持跨区域部署。 有关多区域和可用位置的更多信息,请参阅 多区域(MZR)IBM Cloud 区域

该信息描述了如何将单个虚拟服务器实例转换为集群。

这些步骤包括在每个集群节点上安装高可用性软件包和代理,以及配置防护设备。

本信息面向计划在 Power Virtual Server 上部署高可用性 SAP 应用程序的建筑师和专家。 本文无意取代现有的 SAP 或 Red Hat 文档。

准备工作

查看 IBM Power Virtual Server 参考资料中为 SAP 应用程序实施高可用性 中列出的一般要求、产品文档、支持文章和 SAP 注释。

为集群创建虚拟服务器实例

使用 为高可用性群集创建实例 中的说明,创建要用作群集节点的虚拟服务器实例。

在多区域区域的两个区域中创建两个工作区。 创建一个 Transit Gateway 并将两个工作区添加到连接中。 创建两个虚拟服务器实例,每个工作区一个。

准备节点以安装RHEL HA附加组件

以下部分介绍了集群节点上的基本准备步骤。 请确保您按照两个节点上的步骤操作。

以root用户身份登录每个集群节点。

在主机文件中添加群集节点条目

在两个节点上,将两个节点的IP地址和主机名添加到 /etc/hosts 文件中。

更多信息,请参阅 在RHEL集群节点上设置 /etc/hosts 文件

准备环境变量

为了简化设置过程,请为根用户准备一些环境变量。 这些环境变量与本信息中后续的操作系统命令一起使用。

在两个节点上,设置以下环境变量。

# General settings
export CLUSTERNAME="SAP_CLUSTER"         # Cluster name

export APIKEY=<APIKEY>                   # API Key of the IBM Cloud IAM ServiceID for the fencing agent
export CLOUD_REGION=<CLOUD_REGION>       # Multizone region name
export PROXY_IP=<IP_ADDRESS>             # IP address of proxy server

# Workspace 1
export IBMCLOUD_CRN_1=<IBMCLOUD_CRN_1>   # Workspace CRN
export GUID_1=<GUID_1>                   # Workspace GUID

# Workspace 2
export IBMCLOUD_CRN_2=<IBMCLOUD_CRN_2>   # Workspace CRN
export GUID_2=<GUID_2>                   # Workspace GUID

# Virtual server instance 1
export NODE1=<HOSTNAME_1>                # Virtual server instance hostname
export POWERVSI_1=<POWERVSI_1>           # Virtual server instance id

# Virtual server instance 2
export NODE2=<HOSTNAME_2>                # Virtual server instance
export POWERVSI_2=<POWERVSI_2>           # Virtual server instance id

要查找 APIKEYIBMCLOUD_CRN_?GUID_?POWERVSI_? 变量的设置,请按照 收集配置高可用性群集的参数 中的步骤操作。

安装和配置 RHEL HA 附加群集

请按照以下步骤为 IBM Power Virtual Server 设置双节点集群。

这些说明基于 Red Hat 产品文档和 IBM Power Virtual Server 参考资料中为 SAP 应用程序实现高可用性所 列出的文章。

您需要在两个节点上完成一些步骤,并在 NODE1 或 NODE2 上完成一些步骤。

安装 RHEL HA 附加软件

安装所需的软件包。 使用 powervs-subnet资源代理所需的最低操作系统版本是RHEL 9.2。

操作系统上必须安装 @server组。 此安装是 SAP 应用程序的标准要求。

检查 RHEL HA 存储库

使用以下命令检查两个节点上是否启用了相应的存储库。

dnf repolist

如果缺少 HA 存储库,请使用以下命令启用它。

subscription-manager repos \
    --enable="rhel-9-for-ppc64le-highavailability-e4s-rpms"
dnf clean all
dnf repolist

安装 RHEL HA 附加软件包

通过运行以下命令在两个节点上安装所需的软件包。

dnf install -y pcs pacemaker fence-agents-ibm-powervs

请确保根据您的 Red Hat Enterprise Linux 版本安装 fence-agents-ibm-powervs软件包的最小版本:

RHEL 9
fence-agents-ibm-powervs-4.10.0-43.el9

配置 RHEL HA 附加群集

请按照以下步骤配置 RHEL HA 附加集群。

配置防火墙服务

如果已安装并启用RHEL防火墙,请为其添加高可用性服务 firewalld.service 已安装并启用。

在两个节点上运行以下命令。

firewall-cmd --permanent --add-service=high-availability
firewall-cmd --reload

启动PCS守护进程

启动PCS守护进程,该进程用于通过PCS控制和配置RHEL HA附加集群。

在两个节点上运行以下命令。

systemctl enable --now pcsd.service

确保 PCS 服务正在运行。

systemctl status pcsd.service

为 Hacluster 用户 ID 设置密码

为 Hacluster 用户 ID 设置密码。

在两个节点上运行以下命令。

passwd hacluster

验证集群节点

使用以下命令对群集节点上的 PCS 守护进程进行用户 hacluster 身份验证。 命令提示您输入在上一步中设置的密码。

在 NODE1 上,运行以下命令。

pcs host auth ${NODE1} ${NODE2} -u hacluster

配置并启动集群节点

配置集群配置文件,并将配置同步到指定的节点。

--start 选项还可以启动节点的集群服务。

在 NODE1 上,运行以下命令。

pcs cluster setup ${CLUSTERNAME} --start ${NODE1} ${NODE2}
pcs status

创建围栏设备

STONITH是“Shoot The Other Node In The Head”的首字母缩写,可在系统崩溃时保护您的数据免遭损坏。

必须为 RHEL HA 附加生产集群启用 STONITH(围栏)。

Fence agent fence_ibm_powervs 是 Power Virtual Server 集群上唯一受支持的 STONITH 设备代理。

您必须在多区域区域中的两个工作区分别配置一个屏蔽设备。 围栏代理使用公共的 APIKEYCLOUD_REGION 参数连接到 Power Cloud API。 参数 IBMCLOUD_CRN_<n>GUID_<n> 和实例ID POWERVSI_<n> 是工作区专用的。 您可以使用在 为配置高可用性群集收集参数 一节中收集的参数来测试代理调用。

识别虚拟服务器实例以进行围栏

使用 fence_ibm_powervs 的列表选项来识别和/或验证两个集群节点的实例ID。

在任意节点上运行以下命令

fence_ibm_powervs \
    --token=${APIKEY} \
    --crn=${IBMCLOUD_CRN_1} \
    --instance=${GUID_1} \
    --region=${CLOUD_REGION} \
    --api-type=public \
    -o list
fence_ibm_powervs \
    --token=${APIKEY} \
    --crn=${IBMCLOUD_CRN_2} \
    --instance=${GUID_2} \
    --region=${CLOUD_REGION} \
    --api-type=public \
    -o list

如果虚拟服务器实例只能访问专用网络,则必须使用 --api-type=private 选项,该选项还需要一个额外的 --proxy 选项。

示例:

fence_ibm_powervs \
    --token=${APIKEY} \
    --crn=${IBMCLOUD_CRN_1} \
    --instance=${GUID_1} \
    --region=${CLOUD_REGION} \
    --api-type=private \
    --proxy=http://${PROXY_IP}:3128 \
    -o list

以下示例使用了 --api-type=private 选项。

检查两个虚拟服务器实例的状态

在两个节点上运行以下命令。

time fence_ibm_powervs \
    --token=${APIKEY} \
    --crn=${IBMCLOUD_CRN_1} \
    --instance=${GUID_1} \
    --region=${CLOUD_REGION} \
    --plug=${POWERVSI_1} \
    --api-type=private \
    --proxy=http://${PROXY_IP}:3128 \
    -o status
time fence_ibm_powervs \
    --token=${APIKEY} \
    --crn=${IBMCLOUD_CRN_2} \
    --instance=${GUID_2} \
    --region=${CLOUD_REGION} \
    --plug=${POWERVSI_2} \
    --api-type=private \
    --proxy=http://${PROXY_IP}:3128 \
    -o status

status 防火墙代理对虚拟服务器实例 --plug=<POWERVSI_n> 采取的行动显示了其电源状态。

在两个节点上,这两个命令必须报告 Status: ON

当您为STONITH设备选择超时时,time 命令的输出可能会在以后有用。

您可以添加 -v 标志以获得详细输出,其中包含有关连接Power Cloud API和查询虚拟服务器电源状态的更多信息。

创建石器时代设备

以下命令显示了fence_ibm_powervs fencing代理的特定于设备的选项。

pcs stonith describe fence_ibm_powervs

为两个虚拟服务器实例创建stonith设备。

在 NODE1 上,运行以下命令。

pcs stonith create fence_node1 fence_ibm_powervs \
    token=${APIKEY} \
    crn=${IBMCLOUD_CRN_1} \
    instance=${GUID_1} \
    region=${CLOUD_REGION} \
    api_type=private \
    proxy=http://${PROXY_IP}:3128 \
    pcmk_host_map="${NODE1}:${POWERVSI_1}" \
    pcmk_reboot_timeout=600 \
    pcmk_monitor_timeout=600 \
    pcmk_status_timeout=60
pcs stonith create fence_node2 fence_ibm_powervs \
    token=${APIKEY} \
    crn=${IBMCLOUD_CRN_2} \
    instance=${GUID_2} \
    region=${CLOUD_REGION} \
    api_type=private \
    proxy=http://${PROXY_IP}:3128 \
    pcmk_host_map="${NODE2}:${POWERVSI_2}" \
    pcmk_reboot_timeout=600 \
    pcmk_monitor_timeout=600 \
    pcmk_status_timeout=60

虽然 fence_ibm_powervs 代理在从命令行启动时使用 api-type 作为选项,但stonith资源需要使用 api_type 创建。

使用以下命令验证配置。

pcs config
pcs status
pcs stonith config
pcs stonith status

设置石质行动集群属性

为了使电源与子网资源代理正常工作,必须将stonith-action 集群属性设置为off。 当集群执行保护操作时,它会触发 关闭操作,而不是重启被保护的实例。

更改后,您始终需要登录到 IBM Cloud 控制台,并手动启动被集群围起来的实例。

pcs property set stonith-action=off

验证更改。

pcs config

测试围栏操作

为了测试STONITH配置,手动对节点进行围栏。

在 NODE1 上,运行以下命令。

pcs stonith fence ${NODE2}
pcs status

因此,NODE2 停止。

激活 NODE2,然后在节点上启动集群,并尝试屏蔽 NODE1。

在 NODE2 上,运行以下命令。

pcs cluster start
pcs status
pcs stonith status
pcs stonith fence ${NODE1}

NODE1 停止。

激活 NODE2,然后在节点上启动集群。

在 NODE1 上,运行以下命令。

pcs cluster start
pcs status
pcs stonith status

服务器启动时,禁用集群服务的自动启动

虚拟服务器实例重启后,需要一段时间才能使其状态变为“活动”,健康状态变为“正常”。 电源与子网资源代理需要这些状态才能正常运行。 因此,您必须禁用仪表板自动启动功能,并在实例达到所需状态后手动启动仪表板。

在任何节点上,在启动时禁用群集服务的自动启动。

pcs cluster disable --all

当您重启实例时,请在 IBM Cloud 控制台中检查实例状态,并等待状态栏显示 “活动” 并带有绿色对勾。 然后,使用以下命令手动启动集群。

pcs cluster start

为虚拟IP地址资源准备多区域RHEL HA附加集群

请按照以下步骤为虚拟 IP 地址资源准备多区域 RHEL HA 附加群集。

验证操作系统要求

请确认 NetworkManager-config-server 软件包已安装。

在两个节点上运行以下命令。

dnf list NetworkManager-config-server

样本输出:

# dnf list NetworkManager-config-server
Installed Packages
NetworkManager-config-server.noarch                                    1:1.42.2-16.el9_2                                     @rhel-9-for-ppc64le-baseos-e4s-rpms

请确保将 NetworkManager no-auto-default 配置变量设置为 *

NetworkManager --print-config | grep "no-auto-default="

样本输出:

# NetworkManager --print-config | grep "no-auto-default="
no-auto-default=*

如果 no-auto-default 显示的值不是 *,请编辑 /etc/NetworkManager/conf.d/00-server.conf 文件并根据需要更改变量。

安装电源子网资源代理

目前,ClusterLabs GitHub 资源代理库中提供了电源vs子网资源代理

https://github.com/ClusterLabs/resource-agents/blob/main/heartbeat/powervs-subnet.in 下载资源代理,并将副本放入两个节点的 /tmp 目录中。

在两个节点上,将脚本安装到 OCF资源代理程序的心跳目录中,并设置其权限。

sed -e 's|#!@PYTHON@|#!/usr/bin/python3|' /tmp/powervs-subnet.in \
     > /usr/lib/ocf/resource.d/heartbeat/powervs-subnet
chmod 755 /usr/lib/ocf/resource.d/heartbeat/powervs-subnet

使用以下命令验证安装并显示资源代理的简要说明。

pcs resource describe powervs-subnet

powervs-subnet 资源代理创建服务ID

按照 在 IBM Cloud 中创建自定义角色、服务ID和API密钥 的步骤,为 powervs-subnet 资源代理创建一个 Service ID 和一个 API key

结论

至此,基本集群的实现以及创建 powervs-subnet 集群资源的必要准备工作已经完成。 powervs-subnet 集群资源本身是在配置特定高可用性方案时创建的。

现在,您可以按照计划的高可用性方案的具体说明进行操作。