在 Ubuntu 上部署 / 配置 Kafka 时,确实有不少“坑”,很多都不是 Kafka 本身复杂,而是 环境、系统和细节配置 导致的。下面按 常见踩坑点 + 解决方案 给你系统梳理一遍。
现象
Unsupported major.minor versionNoSuchMethodError原因
解决
java -version
推荐安装:
sudo apt install openjdk-11-jdk
并设置:
export JAVA_HOME=/usr/lib/jvm/java-11-openjdk-amd64
✅ 一定要确认 Kafka 使用的 Java 版本
现象
Connection refused / LEADER_NOT_AVAILABLE原因
advertised.listeners 配置的是 hostname,但客户端解析不了错误示例
advertised.listeners=PLAINTEXT://ubuntu:9092
但 /etc/hosts 里没有 ubuntu
✅ 正确做法
listeners=PLAINTEXT://0.0.0.0:9092
advertised.listeners=PLAINTEXT://<服务器IP>:9092
并确认:
hostname -i
现象
背景
✅ 确认你用的是哪种模式
bin/zookeeper-server-start.sh config/zookeeper.properties
bin/kafka-server-start.sh config/server.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原因
kafka 用户/data/kafka-logs✅ 解决
sudo mkdir -p /data/kafka-logs
sudo chown -R $USER:$USER /data/kafka-logs
server.properties:
log.dirs=/data/kafka-logs
现象
too many open files✅ 解决
ulimit -n
修改:
sudo vi /etc/security/limits.conf
添加:
* soft nofile 65536
* hard nofile 65536
现象
✅ 建议
cat /proc/sys/vm/swappiness
设置为:
sudo sysctl vm.swappiness=1
现象
✅ 检查
ss -lntp | grep 9092
防火墙:
sudo ufw allow 9092
云服务器还要检查 安全组
✅ 创建 topic 时显式指定:
bin/kafka-topics.sh --create \
--topic test \
--partitions 3 \
--replication-factor 1
生产环境建议关闭
auto.create.topics.enable=false
否则:
现象
✅ 必须配置
log.retention.hours=168
log.segment.bytes=1073741824
log.cleanup.policy=delete
原因
✅ 示例 service:
[Service]
Environment=JAVA_HOME=/usr/lib/jvm/java-11-openjdk-amd64
ExecStart=/opt/kafka/bin/kafka-server-start.sh /opt/kafka/config/server.properties
java -version
hostname -i
ulimit -n
ss -lntp | grep 9092
ls -ld /data/kafka-logs
Ubuntu 上 Kafka 的坑,80% 在 Java、hostname、advertised.listeners、权限和磁盘。
如果你愿意,我可以:
直接把你的 Kafka 版本 + 报错日志 发我即可。