下面给你一个在 Ubuntu 上配置 Kafka 集群(多 Broker)的完整示例,适合本地测试或生产环境的基础配置。
假设你已经安装好 Java 和 Zookeeper(Kafka 2.8+ 也可以不用 Zookeeper,这里先用传统方式)。
| 节点 | IP | Broker ID |
|---|---|---|
| node1 | 192.168.1.101 | 1 |
| node2 | 192.168.1.102 | 2 |
| node3 | 192.168.1.103 | 3 |
如果是单机伪集群,可以用不同端口。
sudo apt update
sudo apt install openjdk-11-jdk -y
java -version
wget https://downloads.apache.org/kafka/3.6.1/kafka_2.13-3.6.1.tgz
tar -zxvf kafka_2.13-3.6.1.tgz
mv kafka_2.13-3.6.1 /opt/kafka
cd /opt/kafka
config/zookeeper.propertiestickTime=2000
dataDir=/opt/kafka/zookeeper-data
clientPort=2181
initLimit=5
syncLimit=2
server.1=192.168.1.101:2888:3888
server.2=192.168.1.102:2888:3888
server.3=192.168.1.103:2888:3888
mkdir -p /opt/kafka/zookeeper-data
node1
echo 1 > /opt/kafka/zookeeper-data/myid
node2
echo 2 > /opt/kafka/zookeeper-data/myid
node3
echo 3 > /opt/kafka/zookeeper-data/myid
/opt/kafka/bin/zookeeper-server-start.sh -daemon /opt/kafka/config/zookeeper.properties
config/server.propertiesbroker.id=1
listeners=PLAINTEXT://192.168.1.101:9092
advertised.listeners=PLAINTEXT://192.168.1.101:9092
log.dirs=/opt/kafka/kafka-logs
zookeeper.connect=192.168.1.101:2181,192.168.1.102:2181,192.168.1.103:2181
num.partitions=3
offsets.topic.replication.factor=3
transaction.state.log.replication.factor=3
transaction.state.log.min.isr=2
broker.id=2
listeners=PLAINTEXT://192.168.1.102:9092
advertised.listeners=PLAINTEXT://192.168.1.102:9092
broker.id=3
listeners=PLAINTEXT://192.168.1.103:9092
advertised.listeners=PLAINTEXT://192.168.1.103:9092
⚠️ broker.id 必须唯一
/opt/kafka/bin/kafka-server-start.sh -daemon /opt/kafka/config/server.properties
每个节点都执行。
/opt/kafka/bin/zookeeper-shell.sh 127.0.0.1:2181 ls /brokers/ids
/opt/kafka/bin/kafka-topics.sh \
--create \
--topic test-topic \
--bootstrap-server 192.168.1.101:9092 \
--partitions 3 \
--replication-factor 3
/opt/kafka/bin/kafka-topics.sh \
--describe \
--topic test-topic \
--bootstrap-server 192.168.1.101:9092
/opt/kafka/bin/kafka-console-producer.sh \
--topic test-topic \
--bootstrap-server 192.168.1.101:9092
/opt/kafka/bin/kafka-console-consumer.sh \
--topic test-topic \
--from-beginning \
--bootstrap-server 192.168.1.101:9092
sudo ufw allow 2181
sudo ufw allow 9092
一定要用其他机器能访问的 IP
如果你用的是 Kafka 3.x,我可以再给你一份 KRaft 集群配置(更简洁、官方推荐)。
如果你愿意,可以告诉我:
我可以直接给你定制配置。