centos rabbitmq故障排查步骤
导读:CentOS 上 RabbitMQ 故障排查步骤 一 快速判定与定位 确认服务状态与日志 查看服务状态:systemctl status rabbitmq-server 查看启动失败原因:journalctl -xe | tail -n...
CentOS 上 RabbitMQ 故障排查步骤
一 快速判定与定位
- 确认服务状态与日志
- 查看服务状态:
systemctl status rabbitmq-server - 查看启动失败原因:
journalctl -xe | tail -n 200 - 查看节点日志:
tail -f /var/log/rabbitmq/rabbit@< hostname> .log
- 查看服务状态:
- 本地连通性自检
- 管理页面:
wget -O- http://localhost:15672(应返回登录页或 200) - AMQP 端口:
telnet localhost 5672或nc -vz localhost 5672
- 管理页面:
- 远程连通性自检
- 管理页面:
http://< 服务器IP> :15672 - 云厂商安全组/本机防火墙需放行 15672/5672(见下文)
- 管理页面:
- 端口占用与进程
- 占用检查:
ss -lntp | egrep '5672|15672|4369' - 进程检查:
ps -ef | grep rabbitmq;必要时kill -9 < PID>后重启
- 占用检查:
- 插件与节点状态
- 管理插件:
rabbitmq-plugins list | grep management - 节点状态:
rabbitmqctl status、rabbitmqctl cluster_status
- 管理插件:
二 常见故障与修复
- 服务无法启动
- 查看
journalctl -xe与/var/log/rabbitmq/*.log的错误关键词(配置语法、权限、依赖、资源告警等) - 端口冲突:释放或调整占用 5672/15672/4369 的进程
- 资源告警:日志出现 memory/disk alarm 时,先扩容或临时下调阈值(见下文)
- 查看
- 主机名与 /etc/hosts 解析问题
- 现象:
Job for rabbitmq-server.service failed且日志提示无法解析节点名或 epmd 连接失败 - 处理:在
/etc/hosts为当前 hostname 添加解析(示例:192.168.1.10 < hostname>),确保本机可解析自身主机名后重启服务
- 现象:
- 版本/依赖不兼容
- 现象:启动报 crypto/ssl 相关错误,或启动即退出
- 处理:核对 RabbitMQ–Erlang 版本矩阵;在 CentOS 7 上默认 glibc 2.17,不支持 RabbitMQ 3.13.x(需 glibc >
= 2.27),建议选用 RabbitMQ 3.12.x + Erlang 25.x;安装缺失依赖(如
openssl-devel、socat)后重装/重启
- 远程访问不了
- 本机可访问、远程不行:检查服务器 IP 是否正确、云安全组/本机防火墙是否放行 15672/5672
- firewalld 放行示例:
firewall-cmd --zone=public --add-port=15672/tcp --permanent & & firewall-cmd --reload - 管理插件未启用:
rabbitmq-plugins enable rabbitmq_management
- 集群节点失联
- 节点间需能解析主机名并互通 4369(epmd)、25672 等端口
- 在
/etc/hosts补全所有节点 IP–主机名 映射;必要时检查 .erlang.cookie 一致性与权限(见下文)
- 认证与权限问题
- 默认账号 guest/guest 仅允许本地登录;远程需创建管理员账号并赋权
- 示例:
rabbitmqctl add_user admin < pwd> & & rabbitmqctl set_user_tags admin administrator & & rabbitmqctl set_permissions -p / admin ".*" ".*" ".*"
三 高频命令清单
- 服务管理
systemctl start|stop|restart|status rabbitmq-serverrabbitmq-server -detached(后台启动)
- 节点与应用
rabbitmqctl status、rabbitmqctl stop_app、rabbitmqctl start_app
- 插件
rabbitmq-plugins enable|disable rabbitmq_management
- 用户与权限
rabbitmqctl add_user < u> < p>、rabbitmqctl set_user_tags < u> administratorrabbitmqctl set_permissions -p / < u> ".*" ".*" ".*"
- 集群
rabbitmqctl cluster_status、rabbitmqctl join_cluster < node>
- 资源与告警
- 查看告警:
rabbitmqctl status | egrep 'memory|disk' - 调整阈值(示例):
rabbitmqctl set_vm_memory_high_watermark 0.4、rabbitmqctl set_disk_free_limit 500MB
- 查看告警:
四 集群与网络专项排查
- 节点名与解析
- 统一并固化 hostname,在
/etc/hosts为所有节点添加 IP–主机名 双向解析,避免节点名漂移导致 nodedown
- 统一并固化 hostname,在
- Cookie 一致性与权限
- 集群节点 .erlang.cookie 必须一致;文件权限建议 400
- 路径:RPM 安装通常为 /var/lib/rabbitmq/.erlang.cookie;二进制安装通常为 $HOME/.erlang.cookie
- 关键端口与连通性
- 确保节点间可互通 4369(epmd)、25672(集群通信)、以及 5672/15672(业务与管理)
- 本机:
ss -lntp | egrep '4369|25672|5672|15672' - 跨机:
nc -vz < peer_ip> 4369、nc -vz < peer_ip> 25672
- 集群状态核验
rabbitmqctl cluster_status检查 running_nodes、partitions 是否为空,必要时按顺序重启各节点
五 消息丢失与可靠性核查
- 生产者确认
- 开启 Confirm 模式,处理 ack/nack 并记录重试
- 持久化
- 队列:
durable=true;消息:delivery_mode=2
- 队列:
- 死信队列
- 为失败消息配置 DLX/DLK,便于重试与分析
- 高可用
- 使用 镜像队列(示例策略:
rabbitmqctl set_policy ha-all "^ha\." '{ "ha-mode":"all","ha-sync-mode":"automatic"} ')
- 使用 镜像队列(示例策略:
- 监控与日志
- 结合 /var/log/rabbitmq/ 与管理插件监控页面定位异常
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: centos rabbitmq故障排查步骤
本文地址: https://pptw.com/jishu/785637.html
