启动多个Kafka经纪人失败

The*_*0s3 11 apache-kafka

在尝试使用不同的brokerId启动多个Kafka代理时.一个是默认值server.properties,另一个是serverTest.properties2行更改,那些是broker.id=1listeners=PLAINTEXT://localhost:6000.其余的是默认设置.我首先启动zookeeper,然后是默认的kafka server.properties然后启动时serverTest.properties我得到以下异常:kafka.common.InconsistentBrokerIdException: Configured brokerId 1 doesn't match stored brokerId 0 in meta.properties.我的理解是,上面的内容实际上应该启动多个节点,正如我在其他人看到的教程中所做的那样.我正在使用Kafka 9.0.

Pan*_*tos 14

编辑config/serverTest.properties并替换现有的配置值,如下所示:

broker.id=2
port=9093
log.dir=/tmp/kafka-logs-2
Run Code Online (Sandbox Code Playgroud)

如果你想要第三个经纪人:

cp config/server.properties config/server3.properties
Run Code Online (Sandbox Code Playgroud)

编辑config/server3.properties并替换现有的配置值,如下所示:

broker.id=3
port=9094
log.dir=/tmp/kafka-logs-3
Run Code Online (Sandbox Code Playgroud)

如果你在不同的机器上运行,你必须改变

advertised.host.name=192.168.x.x
Run Code Online (Sandbox Code Playgroud)

否则,如果您在同一台vmware机器上运行,例如,您应该只更改端口和log.dir,如上所述

  • 端口 6000 是 X Windows 的默认端口,因此请确保没有与 Kafka 无关的其他冲突。最好避免整个 6000-6063 范围 - http://www.networksorcery.com/enp/protocol/xwindow.htm (2认同)

小智 8

并且,根据经验,不要忘记编辑kafka-logs - */meta.properties文件中的broker.id条目以匹配您的更改(或删除文件并让kafka重新生成它们).


Bik*_*wal 7

这是一个老问题,这个答案仍然可以帮助别人.问题是当您从现有的server.properties创建新的server.properties时,下面的行将被复制:

# A comma separated list of directories under which to store log files
log.dirs=/tmp/kafka-logs
Run Code Online (Sandbox Code Playgroud)

因此,即使是新的代理也尝试使用相同的日志目录,因此它使用kafka-logs的meta.properties,它由代理0创建并且代理ID为0.

所以,去到/ tmp和删除所有卡夫卡日志*文件,然后发表意见log.dirs=/tmp/kafka-logs ,然后添加以线条为你添加了:)


cha*_* ly 5

答案是完美的,但我花了一段时间才弄清楚才能让它发挥作用。我想分享我的错误,并希望其他人能够避免它。

我在这里跟着 kafka 的官方教程:

https://kafka.apache.org/quickstart#quickstart_multibroker

并按照指南中的建议制作文件副本:

cp config/server.properties config/server-1.properties
Run Code Online (Sandbox Code Playgroud)

我使用vim打开文件。我搜索broker.id并替换为以下内容(假设没有现有的侦听器log.dirs 错误),如下所示


# config/server-1.properties:
broker.id=1
listeners=PLAINTEXT://:9093
log.dirs=/tmp/kafka-logs-1

Run Code Online (Sandbox Code Playgroud)

我开始了一个新的经纪人

cp config/server.properties config/server-1.properties
Run Code Online (Sandbox Code Playgroud)

崩溃了!!!。这是我调试的方式:

我去了/tmp并检查了目录kafka-logs-1没有出现。我意识到配置中的 log.dir 应该有问题。我在 config/server-1.propeties 中仔细检查了它。我发现有两行log.dirs。

#copy from the tutorial
log.dirs=/tmp/kafka-logs-1


# default one
log.dirs=/tmp/kafka-logs

Run Code Online (Sandbox Code Playgroud)

当然,最后一个覆盖了第一个,从而使新代理指向第一个 id=0 的代理。

删除最后一个 log.dirs 并只保留一个 log.dirs(log.dirs=/tmp/kafka-logs-1)后,就像一个魅力。