环境
现有环境(已有现有环境)
主机名 | IP | 角色 |
---|---|---|
node111/brokerid:111 | 10.0.10.111 | kafka 0.8.2.2/zookeeper |
node112/brokerid:112 | 10.0.10.112 | kafka 0.8.2.2/zookeeper |
node113/brokerid:113 | 10.0.10.113 | kafka 0.8.2.2/zookeeper |
升级后环境
主机名 | IP | 角色 |
---|---|---|
node111/brokerid:111 | 10.0.10.111 | kafka 2.1.0/zookeeper |
node112/brokerid:112 | 10.0.10.112 | kafka 2.1.0/zookeeper |
node113/brokerid:113 | 10.0.10.113 | kafka 2.1.0/zookeeper |
查看当前KAFKA版本号
1 | [root@node111 config]# cd /opt/kafka |
升级JDK
1 | 新版本KAFKA要求JDK版本≥1.8,故需要提前升级JDK,否则会报如下经典错误: |
1 | tar -zxf jdk-8u201-linux-x64.tar.gz |
1 | #JDK |
1 | source /etc/profile |
一、配置KFAKA-2.1.0
0.8.2核心配置-以node111为例
1 | broker.id=111 |
2.1.0核心配置-以node111为例
1 | broker.id=111 |
重复以上步骤,将node112和node113 KAFKA安装配置完毕。
注意事项
1 | -- 新版本与旧版本的log.dirs指定相同的路径,否则会导致信息丢失 |
二、 关闭老实例,启动新实例
- 对于0.8.1.x版本
1 | 在Kafka-0.8.1.x版本中,Kafka源码中/kafka/admin/目录下有ShutdownBroker这个类,可以通过这个类实现优雅下线 |
- 对于0.8.2+版本
1 | afka.admin.ShutdownBroker这个类被移除了,因此不能通过上述方法实现停机。 |
将node111节点老版本KAFKA实例停止运行
1 | [root@node111 config]# jps -m |
启动node111节点新版本KAFKA实例
1 | 【新版本支持】以守护方式启动kafka |
其他节点也是通过这种方法实现服务停止和服务启动
验证kafka新版本
1 | [root@node111 ~]# cd /opt/kafka_2.12-2.1.0/ |
三、更新协议版本
1 | 当集群中所有KAFKA节点都升级完毕后,就开始逐个升级protocol版本了,通过inter.broker.protocol.version这个配置选项,设置为2.1.0 |
1 | sed -i 's/inter.broker.protocol.version=0.8.2.2/inter.broker.protocol.version=2.1.0/' /opt/kafka_2.12-2.1.0/config/server.properties |
1 | 验证配置文件修改 |
1 | 重启KAFKA节点使新协议生效 |
其他kafka节点也需要逐一修改和节点重启
四、更新日志格式版本
1 | 通过log.message.format.version参数更新日志格式版本,设置为2.1.0 |
1 | sed -i 's/log.message.format.version=0.8.2.2/log.message.format.version=2.1.0/' /opt/kafka_2.12-2.1.0/config/server.properties |
1 | 验证配置文件修改 |
1 | 重启KAFKA节点使新协议生效 |
其他kafka节点也需要逐一修改和节点重启
五、验证新版本KAFKA数据
1 | 查看topic list |
1 | 查看topic |
注意事项
1 | (1) 如果为生产环境不接受宕机,那么请严格按照此步骤进行滚动升级 |
参考:石头头头的博客
- 本文作者: GaryWu
- 本文链接: https://garywu520.github.io/2019/03/05/KAFKA版本滚动升级/
- 版权声明: 本博客所有文章除特别声明外,均采用 MIT 许可协议。转载请注明出处!