菜鸟科技网

CRM MON命令如何高效使用?

在Linux系统管理和监控中,crm_mon命令是Pacemaker集群管理工具中的一个关键组件,主要用于实时监控集群的当前状态、资源运行情况、节点状态以及集群配置信息,作为Corosync和Pacemaker集群的核心监控工具,crm_mon提供了命令行界面,帮助管理员快速排查集群故障、验证资源分配合理性,并确保集群的高可用性,以下将详细介绍crm_mon命令的功能、常用参数、输出解析及实际应用场景。

CRM MON命令如何高效使用?-图1
(图片来源网络,侵删)

crm_mon命令的核心功能

crm_mon(Cluster Resource Monitor)通过查询Pacemaker的CIB(Cluster Information Base)和集群状态,生成集群的实时或静态视图,其核心功能包括:

  1. 集群状态监控:显示集群是否处于在线(Online)、离线(Offline)、维护模式(Maintenance Mode)等状态。
  2. 节点状态管理:列出集群中所有节点的名称、状态(如Up/Down)、角色(如Member/Remote)以及最后一次联系时间。
  3. 资源追踪:展示集群中定义的资源(如VIP、数据库、服务等)的运行状态(Started/Stopped)、所属节点、运行时间以及监控操作历史。
  4. 资源约束分析:通过显示位置约束(Location Constraint)、排序约束(Colocation Constraint)等,帮助管理员理解资源分配规则。
  5. 操作历史记录:记录资源的启动、停止、迁移等操作,便于故障回溯。

crm_mon命令的常用参数

crm_mon支持丰富的命令行参数,以满足不同的监控需求,以下是常用参数及其作用:

参数 说明
-1(或--one-shot 输出一次集群状态后退出,适合脚本调用或快速查看。
-r(或--resources 仅显示资源信息,不显示节点和集群状态。
-n(或--nodes 仅显示节点信息。
-R(或--resource-operations 显示资源的操作历史(如启动、停止时间)。
-f(或--forever 持续监控集群状态,每隔一定时间(默认3秒)刷新输出,适合实时跟踪。
-i(或--interval= -f配合使用,指定刷新间隔(单位:秒)。
-d(或--daemonize 以守护进程模式运行,将监控日志输出到指定文件(需配合--logfile)。
-S(或--show-node-attributes 显示节点的属性(如节点权重、自定义标签)。
-p(或--partial 以部分模式显示,即使集群未完全同步(如节点离线)也输出信息。
-Q(或--quiet 静默模式,仅输出错误信息,适合与-1配合用于脚本判断集群状态。
-h(或--help 显示帮助信息。
-V(或--verbose 输出详细日志,包含调试信息,适合排查复杂问题。

crm_mon输出解析示例

执行crm_mon -1后,输出内容通常分为以下几个部分:

集群状态摘要

Cluster Summary:  
  Stack: corosync  
  Current DC: node1 (version 2.1.4-8.el8) - partition with quorum  
  Last updated: Mon Oct 10 14:30:00 2023 on node1  
  Last change: Mon Oct 10 14:25:00 2023 by hacluster via crm_attribute on node1  
  3 nodes and 2 resources configured  
  • Stack:集群使用的底层通信栈(如corosync)。
  • Current DC:当前集群的Designated Controller(主节点),包含版本和分区状态(with quorum表示集群有法定票数)。
  • Last updated/Last change:最后更新时间和变更记录。
  • Nodes and resources configured:已配置的节点数和资源数。

节点状态

Online: [ node1 node2 node3 ]  
  • Online:在线节点列表,若节点处于离线状态,会显示为Offline

资源状态

Active Resources:  
 VIP        (ocf:heartbeat:IPaddr2):       Started node1  
 WebService (ocf:heartbeat:apache):      Started node2  
  • 资源名称:如VIP、WebService。
  • 资源类型:OCF(Open Cluster Framework)标准资源,后跟提供商和资源名称。
  • 运行状态Started表示资源正在运行,Stopped表示已停止,Failed表示运行失败。
  • 所属节点:资源当前运行的节点。

资源操作历史(-R参数)

Operations:  
  VIP        2023/10/10 14:25:00    Started node1  
  VIP        2023/10/10 14:20:00    Stopped node2  

记录资源的启动、停止时间及操作节点。

CRM MON命令如何高效使用?-图2
(图片来源网络,侵删)

实际应用场景

  1. 快速检查集群状态
    使用crm_mon -1可以快速确认集群是否在线、节点是否正常、资源是否运行。

    crm_mon -1 | grep "Online"

    若输出为空或显示Offline节点,需立即排查节点网络或服务问题。

  2. 资源故障排查
    当资源(如数据库)频繁故障时,通过crm_mon -R查看操作历史,结合日志定位问题:

    crm_mon -R -r | grep "Database"

    若发现资源反复在节点间迁移,可能是节点资源不足或约束配置错误。

    CRM MON命令如何高效使用?-图3
    (图片来源网络,侵删)
  3. 维护模式操作
    在节点维护前,需将集群置于维护模式,避免资源自动迁移:

    crm cluster enter-maintenance  # 进入维护模式
    crm_mon -1  # 确认资源是否停止
    # 维护操作...
    crm cluster exit-maintenance   # 退出维护模式

相关问答FAQs

Q1: crm_mon显示“partition without quorum”是什么意思?如何解决?
A: “partition without quorum”表示集群分区未达到法定票数(quorum),通常发生在集群节点数量不足(如偶数节点中半数以上离线),此时集群会进入“只读”模式,资源迁移可能被禁止,解决方法:

  • 检查离线节点网络或服务状态,尝试恢复节点上线。
  • 若临时无法恢复,可通过crm cluster set no-quorum-policy=ignore忽略法定票数(需谨慎,可能导致数据不一致)。
  • 增加节点数量或调整票数分配(如crm_attribute -n quorum -v 2)。

Q2: 如何通过crm_mon监控资源是否在指定节点运行?
A: 使用crm_mon -r结合grep过滤资源名称,查看其运行节点是否符合预期,监控资源VIP是否在node1运行:

crm_mon -r | grep "VIP"

若输出显示VIP运行在node2,可通过位置约束(Location Constraint)强制其运行在node1

crm configure location vip-on-node1 VIP 100: node1

其中100为权重,数值越高优先级越高。

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