CentOS 上 RabbitMQ 故障排查手册
一 快速定位流程
systemctl status rabbitmq-serverjournalctl -u rabbitmq-server --since "5 minutes ago"rabbitmqctl status、rabbitmqctl cluster_statusss -lntp | egrep '5672|15672|4369|25672'curl -I http://127.0.0.1:15672nc -vz 127.0.0.1 5672rabbitmq-diagnostics config_filesdf -h;检查内存:free -mnc -vz <服务器IP> 5672 与 nc -vz <服务器IP> 15672二 常见故障与修复要点
/etc/rabbitmq/rabbitmq.conf 与 conf.d/*.conf 语法;用 ss -lntp 查占用并释放端口;清理磁盘或扩容;按官方矩阵安装兼容的 Erlang 版本;必要时 systemctl restart rabbitmq-server 并复核日志。firewall-cmd --zone=public --add-port=5672/tcp --permanent && firewall-cmd --reload);云环境同步放通安全组规则。badrpc timeout、节点不可达。/etc/hosts 包含 127.0.0.1 <hostname> 映射;必要时统一使用 FQDN 并在所有节点 hosts 中互指;集群节点名形如 rabbit@ACCESS_REFUSED - Login was refused、530 NOT_ALLOWED - vhost not found。rabbitmqctl add_vhost <vhost>、rabbitmqctl add_user <user> <pwd>、rabbitmqctl set_permissions -p <vhost> <user> ".*" ".*" ".*"。Connection refused(端口不对/服务未监听)、SocketTimeoutException(网络不通/防火墙)、NoRouteToHostException(路由不可达)。unable to connect to nodes [...] nodedown,诊断显示能连 4369 但连 25672 失败。.erlang.cookie 一致且权限为 400;确保主机名解析可达;用 rabbitmqctl join_cluster 重试。三 高频报错速查表
| 现象 | 快速检查 | 修复建议 |
|---|---|---|
Job for rabbitmq-server.service failed |
journalctl -xeu rabbitmq-server、ss -lntp |
修正配置、释放端口、检查磁盘与依赖后重启 |
| 管理界面打不开 | curl -I http://127.0.0.1:15672、`ss -lntp |
grep 15672` |
ACCESS_REFUSED |
核对用户名/密码 | 重置密码或创建用户并赋权 |
530 NOT_ALLOWED - vhost not found |
rabbitmqctl list_vhosts |
创建 Vhost 并授予权限 |
badrpc timeout(启用插件/集群) |
/etc/hosts 是否含本机 hostname |
添加 127.0.0.1 <hostname> 映射,确保 FQDN 一致 |
nodedown |
telnet <node_ip> 4369、25672 |
放行 4369/25672、核对 .erlang.cookie 与解析 |
None of the specified endpoints were reachable |
客户端到 5672 的连通性 | 开放防火墙/安全组、核对地址端口与凭据 |
四 实用命令清单
systemctl start|stop|restart|status rabbitmq-serverjournalctl -u rabbitmq-server -ftail -n100 /var/log/rabbitmq/rabbitmq-server.lograbbitmqctl status、rabbitmqctl cluster_statusrabbitmqctl join_cluster rabbit@<hostname>、rabbitmqctl resetrabbitmqctl list_users、rabbitmqctl add_user <u> <p>rabbitmqctl set_user_tags <u> administratorrabbitmqctl add_vhost <v>、rabbitmqctl set_permissions -p <v> <u> ".*" ".*" ".*"rabbitmq-plugins enable rabbitmq_managementss -lntp | egrep '5672|15672|4369|25672'nc -vz 127.0.0.1 5672、curl -I http://127.0.0.1:15672rabbitmq-diagnostics config_files、rabbitmqctl environment五 预防与优化建议
/etc/hosts 或 DNS 中固化解析;集群节点间与客户端到节点的必要端口(4369/25672/5672/15672)保持长期放行策略一致。