我正在运行具有多个生产者和消费者的单个 Kafka 服务器。现在我想通过添加另一个代理来实现 Kafka 集群。如何通过使用具有复制因子的相同主题来做到这一点。
问问题
1123 次
1 回答
0
现在您要迁移到具有两个 kafka 代理的集群,那么您应该使用以下命令将分区数增加到两个。
kafka-topics --topic my-topic --alter --partitions 2 --zookeeper zoo1
# 观察分区数为 2 且 RF 为 1 的分区
kafka-topics --topic my-topic --describe --zookeeper zoo1
Topic:my-topic PartitionCount:2 ReplicationFactor:1 Configs:
Topic: my-topic Partition: 0 Leader: 0 Replicas: 1 Isr: 0
Topic: my-topic Partition: 1 Leader: 2 Replicas: 1 Isr: 1
增加现有主题的复制因子很容易。需要在自定义重新分配 json 文件中指定额外的副本,并与 --execute 选项一起使用。
创建增加复制因子.json
{"version":1,
"partitions":[
{"topic":"my-topic","partition":0,"replicas":[0,1]},
{"topic":"my-topic","partition":1,"replicas":[0,1]}
]}
执行以下命令
kafka-reassign-partitions --zookeeper localhost:2181 --reassignment-json-file increase-replication-factor.json --execute
您可以使用以下命令验证副本。
kafka-topics --zookeeper localhost:2181 --topic my-topic --describe
Topic: my-topic Partition: 0 Leader: 0 Replicas: 0,1 Isr: 0,1
Topic: my-topic Partition: 1 Leader: 1 Replicas: 0,1 Isr: 0,1
我建议您通过以下链接平均重新分配两个分区上的数据。
https://labs.tabmo.io/rebalancing-kafkas-partitions-803918d8d244 https://kafka.apache.org/documentation/#basic_ops_increase_replication_factor
希望对您有所帮助。
于 2019-05-29T08:38:37.190 回答