RabbitMQ 生产运维命令大全

包括:重启、扩容、迁移、故障切换、日志清理

一、、基础服务命令(所有节点通用)

bash 复制代码
# 启动
systemctl start rabbitmq-server

# 停止
systemctl stop rabbitmq-server

# 重启
systemctl restart rabbitmq-server

# 开机自启
systemctl enable rabbitmq-server

# 查看状态
systemctl status rabbitmq-server

# 查看日志(生产排错必备)
tail -f /var/log/rabbitmq/rabbitmq@$(hostname).log

二、用户 / 权限 / 后台管理

bash 复制代码
# 开启管理后台
rabbitmq-plugins enable rabbitmq_management

# 创建管理员用户
rabbitmqctl add_user admin 你的密码
rabbitmqctl set_user_tags admin administrator

# 赋权(全部权限)
rabbitmqctl set_permissions -p / admin ".*" ".*" ".*"

# 查看用户列表
rabbitmqctl list_users

# 修改密码
rabbitmqctl change_password admin 新密码

# 删除用户
rabbitmqctl delete_user 用户名

三、集群核心命令(生产高频)

bash 复制代码
# 查看集群状态(最常用)
rabbitmqctl cluster_status

# 节点停止服务(不退出集群)
rabbitmqctl stop_app

# 节点启动服务
rabbitmqctl start_app

# 重置节点(清空数据、退出集群)⚠️ 谨慎!
rabbitmqctl reset

# 加入集群(以 rmq1 为种子节点)
rabbitmqctl join_cluster rabbit@rmq1

# 将节点设置为 磁盘节点(默认)
rabbitmqctl change_cluster_node_type disc

# 将节点设置为 内存节点(一般不用)
rabbitmqctl change_cluster_node_type ram

# 从集群移除宕机节点(清理集群)
rabbitmqctl forget_cluster_node rabbit@rmq2

四、高可用镜像队列策略(最重要!必背)

1. 设置全量镜像(所有队列同步所有节点,生产标准)

复制代码
rabbitmqctl set_policy ha-all "^" '{"ha-mode":"all","ha-sync-mode":"automatic","ha-sync-batch-size":10000}' --priority 1

2. 设置备份 2 个副本(更推荐,3 节点集群)

复制代码
rabbitmqctl set_policy ha-two "^" '{"ha-mode":"exactly","ha-params":2,"ha-sync-mode":"automatic"}' --priority 1

3. 查看策略

复制代码
rabbitmqctl list_policies

4. 删除策略

复制代码
rabbitmqctl clear_policy ha-all

五、队列、消息、连接管理(排错)

复制代码
# 查看所有队列
rabbitmqctl list_queues name messages consumers state

# 查看所有交换机
rabbitmqctl list_exchanges name type

# 查看绑定
rabbitmqctl list_bindings

# 查看连接
rabbitmqctl list_connections

# 查看通道 channels
rabbitmqctl list_channels

# 清空指定队列消息(危险!测试用)
rabbitmqctl purge_queue 队列名

# 删除队列
rabbitmqctl delete_queue 队列名

六、集群故障处理标准流程(运维必背)

场景 1:单节点宕机,重启后重新加入集群

复制代码
# 在宕机节点执行
systemctl start rabbitmq-server
rabbitmqctl stop_app
rabbitmqctl reset
rabbitmqctl join_cluster rabbit@rmq1
rabbitmqctl start_app

场景 2:节点长期挂了,从集群剔除

复制代码
# 在正常节点执行
rabbitmqctl forget_cluster_node rabbit@挂掉的节点名

场景 3:队列不同步(修复)

复制代码
rabbitmqctl sync_queue 队列名

场景 4:关闭节点优雅下线

复制代码
rabbitmqctl stop_app
# 迁移走主队列后再关机
复制代码
# Cookie 路径
/var/lib/rabbitmq/.erlang.cookie

# 必须 3 台完全一样
# 权限必须是 400,属主 rabbitmq:rabbitmq

chmod 400 /var/lib/rabbitmq/.erlang.cookie
chown rabbitmq:rabbitmq /var/lib/rabbitmq/.erlang.cookie

八、生产环境最佳实践总结

  1. 3 节点集群最稳定
  2. 镜像策略 ha-mode=all 或 exactly=2
  3. 前端必须加 LB(HAProxy/Nginx)
  4. .erlang.cookie 必须一致
  5. 队列持久化 + 消息持久化
  6. 消费者手动 ACK + 重试 + 死信
  7. 节点挂掉不影响业务,自动切换
相关推荐
Hello eveybody6 分钟前
介绍一下背包DP(Python)
开发语言·python·动态规划·dp·背包dp
AI进化营-智能译站22 分钟前
ROS2 C++开发系列12-用多态与虚函数构建可扩展的ROS2机器人行为模块
开发语言·c++·ai·机器人
iCxhust26 分钟前
微机原理实践教程(C语言篇)---A002流水灯
c语言·开发语言·单片机·嵌入式硬件·51单片机·课程设计·微机原理
莎士比亚的文学花园1 小时前
Linux驱动开发(3)——设备树
开发语言·javascript·ecmascript
图码1 小时前
如何用多种方法判断字符串是否为回文?
开发语言·数据结构·c++·算法·阿里云·线性回归·数字雕刻
U盘失踪了1 小时前
python curl转python脚本
开发语言·chrome·python
charlie1145141911 小时前
Linux 字符设备驱动:cdev、设备号与设备模型
linux·开发语言·驱动开发·c
handler011 小时前
Linux 内核剖析:进程优先级、上下文切换与 O(1) 调度算法
linux·运维·c语言·开发语言·c++·笔记·算法
FQNmxDG4S1 小时前
Java泛型编程:类型擦除与泛型方法的应用场景
java·开发语言·python
zhouwy1131 小时前
Linux进程与线程编程详解
linux·c++