ERROR Invalid config, Kafka集群异常退出

ERROR Invalid config, exiting abnormally in Kafka cluster

我有三个不同的节点,每个节点上都有 docker 和 Ubuntu。我可以在本地 docker 上 运行 zookeeper 服务器(我的意思是没有任何集群配置),但我想用这三个节点制作 kafka 集群;事实上,我在每个节点上都安装了 docker,并在其上加载了 Ubuntu。我在 docker 环境中为“150.20.11.157”配置 "zookeeper.properties",如下所示:

dataDir=/tmp/zookeeper/data
tickTime=2000
initLimit=10
syncLimit=5
server.1=0.0.0.0:2888:3888
server.2=150.20.11.134:2888:3888
server.3=150.20.11.137:2888:3888
clientPort=2186

对于节点150.20.11.134,"zookeeper.properties"在docker环境下的文件是这样的:

dataDir=/tmp/zookeeper/data
tickTime=2000
initLimit=10
syncLimit=5
server.1=150.20.11.157:2888:3888
server.2=0.0.0.0:2888:3888
server.3=150.20.11.137:2888:3888
clientPort=2186

对于节点150.20.11.137,docker环境下的"zookeeper.properties"文件是这样的:

dataDir=/tmp/zookeeper/data
tickTime=2000
initLimit=10
syncLimit=5
server.1=150.20.11.157:2888:3888
server.2=150.20.11.134:2888:3888
server.3=0.0.0.0:2888:3888
clientPort=2186

此外,对于节点 150.20.11.157,我这样设置 "server.properties":

broker.id=0
port=9092
listeners = PLAINTEXT://150.20.11.157:9092
log.dirs=/tmp/kafka-logs 
zookeeper.connect=150.20.11.157:2186,150.20.11.134:2186,
150.20.11.137:2186

"server.properties" 对于节点 150.20.11.134 是:

broker.id=1
port=9092
listeners = PLAINTEXT://150.20.11.134:9092
log.dirs=/tmp/kafka-logs 
zookeeper.connect=150.20.11.157:2186,150.20.11.134:2186,
150.20.11.137:2186

"server.properties" 对于节点 150.20.11.137 是:

broker.id=2
port=9092
listeners = PLAINTEXT://150.20.11.137:9092
log.dirs=/tmp/kafka-logs 
zookeeper.connect=150.20.11.157:2186,150.20.11.134:2186,
150.20.11.137:2186

问题是当我在每个节点的 docker 上 运行 zookeeper 服务器时。我收到此错误:

[2019-01-16 12:45:54,588] 信息读取配置来自:./config/zookeeper.properties
(org.apache.zookeeper.server.quorum.QuorumPeerConfig)

[2019-01-16 12:45:54,601] INFO 解析主机名:172.28.10.137 到地址:/172.28.10.137 (org.apache.zookeeper.server.quorum.QuorumPeer)

[2019-01-16 12:45:54,603] 信息解析的主机名:0.0.0.0 到地址:/0.0.0.0 (org.apache.zookeeper.server.quorum.QuorumPeer)

[2019-01-16 12:45:54,603] INFO 解析主机名:172.28.10.157 到地址:/172.28.10.157 (org.apache.zookeeper.server.quorum.QuorumPeer)

[2019-01-16 12:45:54,603]信息默认为多数法定人数(org.apache.zookeeper.server.quorum.QuorumPeerConfig)

[2019-01-16 12:45:54,604] ERROR 无效配置,异常退出(org.apache.zookeeper.server.quorum.QuorumPeerMain)

org.apache.zookeeper.server.quorum.QuorumPeerConfig$ConfigException:处理错误。/config/zookeeper.properties
    在 org.apache.zookeeper.server.quorum.QuorumPeerConfig.parse(QuorumPeerConfig.java:156)
    在 org.apache.zookeeper.server.quorum.QuorumPeerMain.initializeAndRun(QuorumPeerMain.java:104)
    在 org.apache.zookeeper.server.quorum.QuorumPeerMain.main(QuorumPeerMain.java:81)
原因:java.lang.IllegalArgumentException:/tmp/zookeeper/data/myid 文件丢失
    在 org.apache.zookeeper.server.quorum.QuorumPeerConfig.parseProperties(QuorumPeerConfig.java:408)
    在 org.apache.zookeeper.server.quorum.QuorumPeerConfig.parse(QuorumPeerConfig.java:152)
... 还有 2 个

配置无效,异常退出

你能告诉我如何拥有一个包含三个 docker 且每个 docker 位于一个物理节点上的 Kafka 集群吗?

提前致谢。

我也 运行 喜欢这个。

我认为这个线索在日志中,即

Caused by: java.lang.IllegalArgumentException: /tmp/zookeeper/data/myid file is missing at org.apache.zookeeper.server.quorum.QuorumPeerConfig.parseProperties(QuorumPeerConfig.java:408)

您的 zookeeper.properties 文件中的以下行提供了 zookeeper 整体的详细信息:

server.1=0.0.0.0:2888:3888
server.2=150.20.11.134:2888:3888
server.3=150.20.11.137:2888:3888

当其中一个 zookeeper 服务器启动时,它通过查看其自己的数据目录中的 myid 文件知道它是哪个服务器,在本例中为 /tmp/zookeeper/data.

因此,您需要做的只是在每个服务器的上述目录中创建一个名称为 myid 的文件,并写入 x = 123(这些对应于 zookeeper.properties 文件中的 server.x)。

参考 link - Apache Zookeeper.

希望对您有所帮助!