Kafka无法启动

Joh*_*Doe 3 ubuntu apache-kafka apache-zookeeper ubuntu-20.04

在我本地的 Ubuntu 20.04 上,Kafka 无法启动。

\n
kafka@bablo-HP-ProBook-440-G5:~$ sudo systemctl status kafka\n\xe2\x97\x8f kafka.service\n     Loaded: loaded (/etc/systemd/system/kafka.service; enabled; vendor preset: enabled)\n     Active: failed (Result: exit-code) since Wed 2021-03-03 12:10:36 IST; 3min 26s ago\n    Process: 32197 ExecStart=/bin/sh -c /home/kafka/kafka/bin/kafka-server-start.sh /home/kafka/kafka/config/server.properties > /home/kafka/>\n   Main PID: 32197 (code=exited, status=1/FAILURE)\n\nMar 03 12:10:33 bablo-HP-ProBook-440-G5 systemd[1]: Started kafka.service.\nMar 03 12:10:36 bablo-HP-ProBook-440-G5 systemd[1]: kafka.service: Main process exited, code=exited, status=1/FAILURE\nMar 03 12:10:36 bablo-HP-ProBook-440-G5 systemd[1]: kafka.service: Failed with result 'exit-code'.\n
Run Code Online (Sandbox Code Playgroud)\n

在同一主机上,zookeeper服务运行顺利。

\n
kafka@bablo-HP-ProBook-440-G5:~$ sudo systemctl status zookeeper\n\xe2\x97\x8f zookeeper.service\n     Loaded: loaded (/etc/systemd/system/zookeeper.service; enabled; vendor preset: enabled)\n     Active: active (running) since Wed 2021-03-03 11:47:27 IST; 28min ago\n   Main PID: 932 (java)\n      Tasks: 38 (limit: 9359)\n     Memory: 84.1M\n     CGroup: /system.slice/zookeeper.service\n             \xe2\x94\x94\xe2\x94\x80932 java -Xmx512M -Xms512M -server -XX:+UseG1GC -XX:MaxGCPauseMillis=20 -XX:InitiatingHeapOccupancyPercent=35 -XX:+ExplicitGCI>\n\nMar 03 11:48:37 bablo-HP-ProBook-440-G5 zookeeper-server-start.sh[932]: [2021-03-03 11:48:37,793] INFO Created server with tickTime 3000 minS>\nMar 03 11:48:38 bablo-HP-ProBook-440-G5 zookeeper-server-start.sh[932]: [2021-03-03 11:48:38,022] INFO Using org.apache.zookeeper.server.NIOS>\nMar 03 11:48:38 bablo-HP-ProBook-440-G5 zookeeper-server-start.sh[932]: [2021-03-03 11:48:38,037] INFO Configuring NIO connection handler wit>\nMar 03 11:48:38 bablo-HP-ProBook-440-G5 zookeeper-server-start.sh[932]: [2021-03-03 11:48:38,058] INFO binding to port 0.0.0.0/0.0.0.0:2181 (>\nMar 03 11:48:38 bablo-HP-ProBook-440-G5 zookeeper-server-start.sh[932]: [2021-03-03 11:48:38,265] INFO zookeeper.snapshotSizeFactor = 0.33 (o>\nMar 03 11:48:38 bablo-HP-ProBook-440-G5 zookeeper-server-start.sh[932]: [2021-03-03 11:48:38,279] INFO Snapshotting: 0x0 to /tmp/zookeeper/ve>\nMar 03 11:48:38 bablo-HP-ProBook-440-G5 zookeeper-server-start.sh[932]: [2021-03-03 11:48:38,291] INFO Snapshotting: 0x0 to /tmp/zookeeper/ve>\nMar 03 11:48:38 bablo-HP-ProBook-440-G5 zookeeper-server-start.sh[932]: [2021-03-03 11:48:38,406] INFO Using checkIntervalMs=60000 maxPerMinu>\nMar 03 11:48:45 bablo-HP-ProBook-440-G5 zookeeper-server-start.sh[932]: [2021-03-03 11:48:45,679] INFO Creating new log file: log.1 (org.apac>\nMar 03 11:57:26 bablo-HP-ProBook-440-G5 zookeeper-server-start.sh[932]: [2021-03-03 11:57:26,915] WARN fsync-ing the write ahead log in SyncT>\nlines 1-19/19 (END)\n
Run Code Online (Sandbox Code Playgroud)\n

我检查了9092端口是否被占用,没有。

\n
kafka@bablo-HP-ProBook-440-G5:~$ sudo lsof -i:9092\nkafka@bablo-HP-ProBook-440-G5:~$ \n
Run Code Online (Sandbox Code Playgroud)\n

我没有得到任何该命令的输出。

\n

当我打开 /home/kafka/logs 中的 server.log 时。\n我注意到以下内容。

\n
[2021-03-03 12:10:34,936] INFO jute.maxbuffer value is 4194304 Bytes (org.apache.zookeeper.ClientCnxnSocket)\n[2021-03-03 12:10:34,941] INFO zookeeper.request.timeout value is 0. feature enabled= (org.apache.zookeeper.ClientCnxn)\n[2021-03-03 12:10:34,944] INFO [ZooKeeperClient Kafka server] Waiting until connected. (kafka.zookeeper.ZooKeeperClient)\n[2021-03-03 12:10:34,947] INFO Opening socket connection to server localhost/127.0.0.1:2181. Will not attempt to authenticate using SASL (unknown error) (org.apache.zookeeper.ClientCnxn)\n[2021-03-03 12:10:34,952] INFO Socket connection established, initiating session, client: /127.0.0.1:40888, server: localhost/127.0.0.1:2181 (org.apache.zookeeper.ClientCnxn)\n[2021-03-03 12:10:35,046] INFO Session establishment complete on server localhost/127.0.0.1:2181, sessionid = 0x10000019ced0002, negotiated timeout = 18000 (org.apache.zookeeper.ClientCnxn)\n[2021-03-03 12:10:35,052] INFO [ZooKeeperClient Kafka server] Connected. (kafka.zookeeper.ZooKeeperClient)\n[2021-03-03 12:10:35,531] INFO Cluster ID = Tv2VkHIwQeeE9P8qlGcquQ (kafka.server.KafkaServer)\n[2021-03-03 12:10:35,538] ERROR Fatal error during KafkaServer startup. Prepare to shutdown (kafka.server.KafkaServer)\nkafka.common.InconsistentClusterIdException: The Cluster ID Tv2VkHIwQeeE9P8qlGcquQ doesn't match stored clusterId Some(NojQoU95QE-ubFol4BNjXg) in meta.properties. The broker is trying to join the wrong cluster. Configured zookeeper.connect may be wrong.\n        at kafka.server.KafkaServer.startup(KafkaServer.scala:235)\n        at kafka.server.KafkaServerStartable.startup(KafkaServerStartable.scala:44)\n        at kafka.Kafka$.main(Kafka.scala:82)\n        at kafka.Kafka.main(Kafka.scala)\n[2021-03-03 12:10:35,540] INFO shutting down (kafka.server.KafkaServer)\n[2021-03-03 12:10:35,542] INFO [ZooKeeperClient Kafka server] Closing. (kafka.zookeeper.ZooKeeperClient)\n[2021-03-03 12:10:35,663] INFO Session: 0x10000019ced0002 closed (org.apache.zookeeper.ZooKeeper)\n[2021-03-03 12:10:35,663] INFO EventThread shut down for session: 0x10000019ced0002 (org.apache.zookeeper.ClientCnxn)\n
Run Code Online (Sandbox Code Playgroud)\n

所以这条线似乎有线索。

\n
[2021-03-03 12:10:35,538] ERROR Fatal error during KafkaServer startup. Prepare to shutdown (kafka.server.KafkaServer)\nkafka.common.InconsistentClusterIdException: The Cluster ID Tv2VkHIwQeeE9P8qlGcquQ doesn't match stored clusterId Some(NojQoU95QE-ubFol4BNjXg) in meta.properties. The broker is trying to join the wrong cluster. Configured zookeeper.connect may be wrong.\n        at kafka.server.KafkaServer.startup(KafkaServer.scala:235)\n        at kafka.server.KafkaServerStartable.startup(KafkaServerStartable.scala:44)\n        at kafka.Kafka$.main(Kafka.scala:82)\n        at kafka.Kafka.main(Kafka.scala)\n
Run Code Online (Sandbox Code Playgroud)\n

我可能错了,完全错了,请告诉我。\n如何修复 kafka 中的“InconsistencyClusterIdException”?

\n

Joh*_*Doe 8

正如我在问题中提到的那样,我的诊断显示“InconsistentClusterIdException”是这种情况的罪魁祸首。因此,在某处定义了一个具有较旧值的 cluster.id,并且新的 cluster.id 与系统中定义的文件中给出的值不同。

\n

日志还提到定义 cluster.id 的文件名为“meta.properties”,现在的问题是在哪里可以找到这个文件。

\n

我检查了kafka安装目录有一个logs文件夹,首先我以为meta.properties会在那里,但是唉!事实并非如此。

\n

然后我在根目录运行以下命令来查找meta.properties 文件位置。

\n
kafka@bablo-HP-ProBook-440-G5:~$ sudo find / -type f -name meta.properties \n[sudo] password for kafka: \nfind: \xe2\x80\x98/run/user/1000/gvfs\xe2\x80\x99: Permission denied\n/var/lib/docker/volumes/5538f86a82c0c8e4b52b7c99d974f8d7f0dcd7cd5923372fc9526daa7610de77/_data/kafka-logs-0bd2b2fa548f/meta.properties\n/var/lib/docker/volumes/5538f86a82c0c8e4b52b7c99d974f8d7f0dcd7cd5923372fc9526daa7610de77/_data/kafka-logs-2dbdd7463fde/meta.properties\n/var/lib/docker/volumes/5538f86a82c0c8e4b52b7c99d974f8d7f0dcd7cd5923372fc9526daa7610de77/_data/kafka-logs-6adbc7f092cf/meta.properties\n/var/lib/docker/volumes/5538f86a82c0c8e4b52b7c99d974f8d7f0dcd7cd5923372fc9526daa7610de77/_data/kafka-logs-f6f11dd5b1e3/meta.properties\n/var/lib/docker/volumes/5538f86a82c0c8e4b52b7c99d974f8d7f0dcd7cd5923372fc9526daa7610de77/_data/kafka-logs-ecf97c2a08bd/meta.properties\n/var/lib/docker/volumes/5538f86a82c0c8e4b52b7c99d974f8d7f0dcd7cd5923372fc9526daa7610de77/_data/kafka-logs-7bad187baa15/meta.properties\n/var/lib/docker/volumes/5538f86a82c0c8e4b52b7c99d974f8d7f0dcd7cd5923372fc9526daa7610de77/_data/kafka-logs-e114b322d257/meta.properties\n/var/lib/docker/volumes/5538f86a82c0c8e4b52b7c99d974f8d7f0dcd7cd5923372fc9526daa7610de77/_data/kafka-logs-de90efb99ab0/meta.properties\n/var/lib/docker/volumes/5538f86a82c0c8e4b52b7c99d974f8d7f0dcd7cd5923372fc9526daa7610de77/_data/kafka-logs-5d1ae8504d91/meta.properties\n/home/kafka/logs/meta.properties\n
Run Code Online (Sandbox Code Playgroud)\n

结果的最后一行提到了 meta.properties 文件夹的位置。它位于/home/kafka/logs/meta.properties。\n在该位置,我只是注释了 meta.properties 文件中包含 cluster.id 键的行,然后将其保存回来。

\n

之后停止zookeeper并重新启动zookeeper和kafka。

\n

就是这样。又开始顺利了。

\n