下面以 CentOS 7/8 为例,讲清楚 Kafka 集群(多 broker) 的搭建步骤。假设你已经有 Java 和 Zookeeper(Kafka 2.8+ 也可不用 Zookeeper,这里以传统 Zookeeper 方式为例)。
假设 3 台 CentOS 服务器:
| 主机名 | IP | Kafka Broker ID |
|---|---|---|
| kafka1 | 192.168.1.11 | 1 |
| kafka2 | 192.168.1.12 | 2 |
| kafka3 | 192.168.1.13 | 3 |
Kafka 依赖 Zookeeper,建议 Zookeeper 也是 3 节点集群
yum install -y java-1.8.0-openjdk
java -version
cd /opt
wget https://archive.apache.org/dist/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 kafka
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:
echo 1 > /opt/zookeeper/data/myid # kafka1
echo 2 > /opt/zookeeper/data/myid # kafka2
echo 3 > /opt/zookeeper/data/myid # kafka3
编辑 /opt/kafka/config/server.properties
broker.id=1
listeners=PLAINTEXT://192.168.1.11:9092
advertised.listeners=PLAINTEXT://192.168.1.11:9092
log.dirs=/opt/kafka/logs
zookeeper.connect=192.168.1.11:2181,192.168.1.12:2181,192.168.1.13:2181
broker.id=2
listeners=PLAINTEXT://192.168.1.12:9092
advertised.listeners=PLAINTEXT://192.168.1.12:9092
log.dirs=/opt/kafka/logs
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
log.dirs=/opt/kafka/logs
zookeeper.connect=192.168.1.11:2181,192.168.1.12:2181,192.168.1.13:2181
⚠️ 注意:
broker.id 必须唯一listeners / advertised.listeners 必须用 IP 或 hostname/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
/opt/kafka/bin/zookeeper-shell.sh 127.0.0.1:2181
ls /brokers/ids
应看到:
[1, 2, 3]
/opt/kafka/bin/kafka-topics.sh \
--create \
--bootstrap-server 192.168.1.11:9092 \
--replication-factor 3 \
--partitions 3 \
--topic test-topic
/opt/kafka/bin/kafka-topics.sh \
--describe \
--bootstrap-server 192.168.1.11:9092 \
--topic test-topic
# 生产者
kafka-console-producer.sh --bootstrap-server 192.168.1.11:9092 --topic test-topic
# 消费者(另一台)
kafka-console-consumer.sh --bootstrap-server 192.168.1.12:9092 --topic test-topic --from-beginning
✅ 防火墙
firewall-cmd --add-port=9092/tcp --permanent
firewall-cmd --add-port=2181/tcp --permanent
firewall-cmd --reload
✅ 主机名解析(建议)
vi /etc/hosts
192.168.1.11 kafka1
192.168.1.12 kafka2
192.168.1.13 kafka3
如果你需要:
告诉我,我可以直接给你完整配置。