赞
踩
上一节我们完成了如下的内容:
现实业务中我们会遇到:当Kafka集群中有一个节点宕机了,比如Broker0、Broker1中,Broker1宕机了,此时由于我们配置了副本数为2,Kafka集群正常工作,提供生产和消费能力。
但是当我们修好Broker1之后,恢复宕机之后,发现Leader都是Broker0,不会再平衡到Broker1上,所以我们需要用脚本来让Kafka集群进行自动再平衡。
现实业务中与实际项目中,我们可能由于主题的副本因子设置问题,需要重新设置副本因子。
由于集群的扩展,需要重新设置副本因子。
Topic一旦使用又不能轻易删除重建,因此动态增加副本因子就成为最终的选择。
假设我们有两个KafkaBroker分别为:Broker0、Broker1
确保你有两台节点是可以正常使用的:
我这里是h121和h122
kafka-server-start.sh /opt/servers/kafka_2.12-2.7.2/config/server.properties
kafka-topics.sh --zookeeper h121.wzk.icu:2181 --create --topic topic_test_02 --partitions 3 --replication-factor 1
运行结果如下图:
kafka-topics.sh --zookeeper h121.wzk.icu:2181 --describe --topic topic_test_02
运行结果如下图:
可以看到跟我们的上一个实验的开头分配情况是一致的。
# 刚才 --create的时候 --replication-factor是1
kafka-topics.sh --zookeeper h121.wzk.icu:2181 --alter --topic topic_test_02 --replication-factor 2
我们可以观察到,是不允许我们这样操作的:
那如果我们业务上要求我们修改副本因子,我们该怎么办呢?
下面提供一个可行的方案。
所以我们需要借助 kafka-reassign-partitions.sh
新建一个文件,这里的JSON在replicase里写入了多个:
vim topic_test_02_increment-replication-factor.json { "versions": "1", "partitions": [ { "topic": "topic_test_02", "partition": 0, "replicas": [0,1] }, { "topic": "topic_test_02", "partition": 1, "replicas": [0,1] }, { "topic": "topic_test_02", "partition": 2, "replicas": [1,0] } ] }
我们写入的内容如下:
kafka-reassign-partitions.sh --zookeeper h121.wzk.icu:2181 --reassignment-json-file topic_test_02_increment-replication-factor.json --execute
观察执行的结果如下:
kafka-topics.sh --zookeeper h121.wzk.icu:2181 --describe --topic topic_test_02
执行的结果如下图所示:
可以看到,我们的副本数已经是 01、01、10了,此时就算 h121 或者 h122 中有一台节点挂掉了,我们也可以继续进行消费!
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。