温馨提示×

RabbitMQ在Ubuntu上如何更新版本

小樊
45
2025-12-08 23:34:53
栏目: 智能运维

在 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 “." ".” “.*”。

0