IBM Cloud Docs
实施 Red Hat Enterprise Linux 高可用性附加集群

实施 Red Hat Enterprise Linux 高可用性附加集群

使用以下信息和程序实施 Red Hat Enterprise Linux (RHEL) 高可用性附加集群。 该集群使用 IBM® Power® Virtual Server 作为集群节点。

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

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

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

准备工作

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

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

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

准备节点以安装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>       # Workspace region
export PROXY_IP=<IP_ADDRESS>             # Proxy server IP address

# Workspace 1
export IBMCLOUD_CRN_1=<IBMCLOUD_CRN_1>   # Workspace CRN
export GUID_1=<GUID_1>                   # 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 hostname
export POWERVSI_2=<POWERVSI_2>           # Virtual server instance id

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

安装和配置 RHEL HA 附加群集

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

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

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

安装 RHEL HA 附加软件

安装所需的软件包。

检查 RHEL HA 存储库

检查 RHEL 高可用性存储库是否已启用。

在两个节点上,使用以下命令。

dnf repolist

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

subscription-manager repos \
    --enable="rhel-8-for-ppc64le-highavailability-e4s-rpms"

对于 RHEL 9,请使用以下命令。

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 8
fence-agents-ibm-powervs-4.2.1-121.el8
RHEL 9
fence-agents-ibm-powervs-4.10.0-43.el9

配置 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

如果您收到类似 Error: Unable to communicate with {NODE2} 的错误信息,请检查您的环境是否设置了代理变量(env | grep -i proxy )。您需要取消设置这些变量或定义一个no_proxy变量来排除集群节点:export no_proxy=${NODE1},${NODE2},$no_proxy

配置并启动集群节点

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

--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 设备代理。

代理通过参数APIKEY、IBMCLOUD_CRN_1、CLOUD_REGION 、GUID 以及实例ID POWERVSI_1POWERVSI_2

您可以使用在 为配置高可用性群集收集参数 一节中收集的参数来测试代理调用。

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

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

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

fence_ibm_powervs \
    --token=${APIKEY} \
    --crn=${IBMCLOUD_CRN_1} \
    --instance=${GUID_1} \
    --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_1} \
    --instance=${GUID_1} \
    --region=${CLOUD_REGION} \
    --plug=${POWERVSI_2} \
    --api-type=private \
    --proxy=http://${PROXY_IP}:3128 \
    -o status

status 防火墙代理对虚拟服务器实例 {pvm_instance_id} 采取的行动显示了其电源状态。

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

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

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

创建一个stonith设备

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

pcs stonith describe fence_ibm_powervs

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

在 NODE1 上,运行以下命令。

pcs stonith create res_fence_ibm_powervs 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};${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

设置石质行动集群属性

为了加快 IBM Power Virtual Server 集群的故障切换时间,您可以将集群属性 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 停止。

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

在 NODE1 上,运行以下命令。

pcs cluster start
pcs status
pcs stonith status