在本文中,我们将介绍如何在 RHEL 9/8 上使用 Pacemaker 设置两节点高可用性 Apache 集群。
Pacemaker 是适用于类 Linux 操作系统的高可用性集群软件。Pacemaker 被称为“集群资源管理器”,它通过在集群节点之间进行资源故障转移来提供集群资源的最大可用性。Pacemaker 使用 Corosync 进行集群组件之间的心跳和内部通信,Corosync 还负责集群中的投票选举(Quorum)。
先决条件
在我们开始之前,请确保你拥有以下内容:
- 两台 RHEL 9/8 服务器
- Red Hat 订阅或本地配置的仓库
- 通过 SSH 访问两台服务器
- root 或 sudo 权限
- 互联网连接
实验室详情:
- 服务器 1:node1.example.com(192.168.1.6)
- 服务器 2:node2.exaple.com(192.168.1.7)
- VIP:192.168.1.81
- 共享磁盘:
/dev/sdb
(2GB)
事不宜迟,让我们深入了解这些步骤。
1、更新 /etc/hosts 文件
在两个节点上的 /etc/hosts
文件中添加以下条目:
192.168.1.6 node1.example.com
192.168.1.7 node2.example.com
2、安装高可用包 Pacemaker
Pacemaker 和其他必需的包在 RHEL 9/8 的默认包仓库中不可用。因此,我们必须启用高可用仓库。在两个节点上运行以下订阅管理器命令。
对于 RHEL 9 服务器:
$ sudo subscription-manager repos --enable=rhel-9-for-x86_64-highavailability-rpms
对于 RHEL 8 服务器:
$ sudo subscription-manager repos --enable=rhel-8-for-x86_64-highavailability-rpms
启用仓库后,运行命令在两个节点上安装 pacemaker
包:
$ sudo dnf install pcs pacemaker fence-agents-all -y
3、在防火墙中允许高可用端口
要允许防火墙中的高可用端口,请在每个节点上运行以下命令:
$ sudo firewall-cmd --permanent --add-service=high-availability
$ sudo firewall-cmd --reload
4、为 hacluster 用户设置密码并启动 pcsd 服务
在两台服务器上为 hacluster
用户设置密码,运行以下 echo
命令:
$ echo "" | sudo passwd --stdin hacluster
执行以下命令在两台服务器上启动并启用集群服务:
$ sudo systemctl start pcsd.service
$ sudo systemctl enable pcsd.service
5、创建高可用集群
使用 pcs
命令对两个节点进行身份验证,从任何节点运行以下命令。在我的例子中,我在 node1
上运行它:
$ sudo pcs host auth node1.example.com node2.example.com
使用 hacluster
用户进行身份验证。
使用下面的 pcs cluster setup
命令将两个节点添加到集群,这里我使用的集群名称为 http_cluster
。仅在 node1
上运行命令:
$ sudo pcs cluster setup http_cluster --start node1.example.com node2.example.com
$ sudo pcs cluster enable --all
这两个命令的输出如下所示:
从任何节点验证初始集群状态:
$ sudo pcs cluster status
注意:在我们的实验室中,我们没有任何防护设备,因此我们将其禁用。但在生产环境中,强烈建议配置防护。
$ sudo pcs property set stonith-enabled=false
$ sudo pcs property set no-quorum-policy=ignore
6、为集群配置共享卷
在服务器上,挂载了一个大小为 2GB 的共享磁盘(/dev/sdb
)。因此,我们将其配置为 LVM 卷并将其格式化为 XFS 文件系统。
在开始创建 LVM 卷之前,编辑两个节点上的 /etc/lvm/lvm.conf
文件。
将参数 #system_id_source = "none"
更改为 system_id_source = "uname"
:
$ sudo sed -i 's/# system_id_source = "none"/ system_id_source = "uname"/g' /etc/lvm/lvm.conf
在 node1
上依次执行以下一组命令创建 LVM 卷:
$ sudo pvcreate /dev/sdb
$ sudo vgcreate --setautoactivation n vg01 /dev/sdb
$ sudo lvcreate -L1.99G -n lv01 vg01
$ sudo lvs /dev/vg01/lv01
$ sudo mkfs.xfs /dev/vg01/lv01
将共享设备添加到集群第二个节点(node2.example.com
)上的 LVM 设备文件中,仅在 node2
上运行以下命令:
[sysops@node2 ~]$ sudo lvmdevices --adddev /dev/sdb
7、安装和配置 Apache Web 服务器(httpd)
在两台服务器上安装 Apache web 服务器(httpd),运行以下 dnf
命令:
$ sudo dnf install -y httpd wget
并允许防火墙中的 Apache 端口,在两台服务器上运行以下 firewall-cmd
命令:
$ sudo firewall-cmd --permanent --zone=public --add-service=http
$ sudo firewall-cmd --permanent --zone=public --add-service=https
$ sudo firewall-cmd --reload
在两个节点上创建 status.conf
文件,以便 Apache 资源代理获取 Apache 的状态:
$ sudo bash -c 'cat