Erlang 版本要求
简介
本指南涵盖了 Erlang/OTP 版本要求、Erlang 版本支持策略、RabbitMQ/Erlang 兼容性矩阵、特定版本的注意事项以及获取最新 Erlang/OTP 发行版的方法。
Erlang 28 仅支持全新的集群:将运行 Khepri 的 RabbitMQ 集群从 Erlang 27 升级到 Erlang 28 存在已知问题,该问题会影响滚动升级。
Erlang 版本支持策略
RabbitMQ 通常支持最新的两个 Erlang 发布系列。
在新的 Erlang/OTP 主版本发布后的几个月过渡期内(通常为每年 5 月至 8 月),最新系列可能不会立即得到支持,而此前最旧的系列除了最新的两个系列外,还可以额外维持几个月的支持。
目前完全支持的系列是 Erlang 27.x 和 26.x。
Erlang 28 支持
RabbitMQ 4.2.x 部分支持 Erlang 28:升级运行 Khepri 的集群时,存在与 Erlang 28 中的重大变更直接相关的已知问题。
Erlang 27 支持
从 RabbitMQ 4.0.4 开始支持 Erlang 27。
Erlang 26 支持
从 RabbitMQ 3.12.0 开始支持 Erlang 26。
RabbitMQ 与 Erlang/OTP 兼容性矩阵
下表提供了当前受支持的 RabbitMQ 发布系列的 Erlang 兼容性矩阵。对于已停止支持(EOL)的 RabbitMQ 版本,请参阅不受支持系列的兼容性矩阵。
| RabbitMQ 版本 | 最低要求的 Erlang/OTP | 最高支持的 Erlang/OTP | 备注 |
|---|---|---|---|
|
|
|
|
|
|
|
重要 4.0.4 之前的 RabbitMQ 版本与 Erlang 27 不兼容。 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
作为指导原则,建议使用每个受支持的 Erlang/OTP 系列的最新次要版本和补丁版本。
获取最新的 Erlang 发行版
可以从多个来源获取最新版本
- Team RabbitMQ Debian 仓库 或 Launchpad
- 来自 Team RabbitMQ 的零依赖 Erlang RPM,也可从
dnf/yum仓库获取 - 作为 RabbitMQ Docker 镜像的一部分
- erlang.org 为 Windows 提供补丁版本的二进制构建包
- 使用 kerl 从源代码构建
在 Debian 或 Ubuntu 上安装 Erlang/OTP
标准的 Debian 和 Ubuntu 仓库提供 Erlang/OTP,但它被大量拆分成数十个包。此外,除非系统启用了向后移植(backport)仓库,否则版本往往非常陈旧。有关必需包、依赖项和替代 apt 仓库的更多信息,请参阅 Debian 和 Ubuntu 安装指南。
在 RHEL、CentOS 和 Fedora 上安装 Erlang/OTP
有多个适用于 Erlang/OTP 的 RPM 包。推荐的选项是来自 RabbitMQ 团队的 零依赖 Erlang RPM。它紧跟最新的 Erlang/OTP 补丁版本发布计划。
有关可用选项的更多信息,请参阅 CentOS、RHEL 和 Fedora 安装指南。
集群中的 Erlang 版本
强烈建议在所有集群节点上使用相同的主版本的 Erlang(例如 25.x)。
当节点加入集群时,RabbitMQ 会检查 Erlang 及其分布式库的内部协议版本,如果检测到潜在的不兼容组合,将拒绝集群。
除了合理的长时间升级窗口外,建议所有节点使用完全相同的 Erlang 版本。
从源代码构建 Erlang
如果给定的操作系统没有足够新的 Erlang 包,则可以从源代码构建 Erlang/OTP。这需要一个满足 Erlang 构建依赖项的构建环境,例如现代版本的 OpenSSL。
kerl 使从源代码构建 Erlang/OTP 发行版(包括 GitHub 上的特定标签)变得更加轻松。
较旧的 RabbitMQ 和 Erlang 版本
不受支持的 RabbitMQ 系列
| 不受支持的 RabbitMQ 系列 | 最低要求的 Erlang/OTP | 最高支持的 Erlang/OTP | 备注 |
|---|---|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
支持 R16B03 的最后一个版本
如果您绝对必须使用旧版本的 Erlang,RabbitMQ 3.6.14 是与 R16B03 兼容的最新版本。
支持 R13B03 的最后一个版本
如果您绝对必须使用旧版本的 Erlang,RabbitMQ 3.5.8 是与 R13B03 兼容的最新版本。