人工搭建及运维Kafka集群是一件繁琐的事,特别涉及到集群的升级,很容易出问题。
而MSK的集群升级,只需要一键点击,并且在升级的过程中,业务是正常运作的
为了演示集群在升级过程中,业务是正常动作的,我们打开两个terminal:
然后进行升级操作, 并观察升级操作中Producer和Consumer是否会持续正常工作。
创建一个topic:topic-for-update
,并每隔一秒每里面写数据
kafka-topics --bootstrap-server $BROKERS --create --replication-factor 3 --partitions 10 --topic topic-for-update # 创建topic
for x in {1..10000}; do echo $x; sleep 1; done | kafka-console-producer --bootstrap-server $BROKERS --topic topic-for-update
持续从Procuer里取数据,每秒会打印新获取的数据
kafka-console-consumer --bootstrap-server $BROKERS --topic topic-for-update
在控制台点击Upgrade
:
选择目标版本,并进行升级。
升级过程中会有进度条实时提示:
在升级过程中,可以看到producer和consumer两端均有WARN文本输出,但这并不会影响到生产环境,因为consumer端照常可以取到完整的数据:
升级大概持续2个小时结束:
在升级前,要保证:
1. 所有topic的RF(Replication Factor)
> 1
2. min.insync.replicas
<= RF -1
从Kafka 0.10.2版本以后,Client和Broker之间有了bidirectional compatibility
(双向兼容)。比如:
这样升级起Kafka来就更没有业务压力,因为对Client端没有影响
参考:
https://www.confluent.io/blog/upgrading-apache-kafka-clients-just-got-easier/