Erlang 版本要求
简介
本指南涵盖 Erlang/OTP 版本要求、Erlang 版本支持策略、RabbitMQ/Erlang 兼容性矩阵、特定版本说明以及获取最新 Erlang/OTP 版本的方法。
Erlang 28 在 RabbitMQ 4.2.x 中得到部分支持:运行 Khepri 的集群升级在 Erlang 28 中存在直接相关的已知问题,因为其进行了破坏性更改。
支持的 Erlang 版本策略
RabbitMQ 通常支持最近两个 Erlang 发行系列。
在每年 5 月至 8 月之间,新的主要 Erlang/OTP 版本发布后的几个月过渡期内,最新系列不会立即获得支持,而前一个最旧的系列可能会在最近两个系列之外再额外支持几个月。
目前完全支持的系列是 Erlang 27.x 和 26.x。
Erlang 28 支持
Erlang 28 在 RabbitMQ 4.2.x 中得到部分支持:运行 Khepri 的集群升级在 Erlang 28 中存在直接相关的已知问题,因为其进行了破坏性更改。
Erlang 27 支持
从 RabbitMQ 4.0.4 开始支持 Erlang 27。
Erlang 26 支持
从 RabbitMQ 3.12.0 开始支持 Erlang 26。
RabbitMQ 和 Erlang/OTP 兼容性矩阵
下表提供了目前支持的 RabbitMQ 发行系列的 Erlang 兼容性矩阵。对于已达到生命周期结束的 RabbitMQ 版本,请参阅不受支持的系列兼容性矩阵。
| RabbitMQ 版本 | 最低要求的 Erlang/OTP | 最高支持的 Erlang/OTP | 备注 |
|---|---|---|---|
|
|
|
|
|
|
|
|
|
|
|
重要 RabbitMQ 版本 4.0.4 之前的版本与 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 兼容的最新版本。