kafka升级
Upgrading from 0.8.x, 0.9.x, 0.10.0.x, 0.10.1.x or 0.10.2.x to 0.11.0.x
升级之前的引言
kafka-0.11.0.x引入了一个新的消息格式版本和线协议,通过遵循以下的滚动升级计划,可以实现不停服务完成升级。
从0.10.2版本开始,Java客户端(生产者和消费者)是可以和旧版本通信的,而0.11.0客户端只可以与0.10.0之后的版本通信。如果现有集群的broker老于0.10.0版本,那么必须在升级客户端之前,先升级kafka集群中所有的broker。0.11.0版本的kafka broker支持0.8.x以上版本的客户端
滚动升级
1. 更新所有broker的server.properties文件,并添加以下属性:
inter.broker.protocol.version=CURRENT_KAFKA_VERSION (如:0.8.2.0, 0.9.0.0或0.10.0.0).
log.message.format.version=CURRENT_KAFKA_VERSION (有关此配置的详细信息,请查看升级后潜在的性能影响。)
2. 每次升级一个broker:关闭broker,替换新版本,然后重新启动它。
3. 一旦整个群集升级,通过编辑server.properties中的inter.broker.protocol.version并将其设置为0.11.0.x来转换所有协议,但现在不要修改log.message.format.version
4. 逐个重新启动broker,使新协议版本生效。
5. 当所有的消费者升级到0.11.0以上版本时,再修改kafka broker的server.properties的log.message.format.version为0.11.0.然后再逐个重启broker。注意旧版本的消费者是不支持新版本消息格式的,所以为了避免下变频的性能开销,尽量使用新的Java消费者。
说明
1.如果可接受停机,你可以简单地将所有broker关闭,更新版本并重启启动,它们将默认从新版本开始。
2.变换协议版本和重启启动可以在broker升级完成后的任何时间去做,不必马上做。
3.在变更log.message.format.version全局设置之前依旧可以使用topic管理工具(bin/kafka-topics.sh)
4.如果是从0.10.0之前的版本升级,那么massage format不必要在0.11.0之前先更新设置0.10.0