HCRM博客

构建CentOS 8上的PCS高可用集群指南

CentOS 8 集群管理利器:深入掌握 PCS 高可用工具

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

PCS:CentOS 8 高可用集群的核心指挥官

构建CentOS 8上的PCS高可用集群指南-图1

相较于早期版本依赖分散命令行工具的方式,CentOS 8 将 pcs 提升为管理高可用集群的官方推荐工具,它提供了一套强大且连贯的命令集,实现对集群资源、节点、约束等关键元素的集中管控,其优势在于:

  1. 统一管理界面: 告别繁琐的 crm_*pcs_* 命令混杂,pcs 一个工具搞定大部分操作。
  2. 配置直观简洁: 采用声明式配置方法,清晰定义资源、属性和约束关系。
  3. 集成 Web UI (pcsd): 默认启用的 pcsd 服务提供直观的 Web 管理界面,降低命令行门槛。
  4. 强大功能覆盖: 支持集群初始化、节点管理、资源创建与监控、约束设置、故障转移测试等全生命周期管理。

关键概念与实战操作

深入理解几个核心概念是高效运用 pcs 的基础:

  • 集群 (Cluster): 由多个节点(服务器)组成的逻辑整体,共同托管高可用服务。
  • 节点 (Node): 集群中的物理或虚拟机成员。
  • 资源 (Resource): 由集群管理的服务或组件,如虚拟 IP 地址、文件系统、Web 服务器(如 httpd)、数据库(如 MariaDB)等,资源有类型(如 ocf:heartbeat:IPaddr2, ocf:heartbeat:Filesystem)和特定参数。
  • 资源代理 (Resource Agent): 定义了资源如何启动、停止、监控等的标准化脚本,Pacemaker 通过资源代理与具体服务交互。
  • 约束 (Constraint): 定义资源在集群中运行的位置规则、启动顺序以及协同关系(位置约束、顺序约束、共置约束)。

CentOS 8 PCS 实战配置示例 (双节点集群):

  1. 安装必要软件包:

    sudo dnf install pcs pacemaker corosync fence-agents-all -y
  2. 配置主机名与 hosts 文件: 确保集群节点间能通过主机名正确解析。

    构建CentOS 8上的PCS高可用集群指南-图2
  3. 启动并启用 pcsd 服务: 此服务用于节点间通信和 Web UI。

    sudo systemctl start pcsd.service
    sudo systemctl enable pcsd.service
  4. 设置集群用户密码 (所有节点执行相同密码):

    sudo passwd hacluster
  5. 认证集群节点 (在任一节点执行):

    sudo pcs host auth node1.example.com node2.example.com -u hacluster -p <your_password_here>
    # 系统提示输入为每个节点设置的 hacluster 密码
  6. 创建并启动集群 (在用于初始化的节点执行):

    sudo pcs cluster setup my_new_cluster node1.example.com node2.example.com --start
    sudo pcs cluster enable --all  # 设置集群开机自启
  7. 禁用 STONITH (仅用于测试环境): 生产环境必须配置 Fencing。

    sudo pcs property set stonith-enabled=false
  8. 创建集群资源 (示例:虚拟 IP 和 Apache HTTP Server):

    构建CentOS 8上的PCS高可用集群指南-图3
    # 创建虚拟 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 用户登录,图形化管理集群。

生产环境关键考量

  1. 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
  2. 资源代理选择: 优先使用 ocf:heartbeat 代理,它们通常更成熟、功能更全,仔细配置代理参数 (如超时时间 timeout、监控间隔 interval)。
  3. 约束优化: 合理使用约束精确控制资源位置和启动顺序,避免资源抖动和冲突。pcs constraint [location|order|colocation] ... 命令是利器。
  4. 日志与监控: 密切关注 /var/log/cluster/corosync.log, /var/log/pacemaker.log 以及 journalctl -u pcsd -u corosync -u pacemaker 日志,集成到 Zabbix、Prometheus 等监控系统中。
  5. 测试!测试!测试! 在非生产环境模拟节点故障、网络中断、资源故障等场景,验证集群的故障转移和恢复能力是否达到预期。

PCS 在 CentOS 8 生态中的价值

掌握 pcs 是 CentOS 8/RHEL 8 环境下实施企业级高可用解决方案的关键技能,它将复杂的集群管理逻辑封装在简洁的命令和直观的 Web 界面之下,显著提升了运维效率和系统可靠性,无论是部署数据库集群、关键业务应用还是高可用存储,熟练运用 pcs 进行规划、部署、监控和故障排除,都能为业务连续性提供强有力的底层支撑,对于追求系统稳定性的工程师而言,投入时间精通 pcs 带来的回报是巨大的稳定性和运维效率提升。

本站部分图片及内容来源网络,版权归原作者所有,转载目的为传递知识,不代表本站立场。若侵权或违规联系Email:zjx77377423@163.com 核实后第一时间删除。 转载请注明出处:https://blog.huochengrm.cn/pc/35622.html

分享:
扫描分享到社交APP
上一篇
下一篇
发表列表
请登录后评论...
游客游客
此处应有掌声~
评论列表

还没有评论,快来说点什么吧~