温馨提示×

kafka配置centos注意啥

小樊
40
2026-10-14 20:26:29
栏目: 智能运维

在 CentOS 上部署和配置 Kafka,有几个常见但容易踩坑的点,下面按「系统层面 → Kafka 配置 → 运维注意」给你梳理一下。


一、系统和环境注意

1. JDK 版本

Kafka 依赖 JVM:

  • Kafka 2.x / 3.x:JDK 8 或 JDK 11
  • Kafka 3.5+:推荐 JDK 17
java -version

⚠️ 不要用太老或非官方 JDK(如 OpenJDK 早期版本可能有 GC 问题)


2. 主机名和 hosts

Kafka 对 hostname 解析非常敏感

hostname
cat /etc/hosts

建议:

127.0.0.1   localhost
192.168.1.10 kafka1

listeners 和 advertised.listeners 不要用 localhost(否则远程连不上)


3. 防火墙 & SELinux

CentOS 常见问题来源:

# 关闭防火墙(测试环境)
systemctl stop firewalld
systemctl disable firewalld

# 或开放端口
firewall-cmd --add-port=9092/tcp --permanent
firewall-cmd --reload

SELinux(生产建议配置而非关闭):

setenforce 0

二、Kafka 关键配置注意

1. server.properties 核心配置

broker.id=0
listeners=PLAINTEXT://0.0.0.0:9092
advertised.listeners=PLAINTEXT://kafka1:9092
zookeeper.connect=localhost:2181

⚠️ 重点:

  • advertised.listeners = 客户端实际访问地址
  • 0.0.0.0 只能用于 listeners,不能用于 advertised

2. 日志和数据目录

默认:

log.dirs=/tmp/kafka-logs

⚠️ /tmp 会被清理,生产一定要改:

log.dirs=/data/kafka/logs

并确保目录权限:

mkdir -p /data/kafka/logs
chown -R kafka:kafka /data/kafka

3. 文件描述符限制

Kafka 是高并发 IO 应用:

ulimit -n

建议 ≥ 100000

修改:

# /etc/security/limits.conf
kafka soft nofile 100000
kafka hard nofile 100000

4. 分区和副本

num.partitions=3
default.replication.factor=3
min.insync.replicas=2

⚠️ 单节点只能 replication.factor=1


三、Zookeeper(或 KRaft)

Zookeeper 模式

zookeeper.connect=zk1:2181,zk2:2181,zk3:2181

⚠️ Kafka 3.3+ 开始支持 KRaft(无 Zookeeper)

  • 新项目建议直接用 KRaft
  • 老集群不建议中途切换

四、内存和 GC

1. JVM 堆内存

bin/kafka-server-start.sh 或 server.properties 中:

export KAFKA_HEAP_OPTS="-Xms4G -Xmx4G"

⚠️ 不要超过物理内存 50%


2. GC 日志

建议开启:

-Xlog:gc*:file=/var/log/kafka/gc.log:time

五、启动 & 运维注意

1. 后台运行

不要用 & 随便跑:

nohup bin/kafka-server-start.sh config/server.properties > /var/log/kafka/server.log 2>&1 &

生产建议:

  • systemd
  • supervisor

2. 磁盘 IO

  • Kafka 依赖顺序写
  • 不建议用 NFS / 云盘低 IOPS

3. 监控

至少关注:

  • 磁盘使用率
  • 消息积压(lag)
  • GC 时间
  • 网络吞吐

六、常见坑总结

✅ hostname 解析
✅ advertised.listeners
✅ 防火墙 / SELinux
✅ 日志目录不在 /tmp
✅ 文件描述符
✅ JVM 内存别太大


如果你愿意,可以告诉我:

  • CentOS 版本(7 / 8 / Stream)
  • Kafka 版本
  • 单机还是集群

我可以直接给你一份 可复制的 server.properties + systemd 配置。

0 踩