温馨提示×

Ubuntu RabbitMQ版本如何选择与升级

小樊
35
2025-12-26 16:53:16
栏目: 智能运维

Ubuntu 下 RabbitMQ 版本选择与升级指南

一 版本选择要点

  • 优先选择仍在维护的 Ubuntu LTS 版本:20.04(Focal)22.04(Jammy)24.04(Noble),并配套安装与之兼容的 Erlang/OTPRabbitMQ 版本,避免系统自带仓库的滞后版本。RabbitMQ 对 Erlang 有严格兼容矩阵,部署前务必核对。官方支持矩阵与安装指引见:rabbitmq.com/which-erlang 与 RabbitMQ 官方 APT 仓库说明。对于 Ubuntu 24.04,可直接采用 RabbitMQ 4.x 系列。
  • 版本系列建议:新环境优先 4.x(功能与维护更优);若应用依赖 3.12/3.13 的特定行为或客户端 SDK,可继续选择 3.12/3.13 LTS 系列。注意 3.13.0+ 强制要求 Erlang 26.x4.0.0+ 支持 Erlang 27.x
  • 安装方式建议:使用 RabbitMQ 官方 APT 仓库(同时添加 erlang 仓库),可自动解决依赖、便于升级与回滚;避免仅用系统自带旧版本。若无法使用 APT,可备选 DEB 包安装,但需自行处理依赖。

二 版本兼容速查表

RabbitMQ 版本 所需 Erlang/OTP 说明
4.0.0+ 27.x 新特性与性能改进,建议新项目采用
3.13.x 26.x(3.13.0+ 强制) 3.x 系列较新 LTS,兼容多数存量生态
3.12.x 26.x 3.x LTS,适合需要稳定性的场景

说明:上表为常见兼容关系,生产部署前请以官方“Which Erlang”页面为准,并结合实际依赖验证。

三 APT 安装与版本锁定(Ubuntu 20.04/22.04/24.04)

  • 准备与导入密钥
    • 安装工具:sudo apt-get update && sudo apt-get install -y curl gnupg apt-transport-https
    • 导入密钥:curl -1sLf "https://keys.openpgp.org/vks/v1/by-fingerprint/0A9AF2115F4687BD29803A206B73A36E6026DFCA" | sudo gpg --dearmor | sudo tee /usr/share/keyrings/com.rabbitmq.team.gpg > /dev/null
  • 添加官方仓库(以 Noble 为例,其他版本替换为 jammy/focal;Debian 替换为 debian 路径)
    • 写入源列表:
      sudo tee /etc/apt/sources.list.d/rabbitmq.list <<EOF
      ## Modern Erlang/OTP releases
      deb [arch=amd64 signed-by=/usr/share/keyrings/com.rabbitmq.team.gpg] https://deb1.rabbitmq.com/rabbitmq-erlang/ubuntu/noble noble main
      deb [arch=amd64 signed-by=/usr/share/keyrings/com.rabbitmq.team.gpg] https://deb2.rabbitmq.com/rabbitmq-erlang/ubuntu/noble noble main
      ## Latest RabbitMQ releases
      deb [arch=amd64 signed-by=/usr/share/keyrings/com.rabbitmq.team.gpg] https://deb1.rabbitmq.com/rabbitmq-server/ubuntu/noble noble main
      deb [arch=amd64 signed-by=/usr/share/keyrings/com.rabbitmq.team.gpg] https://deb2.rabbitmq.com/rabbitmq-server/ubuntu/noble noble main
      EOF
      
  • 安装与锁定版本
    • 更新索引:sudo apt-get update
    • 安装组件:sudo apt-get install -y erlang-base erlang-asn1 erlang-crypto ...(可按需精简)与 rabbitmq-server
    • 查看可用版本:apt list -a rabbitmq-server
    • 安装指定版本(示例):sudo apt-get install -y rabbitmq-server=3.13.7-1
    • 锁定当前版本(防误升级):echo "rabbitmq-server hold" | sudo dpkg --set-selections
  • 启用管理插件与基础验证
    • 启用插件:sudo rabbitmq-plugins enable rabbitmq_management
    • 访问管理界面:浏览器打开 http://<服务器IP>:15672(默认账号 guest/guest,仅本机可登录;生产请创建管理员并授权)

四 就地升级步骤(同一大版本内与跨小版本)

  • 升级前
    • 备份:持久化队列数据目录 /var/lib/rabbitmq/mnesia、配置文件 /etc/rabbitmq/rabbitmq.conf、插件与用户配置
    • 检查兼容性:确认目标 RabbitMQErlang/OTP 满足官方矩阵
    • 维护窗口与通知:在业务低峰期执行,避免消息堆积与连接中断
    • 集群场景:逐台滚动升级,保持多数节点存活,避免一次性全停
  • 执行升级
    • 取消锁定:echo "rabbitmq-server install" | sudo dpkg --set-selections
    • 执行升级:sudo apt-get update && sudo apt-get install -y rabbitmq-server
    • 重启服务:sudo systemctl restart rabbitmq-server
    • 验证:sudo rabbitmqctl statussudo rabbitmq-diagnostics status、管理界面检查队列与连接
  • 回滚
    • 指定旧版本重装:sudo apt-get install -y rabbitmq-server=<旧版本号>
    • 恢复配置与数据目录后重启
  • 跨大版本(如 3.13 → 4.x
    • 先核对 Erlang/OTP 是否满足 4.x(27.x) 要求;不满足则先升级 Erlang
    • 建议在测试环境充分验证客户端兼容性、插件与策略配置后再行升级
    • 集群升级保持同版本,避免混合大版本导致元数据/插件不一致

五 Docker 场景的版本选择与升级

  • 镜像标签语义
    • rabbitmq:management:指向“当前默认稳定大版本 + 管理插件”,未来可能随官方版本自动升级
    • rabbitmq:4-management:明确锁定 4.x 系列,适合生产稳定与可预期升级节奏
  • 推荐实践(示例)
    • 使用标签:image: rabbitmq:4-management
    • 端口:5672(AMQP)、15672(管理)
    • 环境变量:设置 RABBITMQ_DEFAULT_USER / RABBITMQ_DEFAULT_PASS
    • 数据持久化:挂载 /var/lib/rabbitmq/var/log/rabbitmq
    • 资源与健康检查:适当设置 ulimitshealthcheck
    • 注意:4.x 起不推荐通过环境变量设置内存水印(如 RABBITMQ_VM_MEMORY_HIGH_WATERMARK),避免告警或报错

0