温馨提示×

Debian Kafka配置要注意啥

小樊
32
2026-07-23 15:55:49
栏目: 智能运维

在 Debian 上部署和配置 Apache Kafka,有几个容易踩坑的关键点,我按「系统层 → Kafka 本身 → 运维与排错」给你总结一下,都是实战经验。


一、系统层面(Debian 特有 & 通用)

1. Java 环境

Kafka 强依赖 JVM,Debian 最常见问题就是 Java 版本或路径不对。

✅ 推荐:

sudo apt install openjdk-17-jdk
java -version

⚠️ 注意:

  • Kafka 3.x 推荐 Java 11 / 17
  • 不要用 gcj 或太老的 Java 8(部分新版本已不支持)

设置 JAVA_HOME(很重要):

export JAVA_HOME=/usr/lib/jvm/java-17-openjdk-amd64

可写入:

/etc/profile.d/kafka.sh

2. 文件描述符限制(非常关键)

Kafka 对 socket / 文件非常敏感。

ulimit -n

建议至少:

65535

永久修改(Debian):

sudo vim /etc/security/limits.conf
* soft nofile 65535
* hard nofile 65535

并确保:

/etc/pam.d/common-session

包含:

session required pam_limits.so

3. 禁用 swap(强烈建议)

Kafka 对延迟非常敏感。

sudo swapoff -a

永久禁用:

sudo vim /etc/fstab
# 注释 swap 行

4. 磁盘与文件系统

✅ 推荐:

  • EXT4 / XFS
  • Kafka 数据盘 单独挂载
  • 不要放 / 根分区
mount | grep kafka

⚠️ 不要放在 NFS 上!


二、Kafka 核心配置(server.properties)

1. broker.id(必须唯一)

broker.id=1

集群中 每个 broker 不能重复


2. listeners vs advertised.listeners(最易错)

本机监听:

listeners=PLAINTEXT://0.0.0.0:9092

客户端连接地址:

advertised.listeners=PLAINTEXT://your_server_ip:9092

⚠️ 常见错误:

  • 只配 listeners
  • localhostadvertised.listeners(客户端会连不上)

3. 日志目录(非常重要)

log.dirs=/data/kafka-logs

⚠️ 注意:

  • 不要放在 /tmp
  • 目录权限要正确:
sudo chown -R kafka:kafka /data/kafka-logs

4. Zookeeper / KRaft 模式

Kafka 2.x / 3.x(仍用 Zookeeper)

zookeeper.connect=localhost:2181

Kafka 3.x+(KRaft,推荐新集群)

process.roles=broker,controller
node.id=1
controller.quorum.voters=1@localhost:9093

⚠️ 不要混用 Zookeeper 和 KRaft


5. 日志保留策略

log.retention.hours=168
log.retention.bytes=-1
log.segment.bytes=1073741824

⚠️ 生产环境一定要控制磁盘使用,否则会爆盘。


三、Debian 服务化(systemd)

示例 service

[Unit]
Description=Apache Kafka
After=network.target

[Service]
Type=simple
User=kafka
ExecStart=/opt/kafka/bin/kafka-server-start.sh /opt/kafka/config/server.properties
ExecStop=/opt/kafka/bin/kafka-server-stop.sh
Restart=on-failure

[Install]
WantedBy=multi-user.target
sudo systemctl daemon-reload
sudo systemctl enable kafka
sudo systemctl start kafka

四、网络与防火墙

1. 端口

通常需要:

  • 9092(客户端)
  • 2181(Zookeeper)
  • 9093(KRaft controller)
sudo ufw allow 9092

2. hostname 解析

确保:

hostname -f

能解析到 IP,否则 Kafka 可能启动异常。


五、常见坑总结(Debian 特有 & 通用)

问题 原因
启动后客户端连不上 advertised.listeners 配错
Too many open files ulimit 没改
磁盘突然满 日志保留没限制
systemd 启动失败 User / 路径 / 权限
Java 找不到 JAVA_HOME 没设
集群 broker 互相看不到 broker.id 重复

六、推荐目录结构(生产建议)

/opt/kafka          # Kafka 安装
/data/kafka-logs    # 数据
/etc/kafka          # 自定义配置
/var/log/kafka      # 日志

如果你愿意,我可以:

  • ✅ 给你一份 Debian + Kafka 3.x 完整安装脚本
  • ✅ 帮你 检查现有 server.properties
  • ✅ 帮你选 Zookeeper vs KRaft

直接告诉我你是 单机 / 集群 / 本地测试 / 生产环境 即可。

0