在 Ubuntu 上更新 RabbitMQ 的正确做法
一 升级前准备
- 备份关键数据:导出定义与配置,便于回滚与迁移。
- 导出定义:sudo rabbitmqctl export_definitions /root/rabbit-backup-defs.json
- 备份配置与数据目录:/etc/rabbitmq/、/var/lib/rabbitmq/
- 检查版本兼容:RabbitMQ 与 Erlang/OTP 有严格对应关系,先确认目标版本是否满足要求,再决定升级路径。参考官方“RabbitMQ Erlang Version Requirements”。
- 选择升级方式:
- 原地升级:执行 apt 升级(适合小版本升级,风险低)。
- 跨大版本或遇到依赖冲突:建议用“新仓库 + 就地升级/重装”的方式,减少旧仓库残留带来的冲突。
二 原地升级步骤(推荐,适用于同系列小版本)
- 更新 APT 索引并升级:
- sudo apt-get update
- sudo apt-get install --only-upgrade rabbitmq-server
- 重启服务并验证:
- sudo systemctl restart rabbitmq-server
- sudo rabbitmqctl status
- 查看版本:sudo rabbitmqctl version 或 dpkg -l | grep rabbitmq-server
- 如启用了管理插件,确认插件正常:
- sudo rabbitmq-plugins enable rabbitmq_management(如已启用可跳过)
- 访问控制台:http://服务器IP:15672(确保防火墙放行 15672/5672)
三 跨大版本或仓库过旧时的升级方法
- 使用官方脚本添加 Cloudsmith 新版仓库(自动配置 APT 源与密钥,省去手动编辑源与导入 GPG 的繁琐):
- 安装/更新 Erlang 仓库:
- curl -1sLf ‘https://dl.cloudsmith.io/public/rabbitmq/rabbitmq-erlang/setup.deb.sh’ | sudo -E bash
- 安装/更新 RabbitMQ 仓库:
- curl -1sLf ‘https://dl.cloudsmith.io/public/rabbitmq/rabbitmq-server/setup.deb.sh’ | sudo -E bash
- 执行升级:
- sudo apt-get update
- sudo apt-get install --only-upgrade rabbitmq-server
- 如需指定版本(不建议跨大版本随意指定,务必先核对 Erlang 兼容矩阵):
- 查询可用版本:apt-cache madison rabbitmq-server
- 安装指定版本:sudo apt-get install rabbitmq-server=3.x.y-z
- 重启并验证同上。
四 常见问题与回滚
- 依赖或版本冲突导致升级失败:
- 先确保已添加 Cloudsmith 新版 Erlang 与 RabbitMQ 仓库,再执行升级;必要时执行 sudo apt-get -f install 修复依赖。
- 若仍冲突,考虑短暂停机,按“备份 → 清理旧包 → 新仓库安装目标版本 → 恢复定义”的流程进行。
- 回滚方案:
- 使用备份的定义文件恢复:sudo rabbitmqctl import_definitions /root/rabbit-backup-defs.json
- 若跨大版本回滚,优先在相同 Erlang 版本下重装目标版本的 RabbitMQ,再导入定义。
- 远程登录默认账户限制:
- guest/guest 默认仅允许 localhost 登录。升级后如需远程管理,创建新管理员并赋权:
- 新增用户:sudo rabbitmqctl add_user admin StrongPass!
- 赋权:sudo rabbitmqctl set_user_tags admin administrator
- 可选:sudo rabbitmqctl set_permissions -p / admin “." ".” “.*”。