本文目录导读:

- 基础环境准备(所有节点执行)
- 安装软件包(所有节点)
- 配置 Corosync 通信(主节点操作)
- 启动集群服务(主节点)
- 配置集群属性(可选但重要)
- 创建集群资源(VIP 示例)
- 验证集群效果
- 常见问题与补充
- 最终效果
Pacemaker 是一个高可用性集群资源管理器,在理解“Pacemaker 怎样集群”时,通常指的是如何搭建一个基于 Pacemaker + Corosync(通信层)的高可用集群。
下面是一个标准的 Pacemaker + Corosync 集群搭建流程,以 CentOS/RHEL 7/8/9 或 Rocky Linux 为例,假设你需要配置一个 2 节点集群(node1 和 node2)来管理 IP 资源。
基础环境准备(所有节点执行)
-
配置主机名与 hosts 解析
- node1 主机名:
node1.cluster.local - node2 主机名:
node2.cluster.local - 在
/etc/hosts中添加:168.1.10 node1.cluster.local node1 192.168.1.20 node2.cluster.local node2
- node1 主机名:
-
关闭防火墙与 SELinux
systemctl stop firewalld systemctl disable firewalld setenforce 0 # 永久关闭:修改 /etc/selinux/config 为 disabled
-
时间同步(NTP/Chrony)
集群对时间非常敏感,确保所有节点时间一致。
-
节点间 SSH 免密登录(可选,但推荐)
ssh-keygen ssh-copy-id node1 ssh-copy-id node2
安装软件包(所有节点)
# 安装高可用软件包组(包含 pacemaker, corosync, pcs 等) yum install -y pacemaker pcs psmisc policycoreutils-python-utils # 查看版本确认安装成功 rpm -qa | grep -E "pacemaker|corosync|pcs"
配置 Corosync 通信(主节点操作)
Pacemaker 依赖 Corosync 组通信,我们使用 pcs 工具来创建集群。
-
启动 pcsd 服务(所有节点)
systemctl start pcsd systemctl enable pcsd
-
设置 hacluster 用户密码(所有节点,密码需一致)
echo "yourpassword" | passwd --stdin hacluster
-
在主节点上执行集群认证与创建
# 1. 对两个节点进行认证(输入密码) pcs host auth node1 node2 -u hacluster -p yourpassword # 2. 创建集群,命名为 my_cluster pcs cluster setup my_cluster node1 node2
补充说明: 如果要配置多播或单播,可以使用
--start参数,对于生产环境建议在/etc/corosync/corosync.conf中确认transport: knet(新版本)或udpu。pcs cluster setup会自动完成这些配置。
启动集群服务(主节点)
# 启动所有节点的集群服务 pcs cluster start --all # 设置为开机自启 pcs cluster enable --all # 检查集群状态 pcs status # 或者详细查看 corosync corosync-cfgtool -s
你应该看到:
- 所有节点处于
Online状态。 - 没有资源在运行(因为还没配置)。
配置集群属性(可选但重要)
为了避免“脑裂”等问题,建议配置:
# 禁用 stonith(测试环境无 fence 设备时必须禁用,生产环境应配置) pcs property set stonith-enabled=false # 设置集群不检查仲裁(2节点集群如果无仲裁设备需要禁用) pcs property set no-quorum-policy=ignore # 查看所有属性 pcs property list
创建集群资源(VIP 示例)
创建一个虚拟 IP(VIP)资源,IP 会在节点间漂移:
# 创建资源:类型为 ocf:heartbeat:IPaddr2, 参数 ip=192.168.1.100 pcs resource create vip_cluster ocf:heartbeat:IPaddr2 ip=192.168.1.100 cidr_netmask=24 op monitor interval=30s
验证集群效果
# 查看资源状态 pcs status resources # 模拟故障:在 node1 上停止 pacemaker pcs cluster stop node1 # 在主节点上查看状态,vip 应该立即漂移到 node2 pcs status # 你会看到 vip_cluster 在 node2 上 running
常见问题与补充
-
单播 vs 多播:如果你的网络不支持多播(例如云环境),
pcs cluster setup会自动使用单播(knet 协议)。 -
fencing(STONITH):生产环境必须配置,STONITH(Shoot The Other Node In The Head)设备(如 IPMI、iLO、磁盘锁)是防脑裂的关键。
-
集群资源类型:
ocf(Open Cluster Framework):标准集群资源,如 IP、Filesystem、MySQL、Nginx 等。lsb(Linux Standard Base):普通 systemd 服务单元。systemd:直接管理 systemd 单元。
-
资源约束:
- 让资源在 node1 优先运行:
pcs constraint location vip_cluster prefers node1 - 让两个资源在一起运行:
pcs constraint colocation add res1 with res2 - 启动顺序:
pcs constraint order start res1 then res2
- 让资源在 node1 优先运行:
-
管理命令总结:
pcs cluster start --all:启动所有节点。pcs cluster stop --all:停止所有节点。pcs node standby node1:将 node1 变为备用,资源移走。pcs node unstandby node1:恢复 node1。
最终效果
搭建完成后,你的集群应该能实现:
- 高可用 VIP:当 node1 宕机,VIP 会在几十秒内自动漂移到 node2。
- 服务持续运行:即使节点故障,用户通过 VIP 访问的服务不会中断。
- 资源管理:通过
pcs status可以查看所有资源的状态和分布。
这个流程就是 Pacemaker + Corosync 标准集群的搭建方式,若有具体场景(如搭配 NFS、MySQL、Nginx),可以根据需求定义资源组和约束。