温馨提示×

kafka集群debian怎么配

小樊
38
2026-09-09 21:16:14
栏目: 智能运维

下面给你一份在 Debian 上配置 Kafka 集群(多 broker)的实战步骤,偏向生产可用基础配置,使用 Kafka 3.x + Java 17(或 11)+ systemd


一、环境准备

1. 机器规划(示例)

假设 3 台 Debian 机器:

主机名 IP Kafka broker id
kafka1 192.168.1.11 1
kafka2 192.168.1.12 2
kafka3 192.168.1.13 3

Kafka 依赖 ZooKeeper(Kafka 3.5 前)或 KRaft(新模式)
下面先用 ZooKeeper 模式(最常用、最稳)


2. 安装 Java

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

java -version

3. 创建用户(推荐)

sudo useradd -m -s /bin/bash kafka

二、安装 Kafka

每台机器 执行:

cd /opt
sudo wget https://archive.apache.org/dist/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

三、ZooKeeper 配置(集群)

1. 编辑 zookeeper.properties

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

内容:

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

server.1=192.168.1.11:2888:3888
server.2=192.168.1.12:2888:3888
server.3=192.168.1.13:2888:3888

2. 创建 myid

sudo mkdir -p /var/lib/zookeeper
echo "1" | sudo tee /var/lib/zookeeper/myid   # kafka1=1, kafka2=2...

四、Kafka Broker 配置

编辑:

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

kafka1 示例

broker.id=1
listeners=PLAINTEXT://192.168.1.11:9092
advertised.listeners=PLAINTEXT://192.168.1.11:9092

num.network.threads=3
num.io.threads=8

socket.send.buffer.bytes=102400
socket.receive.buffer.bytes=102400
socket.request.max.bytes=104857600

log.dirs=/var/lib/kafka-logs
num.partitions=3
default.replication.factor=3
min.insync.replicas=2

zookeeper.connect=192.168.1.11:2181,192.168.1.12:2181,192.168.1.13:2181
zookeeper.connection.timeout.ms=18000

offsets.topic.replication.factor=3
transaction.state.log.replication.factor=3
transaction.state.log.min.isr=2

kafka2 / kafka3 只改 broker.id 和 IP


五、目录权限

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

六、systemd 启动(推荐)

1. ZooKeeper

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

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

[Install]
WantedBy=multi-user.target

2. Kafka

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

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

[Install]
WantedBy=multi-user.target

3. 启动

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

七、验证集群

1. 查看 broker

/opt/kafka/bin/zookeeper-shell.sh localhost:2181
> ls /brokers/ids

2. 创建 Topic

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

3. 生产 / 消费

kafka-console-producer.sh --topic test --bootstrap-server 192.168.1.11:9092
kafka-console-consumer.sh --topic test --bootstrap-server 192.168.1.11:9092 --from-beginning

八、常见坑

✅ 防火墙

sudo ufw allow 2181
sudo ufw allow 9092

advertised.listeners 必须写 真实 IP

replication.factor > broker 数量 会建不了 topic


九、可选:KRaft 模式(无 ZooKeeper)

如果你用的是 Kafka 3.5+,我可以单独给你 KRaft 集群配置


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

  • Debian 版本(11 / 12)
  • Kafka 版本
  • 是否用 KRaft
  • 是否要 SSL / SASL

我可以直接给你 一份可直接用的配置文件

0