Skip to content

滚动升级

在集群中的 EMQX 节点可以一次一个地进行升级,无需停掉整个集群。这个过程被称为滚动升级。为了实现平滑的客户端会话迁移,在 EMQX 企业版中您可以使用集群重平衡功能,在升级节点之前将客户端从节点中迁移到其他节点。关于集群再平衡的更多信息,请参见此文档

升级到 EMQX 5.9 或更高版本的重要 License 说明

从 5.9.0 版本开始,EMQX 企业版采用商业源代码许可协议发布,替代了之前开源版与企业版分开的模式。

TIP

关于 License 变更的详细信息,请参阅 EMQX Licensing FAQ

尽管升级 EMQX 的技术步骤(如替换可执行文件)与之前版本类似,但从 5.9.0 开始引入了关键的 License 变更,特别是对于集群部署。如果您正从 5.9 之前的开源版本升级,或从单节点部署切换到集群部署,请务必注意以下几点:

  1. 新的 Licensing 模式:EMQX 5.9.0 及以上版本默认提供 EMQX 社区版 License。该 License 允许启用所有功能,但仅支持单节点部署。
  2. 集群要求:之前的开源版本支持集群部署。而在 5.9.0 及以上版本中,默认情况下不再支持集群功能。如果您希望保留集群能力,必须申请商业 License
  3. License 配置要求:在集群中启动任何运行 5.9.0 及以上版本的节点之前,必须在该节点上正确配置商业 License。如果未配置或配置错误,该节点将无法在集群中正常工作。

注意

如果在 emqx.conf 中添加 License 的配置,那么来自 Dashboard、HTTP API 或 CLI 的更改会在节点重启后失效, 这是因为节点启动加载配置时,emqx.conf 和环境变量具有最高优先级。

EMQX 5.10 或更高版本的滚动升级注意事项

从 EMQX 5.10.0 开始,仅支持 v2 路由表。旧版的 v1 路由表(在 5.4.0 之前的版本中为默认)已不再兼容。因此,仍在使用 v1 路由表的集群(尤其是从早期版本逐步滚动升级而来的集群)无法执行滚动升级到 5.10.0 或更高版本。

重要说明

如果你的集群仍使用 v1 路由表,必须执行整集群重启以完成升级。

检查当前路由表

在升级前,可以通过以下命令检查集群当前使用的路由表:

$ emqx eval 'emqx_router:get_schema_vsn()'
  • 如果输出为 v2,则可以正常执行滚动升级。
  • 如果输出为 v1,则需要按照下方步骤执行整集群重启。

升级使用 v1 路由表的集群

如果你的集群当前使用 v1 路由表,请按照以下步骤升级到 EMQX 5.10.0 或更高版本:

  1. 停止集群中所有节点
  2. 删除所有配置文件中定义的 broker.routing.storage_schema 选项。
  3. 将所有节点升级到 5.10.0 或更高版本。
  4. 先启动核心节点。
  5. 再启动复制节点。

如何执行滚动升级

集群节点的滚动升级过程如下:

  1. 使用集群重平衡将客户端从节点中清除。(可选)
  2. 停止旧版本节点。
  3. 备份节点的配置文件和数据目录。
  4. 安装新版本的 EMQX。
  5. 启动新版本节点。

注意

在滚动升级期间,请勿进行集群范围的配置更改。从 Dashboard、HTTP API 或 CLI 进行的配置更改将应用于集群中的所有节点。在滚动升级期间进行配置更改可能会导致节点不同步。

使用 RPM 和 DEB 包进行升级

如果您使用的是 RPM 或 DEB 包,可以直接安装新版本包覆盖旧版本,以完成升级。

使用 Docker 进行升级

如果您使用的是 Docker 部署,可以通过拉取新版本镜像并重启容器的方式完成升级。

从开源版升级到企业版

如果您正在运行 EMQX 的开源版本,并希望升级到企业版,这个过程与升级到开源版的新版本相同。

在安装和升级方面,EMQX 的开源版和企业版没有区别。唯一的注意点是,在每次升级后,您需要手动为企业版节点配置您的 License, 但是在所有节点升级之前,不能将 License 应用于整个集群。

例如,在 etc/base.hocon (如果升级到 e5.8.5 之前的版本,则在 etc/emqx.conf) 中添加以下行:

license.key = "你的 license"

注意

如果在 emqx.conf 中添加 License 的配置,那么来自 Dashboard、HTTP API 或 CLI 的更改会在节点重启后失效, 这是因为节点启动加载配置时,emqx.conf 和环境变量具有最高优先级。

OSZAR »