升级Pulsar broker至2.10.1可否不升级BookKeeper等组件
Pulsar 2.6.3 Broker 升级至2.10.1的组件兼容性结论
明确结论:不支持仅升级Broker、保留BookKeeper/ZooKeeper为2.6.3版本的操作,跨3个大版本的跨度下,组件协议、数据格式已经存在大量不兼容项,强行操作大概率导致集群不可用,核心注意点如下:
- 协议层直接不兼容:Pulsar 2.10.1绑定的BookKeeper客户端版本远高于2.6.3配套的BookKeeper服务端,两者在Ledger元数据结构、Managed Ledger索引编码、entry校验规则上都存在差异,Broker启动后会出现读写超时、Ledger解析失败、副本同步异常,极端情况会直接损坏已存储的消息数据。
- 元数据结构不匹配:从2.7.0版本开始,Pulsar对ZooKeeper中存储的集群配置、Topic策略、权限规则等元数据结构做了多次新增和调整,旧版本ZooKeeper上虽然能写入新数据,但Broker的元数据初始化、集群选主、配置同步逻辑会出现大量异常,直接表现为选主失败、Topic策略不生效、权限校验报错。
- 升级路径不符合规范:跨大版本升级不能直接从2.6.3跳升到2.10.1,必须按相邻版本逐阶滚动升级,标准路径为
2.6.3 -> 2.7.x -> 2.8.x -> 2.9.x -> 2.10.1,每一个版本升级阶段都要遵循先升级ZooKeeper、再升级BookKeeper集群、最后升级Broker集群的顺序,全组件版本对齐、集群运行稳定后再进入下一个版本的升级流程。
踩坑提示:之前有团队试过跨3个版本只升Broker,启动后直接报BookKeeper连接握手失败,所有Topic无法生产消费,回滚时因为已经写入了新版本格式的元数据,旧版本Broker也起不来,最后只能从备份恢复元数据,停服了近4个小时。
- 如果受资源限制必须缩小升级范围,最低要求也要把BookKeeper升级到4.14.x(即2.10.1 Pulsar绑定的BookKeeper版本)、ZooKeeper升级到3.6.x以上,且必须先在测试环境完成全链路功能验证、元数据兼容性测试、故障回滚验证,才能操作生产集群,绝对不能直接在生产环境跳版本升级。
内容的提问来源于stack exchange,提问作者Hoan
相关产品推荐
相关产品推荐

