实施 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
要查找 APIKEY
、IBMCLOUD_CRN_1
、GUID_1
和 POWERVSI_?
变量的设置,请按照 收集配置高可用性群集的参数 中的步骤操作。
安装和配置 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_1 和 POWERVSI_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