clustat 是一个用于显示 Linux-HA (High-Availability) 集群状态的命令行工具,它最常见的用途是在使用 Pacemaker 和 Corosync 这两个核心组件的集群环境中,快速、直观地查看整个集群的健康状况、资源状态和节点信息。

clustat 是集群管理员日常监控和维护集群的“瑞士军刀”。
命令简介
- 全称: Cluster Status
- 所属软件包: 通常在
pacemaker或cluster-glue软件包中。 - 主要功能: 报告集群的当前状态,包括节点状态、资源状态、操作历史等。
- 依赖环境: 需要一个正在运行的、配置了 Pacemaker 和 Corosync 的集群。
基本用法和常用选项
clustat 命令非常灵活,可以通过不同的选项来获取不同详细程度和类型的信息。
基本语法
clustat [选项]
常用选项
| 选项 | 描述 | 示例 |
|---|---|---|
-i, --interval |
持续监控模式,每隔指定秒数刷新一次状态,类似 top 命令。 |
clustat -i 2 |
-l, --list-all |
显示所有资源,包括那些未运行的资源。 | clustat -l |
-s, --summary |
仅显示摘要信息(默认模式),包括节点和关键资源的状态。 | clustat -s |
-n, --nodes |
仅显示节点状态,不显示资源。 | clustat -n |
-r, --resources |
仅显示资源状态,不显示节点。 | clustat -r |
-v, --verbose |
显示更详细的信息,包括资源的操作历史。 | clustat -v |
-q, --quiet |
静默模式,只返回退出码(0=正常,非0=异常),不输出任何内容,常用于脚本检查。 | clustat -q |
-h, --help |
显示帮助信息。 | clustat -h |
输出解读
clustat 的输出非常结构化,通常分为三个主要部分:集群摘要、节点状态 和 资源状态。
示例输出
# clustat Cluster Status for my_cluster ... Last updated: Mon Oct 24 10:30:00 2025 Member Status: Quorate Name ID Status ---- --- ------ node1.example.com 1 Online node2.example.com 2 Online Resource Group: my_webapp vip-rsc (ocf::heartbeat:IPaddr2): Started node1.example.com apache-rsc (systemd:httpd): Started node1.example.com
输出详解
-
第一部分:集群摘要
(图片来源网络,侵删)Cluster Status for my_cluster ...: 显示集群的名称。Last updated: ...: 最后更新时间。Member Status: Quorate: 这是最重要的状态信息之一。Quorate(法定人数): 表示集群中有足够数量的节点在线,可以形成“法定人数”并做出决策,集群是健康和可操作的。In Quorum: 和Quorate意思相同。Not Quorate: 表示节点数量不足,集群无法正常工作,这通常意味着发生了“脑裂”(Split-Brain)或节点大面积故障。
-
第二部分:节点状态
Name: 节点的主机名。ID: 节点在集群中的唯一ID。Status: 节点的当前状态,常见状态有:Online: 节点正常在线,且是集群成员。Offline: 节点离线,不参与集群。Standby: 节点在线,但被设置为“备用”模式,不运行任何资源。Pending: 节点正在加入或离开集群的过渡状态。Lost: 节点与集群失去联系(网络分区)。
-
第三部分:资源状态
- 这部分显示了集群中管理的所有资源或资源组。
Resource Group: my_webapp: 资源组名,资源组是一起移动的资源集合。vip-rsc (ocf::heartbeat:IPaddr2): 资源名称和类型(这里是IP地址资源)。Started node1.example.com: 该资源当前在哪个节点上运行。- 如果资源是
Stopped状态,则表示它当前未在任何节点上运行。
实用场景示例
场景1:快速检查集群健康状况
这是最常见的用法,不带任何选项,查看默认摘要。
# clustat Cluster Status for my_cluster ... Last updated: Mon Oct 24 10:30:00 2025 Member Status: Quorate Name ID Status ---- --- ------ node1.example.com 1 Online node2.example.com 2 Online Resource Group: my_webapp vip-rsc (ocf::heartbeat:IPaddr2): Started node1.example.com apache-rsc (systemd:httpd): Started node1.example.com
解读: 集群法定人数正常,两个节点都在线,Web应用资源组在 node1 上正常运行。

场景2:持续监控集群变化
当你在执行集群操作(如重启节点、故障转移测试)时,使用持续监控模式非常方便。
# clustat -i 3 # (会每3秒刷新一次状态,直到你按 Ctrl+C 停止)
场景3:查看所有资源(包括停止的)
有时候你需要检查一个配置了但未启动的资源。
# clustat -l Cluster Status for my_cluster ... Last updated: Mon Oct 24 10:31:00 2025 Member Status: Quorate Name ID Status ---- --- ------ node1.example.com 1 Online node2.example.com 2 Online Resource Group: my_webapp vip-rsc (ocf::heartbeat:IPaddr2): Started node1.example.com apache-rsc (systemd:httpd): Started node1.example.com Resource Group: db_service (Stopped) mysql-rsc (ocf::heartbeat:mysql): Stopped
解读: 输出中多了一个 db_service 资源组,它的状态是 Stopped。
场景4:查看详细的资源操作历史
当资源出现问题时,需要了解它过去发生了什么。
# clustat -v # 输出会很长,会包含每个资源的操作历史,如: # ... # apache-rsc (systemd:httpd): Started node1.example.com # Last success: Mon Oct 24 10:30:00 2025 # Operations: monitor:0 (node1.example.com), start:0 (node1.example.com), stop:0 (node1.example.com) # ...
解读: 这里可以看到资源最近的成功操作时间以及所有操作的记录。
场景5:在脚本中检查集群状态
如果你想在自动化脚本中判断集群是否健康,-q 选项非常有用。
#!/bin/bash # 检查集群是否达到法定人数 if clustat -q; then echo "集群状态正常。" # 执行后续操作 else echo "集群状态异常!" # 发送警报或退出 exit 1 fi
相关命令
clustat 是 Pacemaker 工具集的一部分,通常会与其他工具配合使用:
crm_mon: 另一个更强大的集群监控工具,提供类似clustat的功能,但配置更灵活,输出格式更丰富。crm_mon -r1可以实现类似clustat -i 1的效果。pcs: (Pacemaker/Corosync Shell) 是一个更高级的集群管理命令,它封装了底层复杂的命令,用于配置和管理集群。pcs status的功能与clustat高度重叠。cibadmin: 用于直接查询和修改集群的配置信息数据库 (CIB),是底层的调试工具。
clustat 是一个轻量、快速且易于使用的集群状态查看工具,对于任何管理 Pacemaker 集群的人来说,它都是日常工作中不可或缺的命令,通过掌握其基本选项和输出解读,你可以迅速判断集群的健康状况、定位节点或资源问题,是集群运维的得力助手。
