在现代IT架构中,高可用性是保障业务连续性的核心要素,在CentOS 8生态系统中,pcs
(Pacemaker/Corosync Configuration System)是构建和管理高可用集群的标准命令行工具,它提供了一个简洁而强大的接口,用于配置由Pacemaker和Corosync驱动的集群资源,确保关键服务在硬件或软件故障时能够自动切换,本文将详细介绍在CentOS 8上使用pcs
进行集群管理的关键步骤与概念。
安装与基础配置
在开始之前,确保你已准备好至少两台安装了CentOS 8的服务器,并且它们之间网络互通,所有集群节点都需要执行以下安装和初始化步骤。
通过dnf
安装必要的软件包:
sudo dnf install -y pcs pacemaker corosync fence-agents-all
安装完成后,需要启用并启动pcsd
服务。pcsd
是一个Web界面守护进程,pcs
命令行工具通过它与集群节点进行通信。
sudo systemctl enable --now pcsd
为了使集群节点能够相互认证,需要为hacluster
用户(集群管理专用用户)设置一个统一的密码,在每个节点上执行:
sudo passwd hacluster
使用pcs
对节点进行身份验证,在任意一个节点上,执行以下命令并输入刚刚为hacluster
用户设置的密码:
pcs host auth node1.example.com node2.example.com -u hacluster
认证成功后,便可以创建并启动集群,假设集群名为mycluster
:
pcs cluster setup mycluster node1.example.com node2.example.com pcs cluster start --all pcs cluster enable --all
至此,一个基础的Pacemaker集群已经搭建完成,你可以使用pcs status
命令查看集群的整体状态。
管理集群资源
集群的核心价值在于管理资源,如虚拟IP地址、Web服务、数据库等,资源是集群可以控制、启动、停止和监控的实体。
创建一个资源的基本语法是pcs resource create <资源ID> <资源类型> <资源参数>
,一个最常见的例子是创建一个浮动IP(Virtual IP),用于客户端访问。
pcs resource create VirtualIP ocf:heartbeat:IPaddr2 ip=192.168.1.100 cidr_netmask=24 op monitor interval=30s
这条命令创建了一个名为VirtualIP
的资源,它使用IPaddr2
脚本(由heartbeat
提供)来管理IP地址168.1.100
。op monitor interval=30s
部分定义了一个监控操作,即集群每30秒检查一次该IP地址是否正常。
创建资源后,再次使用pcs status
或pcs status resources
可以看到资源的状态,它应该会在某个节点上成功启动。
配置约束规则
默认情况下,Pacemaker会决定在哪个节点上运行资源,为了更精细地控制资源的行为,我们需要配置约束,约束主要有三类:位置约束、排序约束和共置约束。
位置约束用于指定资源更倾向于在哪些节点上运行,如果我们希望VirtualIP
资源优先在node1
上运行,可以执行:
pcs constraint location VirtualIP prefers node1
这样,只要node1
在线且健康,VirtualIP
就会尽量运行在该节点上,如果node1
故障,资源会自动迁移到node2
。
常用命令参考
为了方便日常管理,以下表格列出了一些常用的pcs
命令:
命令 | 描述 |
---|---|
pcs status | 查看集群和资源的总体状态 |
pcs cluster start --all | 启动所有节点上的集群服务 |
pcs cluster stop --all | 停止所有节点上的集群服务 |
pcs resource create | 创建一个新的集群资源 |
pcs resource delete <资源ID> | 删除一个指定的资源 |
pcs constraint location | 配置资源的位置约束 |
pcs property set stonith-enabled=false | (测试环境)禁用STONITH设备 |
相关问答FAQs
Q1: 我创建了一个资源(比如Apache服务),但它的状态一直是“Failed”,我该如何排查?
A1: 资源失败通常有几个原因,使用pcs status
或pcs resource status <资源ID>
查看详细的错误信息,最常见的排查步骤是:
- 检查日志:在资源运行的节点上,使用
journalctl -u pacemaker
或journalctl -u corosync
查看集群日志,通常会有明确的错误提示,比如配置文件错误、端口被占用或启动脚本不存在。 - 手动测试:在节点上手动尝试启动该服务(例如
systemctl start httpd
),看是否能成功,如果手动启动失败,说明问题出在服务本身或其依赖上,而非集群配置。 - 检查资源代理:确保你使用的资源代理(如
ocf:heartbeat:apache
)已正确安装,并且其参数(如配置文件路径configfile
)完全正确。
Q2: Pacemaker、Corosync和pcs这三者之间是什么关系?
A2: 它们是一个高可用集群解决方案中分工明确的三个核心组件:
- Corosync:是集群的消息层(Messaging Layer),它负责在集群节点之间传递心跳信息和成员关系消息,确保每个节点都知道其他节点的状态,它是集群通信的基础。
- Pacemaker:是集群资源管理器(CRM),它运行在Corosync之上,负责根据配置的规则和约束来决定在哪个节点上启动、停止或迁移资源,它是集群的“大脑”或“调度中心”。
- pcs:是Pacemaker/Corosync的配置系统,它是一个用户友好的命令行工具(也提供Web GUI),让管理员可以轻松地配置和管理整个集群,而无需手动编辑复杂的XML配置文件,它是管理员与集群交互的“前端”或“遥控器”。
【版权声明】:本站所有内容均来自网络,若无意侵犯到您的权利,请及时与我们联系将尽快删除相关内容!
发表回复