我正在尝试将非机架感知的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个机架(每个机架一个副本)。
似乎没有太多关于此的文档(这使我相信它应该非常简单)。但是,到目前为止,我还无法实现完全了解机架的配置。