支持机架的Kafka:重新分配不包括所有机架的分区

时间:2018-09-19 14:34:48

标签: apache-kafka

我正在尝试将非机架感知的kafka配置转换为机架感知。我的设置如下:

6个经纪人,跨越同一地区的3个不同的AWS AZ(每个AZ中有2个经纪人)。

- AZ-1a
     broker1 (brokerID: 1) has setting 'broker.rack=aws-az-1a'
     broker2 (brokerID: 2) has setting 'broker.rack=aws-az-1a'

- AZ-1b
     broker3 (brokerID: 3) has setting 'broker.rack=aws-az-1b'
     broker4 (brokerID: 4) has setting 'broker.rack=aws-az-1b'
- AZ-1c
     broker5 (brokerID: 5) has setting 'broker.rack=aws-az-1c'
     broker6 (brokerID: 6) has setting 'broker.rack=aws-az-1c'

总共3个机架,每个机架中有2个经纪人。

我有一个带有12个分区的kafka主题“ xyz”,复制因子为3。

以前,由于复制因子超过了任何特定AZ中的代理数目(3比2),因此我们保证可以在多个AZ中拥有一个副本。

但是,让我们知道配置机架,我希望它能够在3个可用区中每个都有1个副本。

我会生成一个“分区重新分配配置”文件,如下所示;

./kafka-reassign-partitions.sh --zookeeper $ZK --generate --topics-to-move-json-file topics-to-move.json --broker-list '1,2,3,4,5,6'

其中topic-to-move.json包含:

{"topics": [{"topic": "xyz"}],
 "version":1
}

我遇到的问题是,当我生成“建议的分区重新分配配置”时收到的输出似乎只从2个可用区/机架中选择代理。总是遵循这样的原则:先选择一个机架,然后再选择另一个,然后再选择第一个机架。

即:rack1,rack2,rack1

我的感觉是我缺少一些细微的东西。在使用“ broker.rack”的值更新每个代理上的属性文件时,kafka重新启动。但是,我仍然无法获得“建议的分区重新分配配置”来覆盖所有3个机架(每个机架一个副本)。

似乎没有太多关于此的文档(这使我相信它应该非常简单)。但是,到目前为止,我还无法实现完全了解机架的配置。

0 个答案:

没有答案