amazon-web-services - 如何将所有 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]
我有两个问题:
- 如何让这个新代理 (
1002
) 成为我的主题 ( ) 的领导者foo
? - 我怎样才能让这在未来自动发生?
解决方案
您可以使用该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
--verify
3) 使用标志监控进度:
bin/kafka-reassign-partitions.sh --zookeeper localhost:2181 \
--reassignment-json-file custom-reassignment.json --verify
推荐阅读
- php - 我怎样才能使这个功能更简单?未知的阵列深度
- erlang - Erlang 的 mod_esi 可以重定向吗?
- powershell - 通过 powershell 或 appcmd 将应用程序池设置为在多个特定时间回收不会在 GUI/IIS 中显示两次
- html - 使用 FlexBox 约束一半的页面内容
- android - 如何处理“无法启动活动 java.util.ConcurrentModificationException”
- vim - VS Code Vim 模式(在光标下打开文件)
- javascript - 重构 map、reduce 和 double for 循环 - javascript es6
- c# - 在十进制列 EF core + SQlite 上本地评估的求和查询
- azure - 使用 ARM 模板启用对 REST API 的 API 管理访问
- python - 当我们在终端python中输入时如何在窗口中继续运行游戏