Debian 上配 Kafka 失败,原因通常集中在环境依赖、配置、权限、端口、版本这几个方面。下面按「最常见 → 较少见」给你梳理,你可以对照看是哪一类。
Kafka 强依赖 JVM
检查:
java -version
要求:
修复:
sudo apt update
sudo apt install openjdk-17-jdk
并确认:
echo $JAVA_HOME
如果没有:
export JAVA_HOME=/usr/lib/jvm/java-17-openjdk-amd64
Kafka 2.x 及以前 必须有 Zookeeper
常见错误:
java.net.ConnectException: Connection refused (zookeeper)
解决:
bin/zookeeper-server-start.sh config/zookeeper.properties
再开一个终端:
bin/kafka-server-start.sh config/server.properties
✅ Kafka 3.0+ 可用 KRaft(无 Zookeeper)
最常见问题:
错误示例:
listeners=PLAINTEXT://localhost:9092
advertised.listeners=PLAINTEXT://公网IP:9092
但:
推荐最小可用配置:
listeners=PLAINTEXT://0.0.0.0:9092
advertised.listeners=PLAINTEXT://<你的IP>:9092
Debian 默认可能拦端口
检查:
ss -lntp | grep 9092
防火墙:
sudo ufw allow 9092
云服务器还要开安全组
Kafka 写不了 log 目录
错误:
Failed to acquire lock on file .lock
解决:
sudo chown -R $USER:$USER /tmp/kafka-logs
或修改:
log.dirs=/home/youruser/kafka-logs
KRaft 必须先生成 ID:
KAFKA_CLUSTER_ID=$(bin/kafka-storage.sh random-uuid)
bin/kafka-storage.sh format -t $KAFKA_CLUSTER_ID -c config/kraft/server.properties
否则直接起会失败。
自己写 service 容易失败
最小可用:
[Unit]
Description=Kafka
[Service]
ExecStart=/opt/kafka/bin/kafka-server-start.sh /opt/kafka/config/server.properties
User=youruser
[Install]
WantedBy=multi-user.target
请你确认:
你可以贴:
我可以直接告诉你是哪一步错了,甚至帮你写一份可直接用的 Debian Kafka 配置。