RHCS 已经被淘汰了。 它的继任者是 Pacemaker 和 Corosync,它们共同构成了现代 RHEL (Red Hat Enterprise Linux) / CentOS 上的高可用性集群解决方案。

- Corosync: 负责集群成员管理、消息传递和成员间通信,它确保集群中的所有节点都知道彼此的存在,并能在节点故障时快速检测到。
- Pacemaker: 负责资源管理(如 IP 地址、虚拟IP、数据库服务、Web服务等)和故障转移策略,它决定在哪个节点上运行哪个资源,以及在发生故障时如何迁移。
当你现在谈论“RHCS 命令”时,实际上主要是指用于管理 Pacemaker + Corosync 集群的命令。
核心管理命令 (Pacemaker)
这些命令用于查看和管理集群的整体状态、资源和节点。
查看集群状态
这是最常用、最重要的命令组。
-
crm status: 显示集群的总体状态,包括节点、资源和操作。
(图片来源网络,侵删)[root@node1 ~]# crm status ============ Last updated: ... Stack: corosync Current DC: node1 (version 2.1.5-1.el9-36e17e7b0d) - partition with quorum Last updated: ... Nodes configured: 2 Online: [ node1 node2 ] Full list of resources: Resource Group: g_web vip (ocf:heartbeat:IPaddr2): Started node1 web_svc (systemd:httpd): Started node1 Failed Actions: 1. web_monitor_0 on node1 'not running' call=17, status=complete, exitreason='none', last-rc-change='...', queued-0ms, exec-0ms -
crm_mon: 一个更详细、交互式的监控工具。crm status实际上是crm_mon -1的简化版。# 持续监控,按 'q' 退出 [root@node1 ~]# crm_mon # 以非交互方式运行,适合脚本 [root@node1 ~]# crm_mon -r
-
pcs status:pcs是一个更友好的命令行工具,它是对底层crm命令的封装,在 RHEL/CentOS 7/8/9 中,pcs是推荐的管理工具。# 显示所有状态信息 [root@node1 ~]# pcs status # 只显示集群节点 [root@node1 ~]# pcs status nodes # 只显示资源 [root@node1 ~]# pcs status resources
管理资源
-
crm configure: 进入资源配置的交互式模式。[root@node1 ~]# crm configure crm(live)configure# # 在这里输入子命令
常用子命令:
(图片来源网络,侵删)show: 显示当前的资源配置。primitive <resource_id> <class>:<provider>:<type> [params]: 定义一个基础资源(如 IP、VIP、服务等)。group <group_id> <resource_id> [...]: 将多个资源定义为一个组,确保它们在同一个节点上运行。clone <clone_id> <resource_id> [params]: 定义一个克隆资源(如 VIP),可以在多个节点上运行多个实例。colocation <id> <score> <resource_id> <with_resource_id>: 定义资源位置约束,让两个资源倾向于在同一节点或不同节点上运行。order <id> <score> <resource_id> <then_resource_id>: 定义资源启动顺序约束,确保一个资源在另一个资源之后启动。commit: 保存并应用配置更改。quit: 退出交互模式。
-
pcs resource: 使用pcs管理资源(推荐)。# 添加一个资源 [root@node1 ~]# pcs resource create vip ocf:heartbeat:IPaddr2 ip=192.168.1.100 cidr_netmask=24 op monitor interval=30s # 添加一个资源组 [root@node1 ~]# pcs resource group add g_web vip httpd # 删除一个资源 [root@node1 ~]# pcs resource delete vip # 禁用资源(停止并禁止其自动启动) [root@node1 ~]# pcs resource disable vip # 启用资源 [root@node1 ~]# pcs resource enable vip # 查看资源详细属性 [root@node1 ~]# pcs resource show vip
管理节点
-
crm node: 管理集群节点。crm node standby <node_name>: 将节点设置为待机模式,Pacemaker 会将此节点上的所有资源迁移到其他节点。crm node online <node_name>: 将待机模式的节点恢复在线。crm node cleanup <node_name>: 清理节点上的资源状态。这是一个危险命令,通常在节点彻底故障并恢复后,需要重新加入集群时使用。
-
pcs cluster: 使用pcs管理节点(推荐)。# 将节点设置为待机 [root@node1 ~]# pcs node standby node2 # 将节点恢复在线 [root@node1 ~]# pcs node online node2 # 强制清理节点 [root@node1 ~]# pcs node cleanup node2
管理约束
约束定义了资源的位置、启动顺序和依赖关系。
-
crm configure location: 定义资源位置约束。crm configure location prefer_node1 vip 100: 让vip资源优先在node1上运行(权重100)。crm configure location avoid_node2 vip -INFINITY: 让vip资源绝对不要在node2上运行。
-
crm configure colocation: 定义资源亲和性约束。crm configure colocation web_with_vip INFINITY vip web_svc:web_svc必须和vip在同一个节点上,并且权重为无穷大(强制)。
-
pcs constraint: 使用pcs管理约束(推荐)。# 添加位置约束 [root@node1 ~]# pcs constraint location vip prefers node1=100 # 添加亲和性约束 [root@node1 ~]# pcs constraint colocation add vip with httpd INFINITY # 添加顺序约束 [root@node1 ~]# pcs constraint order vip then httpd
集群配置与服务命令
这些命令用于启动、停止和配置整个集群服务。
pcs 集群管理命令
pcs 是管理集群的瑞士军刀。
# 初始化集群(在第一个节点上执行) [root@node1 ~]# pcs cluster setup --name my_cluster node1.example.com node2.example.com --start --enable # 将其他节点加入集群(在要加入的节点上执行,并指定已在集群中的节点) [root@node3 ~]# pcs cluster node add my_cluster node1.example.com # 启动集群服务 [root@node1 ~]# pcs cluster start # 停止集群服务 [root@node1 ~]# pcs cluster stop # 设置集群在开机时自动启动 [root@node1 ~]# pcs cluster enable # 禁用集群开机自启 [root@node1 ~]# pcs cluster disable # 查看集群配置和状态 [root@node1 ~]# pcs cluster status # 查看集群配置文件 [root@node1 ~]# pcs cluster cib
corosync 相关命令
直接操作 corosync 的情况较少,通常通过 pcs 或 crm 间接管理。
# 查看 corosync 状态 [root@node1 ~]# corosync-cfgtool -s # 查看 corosync 环境信息(如 ring ID) [root@node1 ~]# corosync-cfgtool -l # 手动发送一个消息,用于测试网络 [root@node1 ~]# corosync-cmapctl -s runtime.members
pacemaker 相关命令
# 查看 pacemaker 状态 [root@node1 ~]# pacemakerd status # 获取集群的详细 CIB (Cluster Information Base) 配置 [root@node1 ~]# crm configure show
故障排查命令
当集群出现问题时,这些命令非常有用。
-
crm_verify: 验证当前 CIB 配置文件的语法是否正确。[root@node1 ~]# crm_verify -L -V
-
crm_simulate: 模拟配置更改,查看可能产生的结果,而不会实际应用,非常安全,用于预演。[root@node1 ~]# crm_simulate -L
-
cibadmin: 直接读写 CIB 配置文件。# 导出当前配置 [root@node1 ~]# cibadmin -Q > /tmp/cib.xml # 导入配置(危险操作) [root@node1 ~]# cibadmin -R -c /tmp/cib.xml
-
查看日志:
/var/log/pacemaker/pacemaker.log: Pacemaker 的主日志,记录了资源操作、决策过程等。/var/log/cluster/corosync.log: Corosync 的日志,记录了成员通信和选举等。journalctl -u pacemaker: 查看系统服务pacemaker的日志。
总结表格
| 功能类别 | 命令 (推荐) | 命令 (传统) | 描述 |
|---|---|---|---|
| 查看状态 | pcs status |
crm status |
显示集群、节点、资源的总体状态 |
| 资源管理 | pcs resource |
crm configure |
添加、删除、启用、禁用资源 |
| 节点管理 | pcs node standby/online |
crm node standby/online |
将节点设置为待机或恢复在线 |
| 约束管理 | pcs constraint |
crm configure colocation/order |
定义资源的位置、顺序和亲和性 |
| 集群配置 | pcs cluster setup/start/stop |
手动管理 corosync 和 pacemaker 服务 |
初始化、启动、停止整个集群 |
| 故障排查 | crm_verify, journalctl |
crm_simulate, cibadmin |
验证配置、模拟变更、查看日志 |
重要提示:在生产环境中进行任何更改前,强烈建议先在测试环境中验证,并使用 crm_simulate 或 pcs dry-run 预演操作,错误的配置可能导致服务中断。
