Debian 上 Kafka 启动失败的原因很多,最常见的是 Java、配置、端口、权限或日志问题。下面按排查顺序给你一个实用清单,基本能覆盖 90% 的情况。
Kafka 启动失败一定要看日志,而不是只看是否退出。
# Kafka 自带日志
tail -n 100 logs/server.log
# systemd 启动的话
journalctl -u kafka -n 100
常见错误关键词:
java.net.BindExceptionNoClassDefFoundErrorKafkaConfigbroker.idzookeeper.connectjava -version
✅ 推荐:
❌ 不支持:
openjdk-17 + 老 Kafka 会失败echo $JAVA_HOME
如果没有,编辑:
sudo nano /etc/profile.d/java.sh
export JAVA_HOME=/usr/lib/jvm/java-11-openjdk-amd64
export PATH=$JAVA_HOME/bin:$PATH
source /etc/profile
如果你用的是 Kafka 2.x / 3.x(未启用 KRaft)
ps -ef | grep zookeeper
或
netstat -tunlp | grep 2181
bin/zookeeper-server-start.sh config/zookeeper.properties
✅ Kafka 启动前 Zookeeper 必须已运行
90922181检查:
ss -lntp | grep 9092
解决:
server.propertieslisteners=PLAINTEXT://:9093
broker.id=0
如果多个 Kafka 实例,必须不同。
log.dirs=/var/lib/kafka-logs
检查:
ls -ld /var/lib/kafka-logs
修复:
sudo chown -R kafka:kafka /var/lib/kafka-logs
启动方式错误是 Debian 常见问题:
❌ 错:
bin/kafka-server-start.sh
✅ 对:
bin/kafka-server-start.sh config/server.properties
systemctl status kafka
User=kafka 不存在ExecStart 路径错误[Unit]
Requires=zookeeper.service
[Service]
User=kafka
ExecStart=/opt/kafka/bin/kafka-server-start.sh /opt/kafka/config/server.properties
Restart=on-failure
[Install]
WantedBy=multi-user.target
如果你用的是 无 Zookeeper 模式:
bin/kafka-storage.sh random-uuid
bin/kafka-storage.sh format -t <uuid> -c config/kraft/server.properties
process.roles=broker,controller
node.id=1
✅ Java 正常
✅ JAVA_HOME 设置
✅ Zookeeper 已启动
✅ 端口未冲突
✅ broker.id 唯一
✅ log.dirs 有权限
✅ 使用正确配置文件
你可以直接贴出:
我可以给你精确到行的解决方案。