侧边栏壁纸
博主头像
ProSayJ 博主等级

Talk is cheap. Show me the code.

  • 累计撰写 43 篇文章
  • 累计创建 16 个标签
  • 累计收到 0 条评论

目 录CONTENT

文章目录

RabbitMQ-集群运维常见异常之-rabbitmqctl cluster_status

YangJian
2025-06-21 / 0 评论 / 0 点赞 / 21 阅读 / 0 字

rabbitmq 子节点执行查看集群信息保错如下

[root@rabbitmq03 ~]#  rabbitmqctl cluster_status
Error: this command requires the 'rabbit' app to be running on the target node. Start it with 'rabbitmqctl start_app'.
Arguments given:
        cluster_status

Usage

rabbitmqctl [--node <node>] [--longnames] [--quiet] cluster_status [--timeout <timeout>]

这个错误说明:

你在执行 rabbitmqctl cluster_status 命令时,RabbitMQ 的节点应用尚未启动。


❌ 错误原文:

Error: this command requires the 'rabbit' app to be running on the target node.
Start it with 'rabbitmqctl start_app'.

✅ 解决方法

🔧 步骤 1:先检查节点状态

执行:

rabbitmqctl status

若输出类似:

Status of node rabbit@rabbitmq03 ...
Error: unable to connect to node rabbit@rabbitmq03 ...

说明节点未正常运行,或节点名有误(见后面说明)。


🔧 步骤 2:启动 RabbitMQ 应用

rabbitmqctl start_app

然后再执行:

rabbitmqctl cluster_status

应该能成功输出集群状态。


🧠 额外排查建议

✅ 情况 1:节点名不一致

确保 /etc/rabbitmq/rabbitmq-env.conf 中设置了正确的节点名:

NODENAME=rabbit@rabbitmq03

注意: 如果你用的是 FQDN 模式(长主机名),可能应该是:

NODENAME=rabbit@rabbitmq03.yourdomain.local

设置后需要:

systemctl restart rabbitmq-server


✅ 情况 2:服务未运行

检查服务状态:

systemctl status rabbitmq-server

如未运行:

systemctl start rabbitmq-server


✅ 情况 3:重置节点后未重新启动应用

如果你执行了:

rabbitmqctl stop_app
rabbitmqctl reset

此时需要显式启动应用:

rabbitmqctl start_app

✅ 示例:完整流程回顾

# 查看服务状态
systemctl status rabbitmq-server

# 查看节点状态
rabbitmqctl status

# 启动 RabbitMQ 应用
rabbitmqctl start_app

# 查看集群状态
rabbitmqctl cluster_status


下面是一个一键检测 + 启动 RabbitMQ 节点并查看集群状态的自动化脚本


✅ 脚本名称:

check-rabbitmq-node.sh

#!/bin/bash

NODE_NAME=$(hostname)
RABBIT_NODE="rabbit@$NODE_NAME"

echo "🐰 正在检查 RabbitMQ 节点状态:$RABBIT_NODE"

# === 1. 检查 rabbitmq-server 服务是否运行 ===
echo "👉 [1] 检查 rabbitmq-server 服务状态..."
if ! systemctl is-active --quiet rabbitmq-server.service; then
  echo "❌ RabbitMQ 服务未运行,正在启动..."
  systemctl start rabbitmq-server.service
  sleep 3
else
  echo "✅ RabbitMQ 服务已运行。"
fi

# === 2. 判断 rabbit 应用是否启动 ===
echo "👉 [2] 检查 Rabbit 应用是否已启动..."

STATUS_OUTPUT=$(rabbitmqctl status 2>&1)
RET_CODE=$?

if [[ $RET_CODE -ne 0 ]]; then
  echo "❌ RabbitMQ 节点未启动或状态异常,退出码:$RET_CODE"
  echo "$STATUS_OUTPUT"
  exit 1
fi

# 检查是否包含 Node name 或 RabbitMQ version 等关键字段
if echo "$STATUS_OUTPUT" | grep -q "RabbitMQ version"; then
  echo "✅ RabbitMQ 节点应用已启动。"
else
  echo "⚠️ RabbitMQ 应用疑似未启动,尝试启动中..."
  rabbitmqctl start_app
  sleep 2
fi

# === 3. 查看集群状态 ===
echo "👉 [3] 当前集群状态:"
rabbitmqctl cluster_status  | awk '
/^Cluster status of node / {p=1; print; next}
/^Maintenance status$/ {p=0}
p'

✅ 使用方法:

  1. 保存为脚本:

vi check-rabbitmq-node.sh
chmod +x check-rabbitmq-node.sh

  1. 执行:

sudo ./check-rabbitmq-node.sh

🧠 说明:

  • 自动判断 RabbitMQ 服务是否启动

  • 自动判断 rabbit 应用是否 running

  • 自动启动应用(如果未启动)

  • 最后自动展示集群状态

0

评论区