Debian 上部署 Kafka 失败,通常不是单一原因,而是环境、配置、版本兼容叠加导致的。下面按最常见 → 较少见的顺序,帮你系统性排查。
Kafka 必须依赖 JVM,且版本很关键。
java -version
sudo apt update
sudo apt install openjdk-17-jdk
常见错误:
wget https://downloads.apache.org/kafka/3.6.1/kafka_2.13-3.6.1.tgz
tar -xzf kafka_2.13-3.6.1.tgz
cd kafka_2.13-3.6.1
✅ 文件名中必须包含 tgz
✅ 不要用 git clone
Kafka 必须先有元数据服务
bin/zookeeper-server-start.sh config/zookeeper.properties
bin/kafka-storage.sh random-uuid
bin/kafka-storage.sh format -t <uuid>
bin/kafka-server-start.sh config/kraft/server.properties
❌ 常见错误:
Permission denied
无法写入 /tmp/kafka-logs
sudo chown -R $USER:$USER kafka_2.13-3.6.1
或不要用 root 跑 Kafka
Kafka 默认会解析 hostname
Connection refused
UnknownHostException
编辑 /etc/hosts
127.0.0.1 localhost
或强制 Kafka 用 IP:
listeners=PLAINTEXT://127.0.0.1:9092
sudo netstat -tulpn | grep 9092
如果端口被占:
重点检查:
broker.id=0
log.dirs=/tmp/kafka-logs
listeners=PLAINTEXT://localhost:9092
zookeeper.connect=localhost:2181
❌ 常见错误:
log.dirs 指向不存在目录listeners 写错broker.idtail -f logs/server.log
tail -f logs/kafkaServer.out
如果有:
ExceptionErrorFailed to bind把前 20 行错误信息贴出来,基本能直接定位。
| 检查项 | 是否 |
|---|---|
| Java 已安装且版本正确 | ✅ |
| 使用 Binary 包 | ✅ |
| Zookeeper / KRaft 已启动 | ✅ |
| 端口未冲突 | ✅ |
| 不是 root 运行 | ✅ |
你可以直接贴出:
我可以一步步帮你把问题精确锁定 ✅