下面以 Debian 系列(Debian 11/12,Ubuntu 类似) 为例,说明 Kafka 集群的搭建步骤。Kafka 依赖 ZooKeeper(或 KRaft 模式,下面也会提)。
假设有 3 台 Debian 服务器:
| 主机名 | IP |
|---|---|
| kafka1 | 192.168.1.11 |
| kafka2 | 192.168.1.12 |
| kafka3 | 192.168.1.13 |
每台机器都执行:
sudo apt update
sudo apt install -y openjdk-17-jdk wget
java -version
在每台机器上:
cd /opt
wget https://downloads.apache.org/kafka/3.7.0/kafka_2.13-3.7.0.tgz
tar -xzf kafka_2.13-3.7.0.tgz
ln -s /opt/kafka_2.13-3.7.0 /opt/kafka
编辑 /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
sudo mkdir -p /var/lib/zookeeper
echo 1 | sudo tee /var/lib/zookeeper/myid
echo 2 | sudo tee /var/lib/zookeeper/myid
echo 3 | sudo tee /var/lib/zookeeper/myid
/opt/kafka/bin/zookeeper-server-start.sh -daemon /opt/kafka/config/zookeeper.properties
编辑 /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=/var/lib/kafka-logs
broker.id=2
listeners=PLAINTEXT://192.168.1.12:9092
advertised.listeners=PLAINTEXT://192.168.1.12:9092
zookeeper.connect=192.168.1.11:2181,192.168.1.12:2181,192.168.1.13:2181
broker.id=3
listeners=PLAINTEXT://192.168.1.13:9092
advertised.listeners=PLAINTEXT://192.168.1.13:9092
zookeeper.connect=192.168.1.11:2181,192.168.1.12:2181,192.168.1.13:2181
创建日志目录:
sudo mkdir -p /var/lib/kafka-logs
/opt/kafka/bin/kafka-server-start.sh -daemon /opt/kafka/config/server.properties
/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
Kafka 3.x 支持 KRaft:
controller.quorum.voters=1@192.168.1.11:9093,2@192.168.1.12:9093,3@192.168.1.13:9093process.roles=broker,controller如果你需要 KRaft 版本的完整配置,我可以单独给你一份。
可帮你写 kafka.service / zookeeper.service,开机自启。
如果你愿意,可以告诉我:
我可以直接给你 可直接用的配置文件。