菜鸟科技网

clustat命令怎么用?参数有哪些?

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

clustat命令怎么用?参数有哪些?-图1
(图片来源网络,侵删)

clustat 是集群管理员日常监控和维护集群的“瑞士军刀”。


命令简介

  • 全称: Cluster Status
  • 所属软件包: 通常在 pacemakercluster-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

输出详解

  1. 第一部分:集群摘要

    clustat命令怎么用?参数有哪些?-图2
    (图片来源网络,侵删)
    • Cluster Status for my_cluster ...: 显示集群的名称。
    • Last updated: ...: 最后更新时间。
    • Member Status: Quorate: 这是最重要的状态信息之一
      • Quorate (法定人数): 表示集群中有足够数量的节点在线,可以形成“法定人数”并做出决策,集群是健康和可操作的。
      • In Quorum: 和 Quorate 意思相同。
      • Not Quorate: 表示节点数量不足,集群无法正常工作,这通常意味着发生了“脑裂”(Split-Brain)或节点大面积故障。
  2. 第二部分:节点状态

    • Name: 节点的主机名。
    • ID: 节点在集群中的唯一ID。
    • Status: 节点的当前状态,常见状态有:
      • Online: 节点正常在线,且是集群成员。
      • Offline: 节点离线,不参与集群。
      • Standby: 节点在线,但被设置为“备用”模式,不运行任何资源。
      • Pending: 节点正在加入或离开集群的过渡状态。
      • Lost: 节点与集群失去联系(网络分区)。
  3. 第三部分:资源状态

    • 这部分显示了集群中管理的所有资源或资源组。
    • 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 上正常运行。

clustat命令怎么用?参数有哪些?-图3
(图片来源网络,侵删)

场景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 集群的人来说,它都是日常工作中不可或缺的命令,通过掌握其基本选项和输出解读,你可以迅速判断集群的健康状况、定位节点或资源问题,是集群运维的得力助手。

分享:
扫描分享到社交APP
上一篇
下一篇