CentOS 8 集群管理利器:深入掌握 PCS 高可用工具
在 CentOS 8 环境下构建稳定可靠的高可用集群,pcs 工具是运维工程师不可或缺的核心利器,作为 Pacemaker 和 Corosync 集群栈的统一管理界面,它极大地简化了集群配置、监控和维护的复杂性,为关键业务系统提供了坚实的保障。
PCS:CentOS 8 高可用集群的核心指挥官

相较于早期版本依赖分散命令行工具的方式,CentOS 8 将 pcs 提升为管理高可用集群的官方推荐工具,它提供了一套强大且连贯的命令集,实现对集群资源、节点、约束等关键元素的集中管控,其优势在于:
- 统一管理界面: 告别繁琐的
crm_*或pcs_*命令混杂,pcs一个工具搞定大部分操作。 - 配置直观简洁: 采用声明式配置方法,清晰定义资源、属性和约束关系。
- 集成 Web UI (pcsd): 默认启用的
pcsd服务提供直观的 Web 管理界面,降低命令行门槛。 - 强大功能覆盖: 支持集群初始化、节点管理、资源创建与监控、约束设置、故障转移测试等全生命周期管理。
关键概念与实战操作
深入理解几个核心概念是高效运用 pcs 的基础:
- 集群 (Cluster): 由多个节点(服务器)组成的逻辑整体,共同托管高可用服务。
- 节点 (Node): 集群中的物理或虚拟机成员。
- 资源 (Resource): 由集群管理的服务或组件,如虚拟 IP 地址、文件系统、Web 服务器(如 httpd)、数据库(如 MariaDB)等,资源有类型(如
ocf:heartbeat:IPaddr2,ocf:heartbeat:Filesystem)和特定参数。 - 资源代理 (Resource Agent): 定义了资源如何启动、停止、监控等的标准化脚本,Pacemaker 通过资源代理与具体服务交互。
- 约束 (Constraint): 定义资源在集群中运行的位置规则、启动顺序以及协同关系(位置约束、顺序约束、共置约束)。
CentOS 8 PCS 实战配置示例 (双节点集群):
安装必要软件包:
sudo dnf install pcs pacemaker corosync fence-agents-all -y
配置主机名与 hosts 文件: 确保集群节点间能通过主机名正确解析。

启动并启用 pcsd 服务: 此服务用于节点间通信和 Web UI。
sudo systemctl start pcsd.service sudo systemctl enable pcsd.service
设置集群用户密码 (所有节点执行相同密码):
sudo passwd hacluster
认证集群节点 (在任一节点执行):
sudo pcs host auth node1.example.com node2.example.com -u hacluster -p <your_password_here> # 系统提示输入为每个节点设置的 hacluster 密码
创建并启动集群 (在用于初始化的节点执行):
sudo pcs cluster setup my_new_cluster node1.example.com node2.example.com --start sudo pcs cluster enable --all # 设置集群开机自启
禁用 STONITH (仅用于测试环境): 生产环境必须配置 Fencing。
sudo pcs property set stonith-enabled=false
创建集群资源 (示例:虚拟 IP 和 Apache HTTP Server):

# 创建虚拟 IP 资源 sudo pcs resource create cluster_vip ocf:heartbeat:IPaddr2 ip=192.168.1.100 cidr_netmask=24 op monitor interval=30s # 创建 Apache HTTP 服务资源 sudo pcs resource create webserver systemd:httpd op monitor interval=20s # 添加资源组 (确保 VIP 和 Web 服务在同一节点运行且顺序启动) sudo pcs resource group add web_group cluster_vip webserver # 或者使用约束 (位置约束确保两者同节点,顺序约束确保 VIP 先于 httpd 启动) # sudo pcs constraint colocation add webserver with cluster_vip INFINITY # sudo pcs constraint order cluster_vip then webserver
日常管理与监控技巧
- 查看集群状态:
sudo pcs status # 简洁状态 sudo pcs status --full # 详细状态 sudo crm_mon -1fr # 动态刷新视图 (需安装 `crmsh`)
- 管理节点:
sudo pcs node standby <node_name> # 将节点置于待机模式 (资源移走) sudo pcs node unstandby <node_name> # 取消节点待机 sudo pcs node maintenance <node_name> # 维护模式
- 管理资源:
sudo pcs resource restart <resource_name> # 重启资源 sudo pcs resource disable <resource_name> # 临时禁用资源 sudo pcs resource enable <resource_name> # 启用资源 sudo pcs resource cleanup <resource_name> # 清除资源失败状态
- 使用 Web UI: 浏览器访问
https://<any_node_ip>:2224(默认端口),使用hacluster用户登录,图形化管理集群。
生产环境关键考量
- Fencing (STONITH):生产环境绝对核心!
pcs必须配置可靠的 Fencing 设备或代理 (fence_vmware,fence_ipmilan等),确保故障节点被隔离,防止数据损坏(脑裂),配置示例:sudo pcs stonith create my_fence fence_vmware pcmk_host_map="node1:vm1;node2:vm2" ipaddr=vcenter.example.com login=vcenter_user passwd=secure_pwd sudo pcs property set stonith-enabled=true
- 资源代理选择: 优先使用
ocf:heartbeat代理,它们通常更成熟、功能更全,仔细配置代理参数 (如超时时间timeout、监控间隔interval)。 - 约束优化: 合理使用约束精确控制资源位置和启动顺序,避免资源抖动和冲突。
pcs constraint [location|order|colocation] ...命令是利器。 - 日志与监控: 密切关注
/var/log/cluster/corosync.log,/var/log/pacemaker.log以及journalctl -u pcsd -u corosync -u pacemaker日志,集成到 Zabbix、Prometheus 等监控系统中。 - 测试!测试!测试! 在非生产环境模拟节点故障、网络中断、资源故障等场景,验证集群的故障转移和恢复能力是否达到预期。
PCS 在 CentOS 8 生态中的价值
掌握 pcs 是 CentOS 8/RHEL 8 环境下实施企业级高可用解决方案的关键技能,它将复杂的集群管理逻辑封装在简洁的命令和直观的 Web 界面之下,显著提升了运维效率和系统可靠性,无论是部署数据库集群、关键业务应用还是高可用存储,熟练运用 pcs 进行规划、部署、监控和故障排除,都能为业务连续性提供强有力的底层支撑,对于追求系统稳定性的工程师而言,投入时间精通 pcs 带来的回报是巨大的稳定性和运维效率提升。
