一、需求描述
一个分区可以有多个副本,这些副本保存在不同的broker上,可实现kafka高可用。每个分区的副本中都会有一个作为Leader。当一个broker失败时,Leader在这台broker上的分区都会变得不可用,kafka会自动移除Leader,再其他副本中选一个作为新的Leader。
假如我们目前kafka集群环境中的topic没有副本,可通过如下方法增加topic的副本
二、操作步骤
2.1 查看某个topic当前的分区及副本信息
输入命令:
bin/kafka-topics.sh --zookeeper 192.168.86.150:2181,192.168.86.151:2181,192.168.86.156:2182 --describe --topic edge-raw-cloud-data-sync
可以看到“Replicas: 1”,说明这个topic只有1个副本
2.2 制定分区及副本分配策略
注意修改下面文件中的topic为自己的topic,注意修改里面的partition,replicas,这里我分区还是保持原来一样是一个分区,但是副本数修改为2个。
输入命令:
vim /opt/test.json
输入以下内容:
{
"version": 1,
"partitions": [
{
"topic": "edge-raw-cloud-data-sync",
"partition": 0,
"replicas": [
0,
1
]
}
]
}
保存文件并退出
2.3 为Topic增加副本
输入命令:
bin/kafka-reassign-partitions.sh --zookeeper 192.168.86.150:2181,192.168.86.151:2181,192.168.86.156:2182 --reassignment-json-file /opt/test.json --execute
显示成功信息
2.4 验证副本是否添加成功
输入命令:
bin/kafka-topics.sh --zookeeper 192.168.86.150:2181,192.168.86.151:2181,192.168.86.156:2182 --describe --topic edge-raw-cloud-data-sync
可以看到Replicas变成了0,1。说明副本添加成功了