温馨提示×

Kafka怎么部署在Debian

小樊
39
2026-07-11 16:13:48
栏目: 智能运维

Debian 上部署 Apache Kafka,常见做法是使用 官方二进制包 + systemd 管理。下面给你一套从零到可用的完整流程(适用于 Debian 11 / 12,也适用于 Ubuntu)。


一、前置条件

1. 安装 Java(Kafka 依赖 JVM)

Kafka 3.x 推荐 Java 17(也兼容 Java 11)

sudo apt update
sudo apt install -y openjdk-17-jdk

验证:

java -version

二、下载并安装 Kafka

1. 创建用户(推荐)

sudo useradd -r -m -s /bin/bash kafka

2. 下载 Kafka

去官网查看最新版本:
https://kafka.apache.org/downloads

示例(以 3.6.1 为例):

cd /opt
sudo wget https://downloads.apache.org/kafka/3.6.1/kafka_2.13-3.6.1.tgz
sudo tar -xzf kafka_2.13-3.6.1.tgz
sudo mv kafka_2.13-3.6.1 kafka
sudo chown -R kafka:kafka /opt/kafka

三、配置 Kafka

1. 配置 Zookeeper(Kafka 自带)

编辑:

sudo nano /opt/kafka/config/zookeeper.properties

常用配置:

dataDir=/var/lib/zookeeper
clientPort=2181
maxClientCnxns=0

创建数据目录:

sudo mkdir -p /var/lib/zookeeper
sudo chown -R kafka:kafka /var/lib/zookeeper

2. 配置 Kafka

编辑:

sudo nano /opt/kafka/config/server.properties

关键配置(单机示例):

broker.id=1
listeners=PLAINTEXT://:9092
log.dirs=/var/lib/kafka-logs
zookeeper.connect=localhost:2181

创建数据目录:

sudo mkdir -p /var/lib/kafka-logs
sudo chown -R kafka:kafka /var/lib/kafka-logs

四、配置 systemd 服务

1. Zookeeper 服务

sudo nano /etc/systemd/system/zookeeper.service
[Unit]
Description=Apache Zookeeper
After=network.target

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

[Install]
WantedBy=multi-user.target

2. Kafka 服务

sudo nano /etc/systemd/system/kafka.service
[Unit]
Description=Apache Kafka
After=zookeeper.service

[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

3. 启动服务

sudo systemctl daemon-reload
sudo systemctl enable zookeeper
sudo systemctl enable kafka
sudo systemctl start zookeeper
sudo systemctl start kafka

查看状态:

systemctl status zookeeper
systemctl status kafka

五、验证 Kafka 是否正常运行

1. 创建 Topic

/opt/kafka/bin/kafka-topics.sh \
--create \
--topic test \
--bootstrap-server localhost:9092 \
--partitions 1 \
--replication-factor 1

2. 发送消息

/opt/kafka/bin/kafka-console-producer.sh \
--topic test \
--bootstrap-server localhost:9092

输入内容后 Ctrl+C 退出。


3. 消费消息

/opt/kafka/bin/kafka-console-consumer.sh \
--topic test \
--from-beginning \
--bootstrap-server localhost:9092

六、常见问题

1. Kafka 启动慢

  • 检查 Java 版本
  • 确认 zookeeper.connect 正确

2. 端口被占用

ss -lntp | grep 9092

3. 生产环境建议

  • 使用 KRaft 模式(无 Zookeeper)
  • 多 broker 集群
  • 配置日志清理策略
  • 开启防火墙端口(9092 / 2181)

七、KRaft 模式(新部署推荐)

如果你要 不用 Zookeeper 的新架构,我可以单独给你一份 Kafka KRaft 模式部署方案(Debian 同样适用)。


如果你告诉我:

  • 单机 / 集群
  • 是否 生产环境
  • Debian 具体版本

我可以给你一份 更贴合你场景的部署方案

0