在 Ubuntu 上部署/配置 Kafka(通常配合 Zookeeper 或 KRaft),有几个常见坑和容易忽略的点,按“踩坑频率”给你总结一下:
Kafka 对 JDK 有要求:
坑点
apt install default-jdk 可能是 JDK 11/17JAVA_HOME建议
java -version
echo $JAVA_HOME
Kafka 启动脚本会读 JAVA_HOME,没配容易报错:
Could not find or load main class kafka.Kafka
典型错误配置
listeners=PLAINTEXT://localhost:9092
结果:
正确姿势
listeners=PLAINTEXT://0.0.0.0:9092
advertised.listeners=PLAINTEXT://<服务器IP>:9092
advertised.listeners是“告诉客户端该连哪”
很多人还在按老教程配 Zookeeper,结果:
zookeeper.properties 配了kafka-server-start.sh 启动 KRaft 模式两种模式不能混用
✅ Zookeeper 模式:
bin/zookeeper-server-start.sh config/zookeeper.properties
bin/kafka-server-start.sh config/server.properties
✅ KRaft 模式(Kafka 3.3+):
bin/kafka-storage.sh format ...
bin/kafka-server-start.sh config/kraft/server.properties
默认:
log.dirs=/tmp/kafka-logs
坑:
/tmp 重启可能被清建议
sudo mkdir -p /data/kafka
sudo chown -R kafka:kafka /data/kafka
log.dirs=/data/kafka
Kafka 很吃 fd,默认 1024 会炸
现象
Too many open files
解决
ulimit -n 65536
或 /etc/security/limits.conf:
kafka soft nofile 65536
kafka hard nofile 65536
Ubuntu:
sudo ufw allow 9092
云服务器还要开安全组
export KAFKA_HEAP_OPTS="-Xmx1G -Xms1G"
小机器直接 OOM
| 配置项 | 坑 |
|---|---|
auto.create.topics.enable |
默认 true,生产环境建议 false |
num.partitions |
建完 topic 后改不了 |
offsets.topic.replication.factor |
单节点必须设为 1 |
delete.topic.enable |
老版本默认 false |
如果你愿意,可以告诉我:
我可以直接帮你写一份能跑的配置文件。