首页 > 解决方案 > 如何将所有 Kafka 主题转移到工作代理?

问题描述

我有一个开发环境,在 AWS 上有一个 Zookeeper 和一个 Kafka 代理。

我在现在已销毁foo的代理 () 上创建了一个主题 ( )。1001因此,该主题的领导者不可用:

$ ~/kafka/bin/kafka-topics.sh --describe --zookeeper ec2-99-999-999-999.compute-1.amazonaws.com:2181 --topic foo
Topic:foo   PartitionCount:2    ReplicationFactor:1 Configs:
    Topic: foo  Partition: 0    Leader: -1  Replicas: 1001  Isr: 1001
    Topic: foo  Partition: 1    Leader: -1  Replicas: 1001  Isr: 1001

但是,我有另一个经纪人可用:

$ ~/kafka/bin/zookeeper-shell.sh ec2-88-888-888-888.compute-1.amazonaws.com:2181 ls /brokers/ids
Connecting to ec2-88-888-888-888.compute-1.amazonaws.com:2181

WATCHER::

WatchedEvent state:SyncConnected type:None path:null
[1002]

我有两个问题:

标签: amazon-web-servicesapache-kafkaapache-zookeeper

解决方案


您可以使用该kafka-reassign-partitions.sh工具将该主题移至 broker 1002

文档详细信息中的自定义分区分配和迁移部分处理:

1) 创建自定义重新分配 JSON 文件,例如:

{"version":1,"partitions":[
    {"topic":"foo","partition":0,"replicas":[1002]},
    {"topic":"foo","partition":1,"replicas":[1002]},
    // for each partition
]}

2)将该jobb提交给重新分配工具:

bin/kafka-reassign-partitions.sh --zookeeper localhost:2181 \
    --reassignment-json-file custom-reassignment.json --execute

--verify3) 使用标志监控进度:

bin/kafka-reassign-partitions.sh --zookeeper localhost:2181 \
    --reassignment-json-file custom-reassignment.json --verify

推荐阅读