首页 No `meta.properties` found in /tmp/kraft-combined-logs (have you run `kafka-storage.sh` to format the directory?)
文章
取消

No `meta.properties` found in /tmp/kraft-combined-logs (have you run `kafka-storage.sh` to format the directory?)

Ubuntu 版本为 22.04.1,Kafka 版本为 3.4.0,以 Kraft 模式启动。

打开电脑上的 Linux 虚拟机后,发现 Kafka 挂了,restart 也失败:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
root@node2:/home/uphie# systemctl restart kafka
root@node2:/home/uphie# systemctl status kafka
× kafka.service - Apache Kafka Server
     Loaded: loaded (/etc/systemd/system/kafka.service; disabled; vendor preset: enabled)
     Active: failed (Result: exit-code) since Fri 2023-04-07 23:19:53 CST; 1min 7s ago
       Docs: http://kafka.apache.org/documentation.html
    Process: 3601 ExecStart=/opt/kafka/bin/kafka-server-start.sh /opt/kafka/config/kraft/server.properties (code=exited, status=1/FAILURE)
   Main PID: 3601 (code=exited, status=1/FAILURE)
        CPU: 3.403s

Apr 07 23:19:52 node2 kafka-server-start.sh[3601]:         at scala.collection.immutable.List.foreach(List.scala:333)
Apr 07 23:19:52 node2 kafka-server-start.sh[3601]:         at kafka.server.BrokerMetadataCheckpoint$.getBrokerMetadataAndOfflineDirs(BrokerMetadataCheckpoint.scala:168)
Apr 07 23:19:52 node2 kafka-server-start.sh[3601]:         at kafka.server.KafkaRaftServer$.initializeLogDirs(KafkaRaftServer.scala:144)
Apr 07 23:19:52 node2 kafka-server-start.sh[3601]:         at kafka.server.KafkaRaftServer.<init>(KafkaRaftServer.scala:56)
Apr 07 23:19:52 node2 kafka-server-start.sh[3601]:         at kafka.Kafka$.buildServer(Kafka.scala:85)
Apr 07 23:19:52 node2 kafka-server-start.sh[3601]:         at kafka.Kafka$.main(Kafka.scala:93)
Apr 07 23:19:52 node2 kafka-server-start.sh[3601]:         at kafka.Kafka.main(Kafka.scala)
Apr 07 23:19:53 node2 systemd[1]: kafka.service: Main process exited, code=exited, status=1/FAILURE
Apr 07 23:19:53 node2 systemd[1]: kafka.service: Failed with result 'exit-code'.
Apr 07 23:19:53 node2 systemd[1]: kafka.service: Consumed 3.403s CPU time.

由于展示的不全,用 journalctl 排查:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
root@node2:/home/uphie# journalctl -xe | grep kafka-server-start.sh
Apr 07 23:18:37 node1 kafka-server-start.sh[3097]: [2023-04-07 23:18:37,960] INFO Registered kafka:type=kafka.Log4jController MBean (kafka.utils.Log4jControllerRegistration$)
Apr 07 23:18:38 node1 kafka-server-start.sh[3097]: [2023-04-07 23:18:38,807] INFO Setting -D jdk.tls.rejectClientInitiatedRenegotiation=true to disable client-initiated TLS renegotiation (org.apache.zookeeper.common.X509Util)
Apr 07 23:18:38 node1 kafka-server-start.sh[3097]: [2023-04-07 23:18:38,993] WARN No meta.properties file under dir /tmp/kraft-combined-logs/meta.properties (kafka.server.BrokerMetadataCheckpoint)
Apr 07 23:18:39 node1 kafka-server-start.sh[3097]: [2023-04-07 23:18:38,997] ERROR Exiting Kafka due to fatal exception (kafka.Kafka$)
Apr 07 23:18:39 node1 kafka-server-start.sh[3097]: org.apache.kafka.common.KafkaException: No `meta.properties` found in /tmp/kraft-combined-logs (have you run `kafka-storage.sh` to format the directory?)
Apr 07 23:18:39 node1 kafka-server-start.sh[3097]:         at kafka.server.BrokerMetadataCheckpoint$.$anonfun$getBrokerMetadataAndOfflineDirs$2(BrokerMetadataCheckpoint.scala:179)
Apr 07 23:18:39 node1 kafka-server-start.sh[3097]:         at scala.collection.immutable.List.foreach(List.scala:333)
Apr 07 23:18:39 node1 kafka-server-start.sh[3097]:         at kafka.server.BrokerMetadataCheckpoint$.getBrokerMetadataAndOfflineDirs(BrokerMetadataCheckpoint.scala:168)
Apr 07 23:18:39 node1 kafka-server-start.sh[3097]:         at kafka.server.KafkaRaftServer$.initializeLogDirs(KafkaRaftServer.scala:144)
Apr 07 23:18:39 node1 kafka-server-start.sh[3097]:         at kafka.server.KafkaRaftServer.<init>(KafkaRaftServer.scala:56)
Apr 07 23:18:39 node1 kafka-server-start.sh[3097]:         at kafka.Kafka$.buildServer(Kafka.scala:85)
Apr 07 23:18:39 node1 kafka-server-start.sh[3097]:         at kafka.Kafka$.main(Kafka.scala:93)
Apr 07 23:18:39 node1 kafka-server-start.sh[3097]:         at kafka.Kafka.main(Kafka.scala)

查看 Kafka 日志,

1
2
3
4
5
6
7
8
9
10
11
root@node2:/home/uphie# tail /opt/kafka/logs/server.log
[2023-04-07 23:19:52,823] ERROR Exiting Kafka due to fatal exception (kafka.Kafka$)
org.apache.kafka.common.KafkaException: No `meta.properties` found in /tmp/kraft-combined-logs (have you run `kafka-storage.sh` to format the directory?)
	at kafka.server.BrokerMetadataCheckpoint$.$anonfun$getBrokerMetadataAndOfflineDirs$2(BrokerMetadataCheckpoint.scala:179)
	at scala.collection.immutable.List.foreach(List.scala:333)
	at kafka.server.BrokerMetadataCheckpoint$.getBrokerMetadataAndOfflineDirs(BrokerMetadataCheckpoint.scala:168)
	at kafka.server.KafkaRaftServer$.initializeLogDirs(KafkaRaftServer.scala:144)
	at kafka.server.KafkaRaftServer.<init>(KafkaRaftServer.scala:56)
	at kafka.Kafka$.buildServer(Kafka.scala:85)
	at kafka.Kafka$.main(Kafka.scala:93)
	at kafka.Kafka.main(Kafka.scala)

启动失败的原因是在目录 /tmp/kraft-combined-logs 中没有文件 meta.properties,获取不到节点信息和 cluster ID,启动失败。

但我曾经执行过 /opt/kafka/bin/kafka-storage.sh format -t blibId1XQpSU_RS4_FEkow -c /opt/kafka/config/kraft/server.properties 生成过 meta.properties

原因在于笔者在 /opt/kafka/config/kraft/server.properties 中设置的日志目录是 /tmp/kraft-combined-logs,虚拟机重启后目录 /tmp 就被清空了。

解决方法:

修改 /opt/kafka/config/kraft/server.properties 中的 log.dir 为其他非 /tmp 目录,再重新生成 meta.properties 和启动 Kafka。

本文由作者按照 CC BY 4.0 进行授权