下面以 Debian / Ubuntu 系统为例,说明 Kafka 集群(多 Broker) 的基本配置步骤。假设使用 Kafka 3.x + Kafka 自带 Zookeeper(也可使用 KRaft,但新手建议先 Zookeeper 模式)。
假设 3 台 Debian 机器:
| 主机名 | IP | Broker ID |
|---|---|---|
| kafka1 | 192.168.1.11 | 1 |
| kafka2 | 192.168.1.12 | 2 |
| kafka3 | 192.168.1.13 | 3 |
Kafka 依赖 Java,先安装:
sudo apt update
sudo apt install -y openjdk-17-jdk
java -version
cd /opt
sudo wget https://downloads.apache.org/kafka/3.7.0/kafka_2.13-3.7.0.tgz
sudo tar -xzf kafka_2.13-3.7.0.tgz
sudo mv kafka_2.13-3.7.0 kafka
Kafka 集群依赖 Zookeeper(除非用 KRaft)
sudo vim /opt/kafka/config/zookeeper.properties
内容示例(三台相同):
dataDir=/opt/kafka/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
# kafka1
echo 1 | sudo tee /opt/kafka/zookeeper/myid
# kafka2
echo 2 | sudo tee /opt/kafka/zookeeper/myid
# kafka3
echo 3 | sudo tee /opt/kafka/zookeeper/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/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/zookeeper-server-start.sh -daemon /opt/kafka/config/zookeeper.properties
/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
看到 Leader / Replicas / Isr 有多台即成功。
# 生产
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
如果你需要:
可以直接告诉我你的使用场景。