下面给你一份**在 Debian 上搭建 Kafka 集群(以 3 节点为例)**的简明实战步骤,基于 Kafka 3.x + Kafka 自带 ZooKeeper(或 KRaft),适合生产/测试环境参考。
| 主机名 | IP | 角色 |
|---|---|---|
| kafka1 | 192.168.1.11 | broker + zk |
| kafka2 | 192.168.1.12 | broker + zk |
| kafka3 | 192.168.1.13 | broker + zk |
Kafka 2.8+ 支持 KRaft(无 ZooKeeper),但生产仍推荐 ZooKeeper 方案稳定
# 更新系统
apt update && apt upgrade -y
# 安装 Java(Kafka 需要 JDK 8/11/17)
apt install -y openjdk-11-jdk
java -version
cd /opt
wget https://archive.apache.org/dist/zookeeper/zookeeper-3.7.1/apache-zookeeper-3.7.1-bin.tar.gz
tar -xzf apache-zookeeper-3.7.1-bin.tar.gz
mv apache-zookeeper-3.7.1-bin zookeeper
cd /opt/zookeeper
cp conf/zoo_sample.cfg conf/zoo.cfg
编辑 conf/zoo.cfg:
dataDir=/opt/zookeeper/data
clientPort=2181
server.1=192.168.1.11:2888:3888
server.2=192.168.1.12:2888:3888
server.3=192.168.1.13:2888:3888
创建 myid:
mkdir -p /opt/zookeeper/data
# kafka1
echo 1 > /opt/zookeeper/data/myid
# kafka2
echo 2 > /opt/zookeeper/data/myid
# kafka3
echo 3 > /opt/zookeeper/data/myid
/opt/zookeeper/bin/zkServer.sh start
查看状态:
/opt/zookeeper/bin/zkServer.sh status
cd /opt
wget https://archive.apache.org/dist/kafka/3.6.1/kafka_2.13-3.6.1.tgz
tar -xzf kafka_2.13-3.6.1.tgz
mv kafka_2.13-3.6.1 kafka
编辑 config/server.properties
broker.id=1
listeners=PLAINTEXT://192.168.1.11:9092
advertised.listeners=PLAINTEXT://192.168.1.11:9092
zookeeper.connect=192.168.1.11:2181,192.168.1.12:2181,192.168.1.13:2181
log.dirs=/opt/kafka/logs
num.partitions=3
default.replication.factor=3
min.insync.replicas=2
broker.id=2
listeners=PLAINTEXT://192.168.1.12:9092
advertised.listeners=PLAINTEXT://192.168.1.12:9092
broker.id=3
listeners=PLAINTEXT://192.168.1.13:9092
advertised.listeners=PLAINTEXT://192.168.1.13:9092
/opt/kafka/bin/kafka-server-start.sh -daemon /opt/kafka/config/server.properties
查看日志:
tail -f /opt/kafka/logs/server.log
/opt/kafka/bin/kafka-topics.sh \
--create \
--topic test \
--partitions 3 \
--replication-factor 3 \
--bootstrap-server 192.168.1.11:9092
/opt/kafka/bin/kafka-topics.sh \
--describe \
--topic test \
--bootstrap-server 192.168.1.11:9092
# 生产者
kafka-console-producer.sh --topic test --bootstrap-server 192.168.1.11:9092
# 消费者
kafka-console-consumer.sh --topic test --from-beginning --bootstrap-server 192.168.1.12:9092
[Unit]
Description=Kafka
After=network.target
[Service]
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
listeners / advertised.listenersreplication.factor > broker 数如果你愿意,我可以:
你现在是 测试环境还是生产环境?