温馨提示×

Debian怎么启动Kafka服务

小樊
47
2026-07-23 16:02:44
栏目: 智能运维

在 Debian 上启动 Apache Kafka 服务,通常有两种方式:手动启动(官方方式)作为 systemd 服务启动(推荐生产环境)。下面按最常见流程说明。


一、前置条件(确认已满足)

1. 安装 Java

Kafka 依赖 Java(建议 Java 8 / 11 / 17)

java -version

如果没有安装:

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

2. 下载并解压 Kafka

(假设你已经下载)

tar -xzf kafka_2.13-3.6.1.tgz
cd kafka_2.13-3.6.1

目录路径示例:/opt/kafka


二、手动启动 Kafka(测试/开发)

1️⃣ 启动 Zookeeper(Kafka 依赖)

Kafka 3.x 仍支持 Zookeeper(新版本可不用)

bin/zookeeper-server-start.sh config/zookeeper.properties

✅ 看到 binding to port 2181 表示成功


2️⃣ 启动 Kafka Broker

新开一个终端:

bin/kafka-server-start.sh config/server.properties

✅ 看到类似:

[KafkaServer id=0] started

说明 Kafka 已启动成功 ✅


三、使用 systemd 启动 Kafka(推荐)

1️⃣ 创建 Zookeeper systemd 服务

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 systemd 服务

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 useradd -r -s /bin/false kafka
sudo chown -R kafka:kafka /opt/kafka

4️⃣ 启动并设置开机自启

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

开机自启:

sudo systemctl enable zookeeper
sudo systemctl enable kafka

5️⃣ 查看状态

systemctl status zookeeper
systemctl status kafka

四、验证 Kafka 是否启动成功

创建测试 Topic

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

查看 Topic

bin/kafka-topics.sh --list --bootstrap-server localhost:9092

五、常见问题

❓ Kafka 启动后马上退出

  • Java 没装好
  • server.propertieslog.dirs 目录不存在或无权限
  • 端口 9092 / 2181 被占用

❓ 不用 Zookeeper(Kafka KRaft 模式)

Kafka 3.x 支持无 Zookeeper 启动,需要:

bin/kafka-storage.sh format
bin/kafka-server-start.sh config/kraft/server.properties

六、总结

场景 推荐方式
本地测试 手动启动
生产环境 systemd
新集群 KRaft(无 Zookeeper)

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

  • Kafka 版本
  • 是否用 Zookeeper
  • Debian 版本(10 / 11 / 12)

我可以给你 完全定制化的配置方案

0