开源版能否通过桥接新集群的方式完成集群的迁移

目前生产环境使用的是v5.0.8开源版,过往在测试环境,EMQX从v5.0.x 一路升到 v5.4.x,有太多配置不兼容的变更导致节点无法启动的经历。

生产环境目前接入的设备较多,所以不太可能会直接原地升级

  1. 升级会导致客户端大面积重连
  2. 版本跨度太多

所以咨询一下官方,开源版能否通过桥接到新集群的方式完成集群的升级迁移,或者还有其他什么更友好的方式,以及有哪些需要注意的地方

5.x 的频繁改动给你带来了麻烦,我深感抱歉。

我建议你暂时不要升级,保持使用老版本,一直到 emqx 6.x 开始研发的时候(可以观察 GitHub 仓库的 tag),再去升级到 emqx 5.x 的最新版本,那时 5.x 一定是稳定的,不再有不兼容改动的问题。

6.x 会考虑到从 5.x 到 6.x 的平滑升级,但你升级到 5.x 的时候,仍然无法避免断开连接,需要先部署并测试号稳定的 5.x 最新版集群,然后从老集群把客户端切换到新集群来。

好的,感谢回复。

再请教个问题,新旧集群并存的话,不可避免要解决 会话/客户端 同步的问题,因为通过DNS修改外部接入IP,因为DNS缓存的存在以及长连接的特性,仍然会有一部分客户端连接到旧集群,一部分客户端在新集群。

在这种场景下,我能想到的办法是,记录客户端接入的集群,每次连接成功时更新Endpoint,发布消息时查询目标客户端所接入的集群,再往对应集群的端口发送。

官方还有哪些推荐的实践

另外,6.x已经计划开始研发了吗

同时维护两个版本的集群会很麻烦,所以我还是建议一直等到合适的时候才升级。6.x 还没开始,现在 5.x 仍然没有完全稳定,我估计是在 6 个月之后会稳定下来。