在 Ubuntu 上部署和使用 Kafka(尤其是新手或生产环境),有不少“坑”和易错点。下面按安装、配置、运行、生产环境几个维度给你总结常见坑及规避方法。
坑:
openjdk 可能不是你需要的版本解决:
java -version
确保版本匹配,推荐:
sudo apt install openjdk-11-jdk
并在 ~/.bashrc 或 /etc/profile 中指定:
export JAVA_HOME=/usr/lib/jvm/java-11-openjdk-amd64
坑:
建议:
Zookeeper 配置示例坑:
dataDir=/tmp/zookeeper # ❌ 重启数据丢失
✅ 改成:
dataDir=/var/lib/zookeeper
listeners 和 advertised.listeners 配置错误(最常见)坑:
错误示例:
listeners=PLAINTEXT://localhost:9092
advertised.listeners=PLAINTEXT://localhost:9092
远程客户端会拿到 localhost,直接失败。
正确示例(服务器 IP):
listeners=PLAINTEXT://0.0.0.0:9092
advertised.listeners=PLAINTEXT://<服务器公网IP>:9092
broker.id 重复坑:
broker.id=0 # 每个节点必须唯一
log.dirs 权限问题坑:
log.dirs=/var/lib/kafka-logs
确保权限:
sudo chown -R kafka:kafka /var/lib/kafka-logs
坑:
sudo bin/kafka-server-start.sh正确做法:
sudo useradd kafka
sudo su - kafka
坑:
Too many open files
解决:
ulimit -n 65536
或修改:
/etc/security/limits.conf
kafka - nofile 65536
坑:
建议配置:
log.retention.hours=168
log.segment.bytes=1073741824
log.retention.bytes=107374182400
sudo ufw allow 9092
云服务器还要开安全组。
Connection to node -1 could not be established原因:
advertised.listeners 错auto.create.topics.enable=false
生产环境建议关闭,但新手会懵。
| 项目 | 建议 |
|---|---|
| 单节点 | 只适合测试 |
| 副本数 | ≥ 3 |
| min.insync.replicas | 2 |
| acks | all |
| unclean.leader.election | false |
如果你愿意,可以告诉我:
我可以直接给你一份可用配置。