在 Debian 上 Kafka 连接失败,原因通常可以分成网络/配置问题、Kafka 本身未正常启动、系统环境差异几类。下面按最常见原因给你一个排查清单。
listeners / advertised.listeners 配置错误(最重要)Kafka 客户端连接的是 advertised.listeners,不是 listeners。
典型错误配置:
listeners=PLAINTEXT://localhost:9092
advertised.listeners=PLAINTEXT://localhost:9092
如果你从其他机器或容器连接,就会失败。
✅ 正确示例(Debian 服务器 IP 为 192.168.1.10):
listeners=PLAINTEXT://0.0.0.0:9092
advertised.listeners=PLAINTEXT://192.168.1.10:9092
修改后必须重启 Kafka。
检查:
ps aux | grep kafka
或看日志:
tail -n 100 /var/log/kafka/server.log
# 或
tail -n 100 logs/server.log
常见失败原因:
Debian 默认可能用 nftables 或 iptables
查看:
sudo iptables -L
sudo nft list ruleset
开放 9092:
sudo ufw allow 9092
# 或
sudo iptables -A INPUT -p tcp --dport 9092 -j ACCEPT
云服务器还要看安全组。
Kafka 返回的是 hostname,客户端解析不了。
检查:
hostname
cat /etc/hosts
建议:
127.0.0.1 localhost
192.168.1.10 debian-kafka
并在 advertised.listeners 用 IP。
如果你用的是 KRaft 模式:
server.propertieskafka-storage.sh random-uuid
kafka-storage.sh format -t <uuid>
否则 Kafka 起不来。
❌ 错:
bootstrap.servers=localhost:9092
(在远程机器上)
✅ 对:
bootstrap.servers=192.168.1.10:9092
典型异常:
Connection refused
Connection timed out
说明:
# 本地
telnet localhost 9092
# 远程
telnet 192.168.1.10 9092
不通 → 网络或 Kafka 没监听。
你可以贴出:
server.properties 相关配置我可以直接告诉你具体哪一行错了。