温馨提示×

debian中kafka怎样配置

小樊
44
2026-10-15 14:39:03
栏目: 智能运维

下面以 Debian 系列(如 Debian 11/12、Ubuntu) 为例,系统说明 Kafka 的安装与基本配置。Kafka 依赖 ZooKeeper(或新版 KRaft 模式),这里先讲最常见的 ZooKeeper 模式,再补充 KRaft 模式。


一、环境准备

1. 安装 Java

Kafka 需要 JDK 8 或 11(推荐 11)

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

验证:

java -version

二、下载并安装 Kafka

以 Kafka 3.6 为例:

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

三、ZooKeeper 模式配置(传统方式)

1. 配置 ZooKeeper

编辑:

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

常见配置:

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

创建数据目录:

sudo mkdir -p /var/lib/zookeeper

2. 配置 Kafka

编辑:

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

关键配置说明:

# broker 唯一 ID
broker.id=0

# 监听地址(重要)
listeners=PLAINTEXT://:9092
advertised.listeners=PLAINTEXT://your-server-ip:9092

# 日志目录
log.dirs=/var/lib/kafka-logs

# ZooKeeper 地址
zookeeper.connect=localhost:2181

# 允许删除 topic(可选)
delete.topic.enable=true

创建日志目录:

sudo mkdir -p /var/lib/kafka-logs

3. 启动 Kafka(手动测试)

# 启动 ZooKeeper
/opt/kafka/bin/zookeeper-server-start.sh /opt/kafka/config/zookeeper.properties

# 另一个终端启动 Kafka
/opt/kafka/bin/kafka-server-start.sh /opt/kafka/config/server.properties

四、配置为 systemd 服务(推荐)

1. ZooKeeper 服务

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

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

[Install]
WantedBy=multi-user.target

2. Kafka 服务

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

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

[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

查看状态:

sudo systemctl status 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

3. 消费消息

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

六、Kafka KRaft 模式(无 ZooKeeper,新推荐)

Kafka 3.x 起支持 KRaft。

1. 生成集群 ID

/opt/kafka/bin/kafka-storage.sh random-uuid

2. 修改配置

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

关键:

process.roles=broker,controller
node.id=1
controller.quorum.voters=1@localhost:9093
listeners=PLAINTEXT://:9092,CONTROLLER://:9093
log.dirs=/var/lib/kafka-logs

3. 格式化存储

/opt/kafka/bin/kafka-storage.sh format \
  -t <cluster-id> \
  -c /opt/kafka/config/kraft/server.properties

4. 启动

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

七、常见注意事项

  • advertised.listeners 必须配置为客户端可访问的 IP
  • 多 broker 时 broker.id 必须唯一
  • 防火墙开放 9092
  • 生产环境建议使用单独磁盘做 log.dirs

如果你愿意,我可以:

  • 帮你写 完整 systemd 脚本
  • 配置 多 broker 集群
  • 配置 SASL / SSL 安全
  • 针对 Debian 具体版本 给命令

你现在是 单机测试还是生产集群?

0 踩