下面给你一个**在 Debian 系统上部署 Kafka 集群(以 3 节点为例)**的实战步骤,基于 Kafka 3.x + Kafka 自带的 ZooKeeper(也可后续替换为 KRaft)。
假设 3 台 Debian 机器:
| 主机名 | IP |
|---|---|
| kafka1 | 192.168.1.11 |
| kafka2 | 192.168.1.12 |
| kafka3 | 192.168.1.13 |
Kafka 依赖 Java,ZooKeeper 也依赖 Java
sudo apt update
sudo apt install -y openjdk-17-jdk
验证:
java -version
sudo useradd -m -s /bin/bash kafka
在 每台机器 执行:
cd /opt
sudo wget https://downloads.apache.org/kafka/3.7.1/kafka_2.13-3.7.1.tgz
sudo tar -xzf kafka_2.13-3.7.1.tgz
sudo mv kafka_2.13-3.7.1 kafka
sudo chown -R kafka:kafka /opt/kafka
sudo vim /opt/kafka/config/zookeeper.properties
示例(每台机器相同):
dataDir=/opt/kafka/zookeeper-data
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
kafka1
echo 1 | sudo tee /opt/kafka/zookeeper-data/myid
kafka2
echo 2 | sudo tee /opt/kafka/zookeeper-data/myid
kafka3
echo 3 | sudo tee /opt/kafka/zookeeper-data/myid
编辑:
sudo vim /opt/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/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
sudo -u kafka /opt/kafka/bin/zookeeper-server-start.sh -daemon /opt/kafka/config/zookeeper.properties
sudo -u kafka /opt/kafka/bin/kafka-server-start.sh -daemon /opt/kafka/config/server.properties
/opt/kafka/bin/zookeeper-shell.sh 192.168.1.11:2181
ls /brokers/ids
应看到:
[1, 2, 3]
/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
示例 /etc/systemd/system/kafka.service:
[Unit]
Requires=zookeeper.service
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
[Install]
WantedBy=multi-user.target
sudo ufw allow 2181
sudo ufw allow 9092
advertised.listenersmyid 和 server.x如果你愿意,我也可以:
你想用哪种方式?