ERROR 无效配置,Kafka集群异常退出

M_G*_*_Gh 1 apache-kafka docker apache-zookeeper

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

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
Run Code Online (Sandbox Code Playgroud)

对于节点150.20.11.134,docker环境中的“zookeeper.properties”文件是这样的:

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
Run Code Online (Sandbox Code Playgroud)

对于节点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
Run Code Online (Sandbox Code Playgroud)

另外,我为节点 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
Run Code Online (Sandbox Code Playgroud)

节点 150.20.11.134 的“server.properties”为:

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
Run Code Online (Sandbox Code Playgroud)

节点 150.20.11.137 的“server.properties”为:

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
Run Code Online (Sandbox Code Playgroud)

问题是当我在每个节点的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] INFO 解析主机名: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] INFO 默认为多数仲裁(org.apache.zookeeper.server.quorum.QuorumPeerConfig)

[2019-01-16 12:45:54,604] 错误配置无效,异常退出(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 集群?

先感谢您。

小智 5

我也遇到过这个。

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

引起原因:java.lang.IllegalArgumentException: org.apache.zookeeper.server.quorum.QuorumPeerConfig.parseProperties(QuorumPeerConfig.java:408)处缺少/tmp/zookeeper/data/myid文件

文件中的以下几行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
Run Code Online (Sandbox Code Playgroud)

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

因此,您所需要做的就是myid在每个服务器的上述目录中创建一个名称相同的文件,然后写入 x =或1(这些对应于Zookeeper.properties 文件中的 server. )。23x

参考链接 - Apache Zookeeper

希望这可以帮助!