在 Linux 上部署和配置 Kafka(通常指 Apache Kafka,也包括常见的 Kafka + ZooKeeper 或 KRaft 模式),有几个关键配置和易踩坑点需要注意。下面按「系统层 → Kafka 配置 → 运维与安全」给你梳理。
Kafka 会打开大量文件(日志段、连接等):
ulimit -n
建议:
100000/etc/security/limits.confkafka soft nofile 100000
kafka hard nofile 100000
defaults,noatime
ext4 或 xfsatime 提升性能vm.swappiness = 1~10
net.core.somaxconn
net.ipv4.tcp_max_syn_backlog
server.properties 关键项broker.id=1
listeners=PLAINTEXT://:9092
advertised.listeners=PLAINTEXT://kafka1.example.com:9092
⚠️ 注意:
listeners:绑定的网卡advertised.listeners:客户端实际连的地址log.dirs=/data/kafka/logs1,/data/kafka/logs2
zookeeper.connect=zk1:2181,zk2:2181,zk3:2181/kafka
chroot(如 /kafka)default.replication.factor=3
min.insync.replicas=2
min.insync.replicas 防止数据丢失log.retention.hours=72
log.segment.bytes=1073741824
log.cleanup.policy=delete
KAFKA_HEAP_OPTS="-Xms4g -Xmx4g"
-XX:+UseG1GC
useradd kafka
chown -R kafka:kafka /opt/kafka /data/kafka
process.roles=broker,controller
controller.quorum.voters=...
❌ advertised.listeners 配错 → 客户端连不上
❌ 磁盘满 → Broker 自动停写
❌ 文件描述符不够 → 连接失败
❌ 堆太大 → GC 卡顿
❌ 单副本 → 数据易丢
如果你愿意,我可以:
你现在是 学习 / 测试 / 生产 环境?