下面按最常见、最稳妥的方式给你讲 Linux 下 Kafka 集群搭建(以 Kafka 3.x + Kafka 自带 Zookeeper 为例,生产环境也可用 KRaft,但先讲经典方案)。
假设 3 台 Linux 服务器:
| 主机名 | IP | 角色 |
|---|---|---|
| kafka1 | 192.168.1.11 | broker + zookeeper |
| kafka2 | 192.168.1.12 | broker + zookeeper |
| kafka3 | 192.168.1.13 | broker + zookeeper |
Kafka 版本示例:
kafka_2.13-3.6.0.tgz
java -version
没有就装:
yum install -y java-11-openjdk
# 或
apt install -y openjdk-11-jdk
cd /opt
wget https://archive.apache.org/dist/kafka/3.6.0/kafka_2.13-3.6.0.tgz
tar -xzf kafka_2.13-3.6.0.tgz
ln -s /opt/kafka_2.13-3.6.0 /opt/kafka
vi /etc/hosts
192.168.1.11 kafka1
192.168.1.12 kafka2
192.168.1.13 kafka3
编辑:
vi /opt/kafka/config/zookeeper.properties
dataDir=/opt/kafka/zookeeper
clientPort=2181
maxClientCnxns=0
server.1=kafka1:2888:3888
server.2=kafka2:2888:3888
server.3=kafka3:2888:3888
# kafka1
echo 1 > /opt/kafka/zookeeper/myid
# kafka2
echo 2 > /opt/kafka/zookeeper/myid
# kafka3
echo 3 > /opt/kafka/zookeeper/myid
编辑:
vi /opt/kafka/config/server.properties
broker.id=1 # kafka2=2, kafka3=3
listeners=PLAINTEXT://kafka1:9092
advertised.listeners=PLAINTEXT://kafka1:9092
zookeeper.connect=kafka1:2181,kafka2:2181,kafka3:2181
log.dirs=/opt/kafka/kafka-logs
num.partitions=3
default.replication.factor=3
min.insync.replicas=2
/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 kafka1:2181
ls /brokers/ids
/opt/kafka/bin/kafka-topics.sh \
--create \
--topic test \
--partitions 3 \
--replication-factor 3 \
--bootstrap-server kafka1:9092
/opt/kafka/bin/kafka-topics.sh \
--describe \
--topic test \
--bootstrap-server kafka1:9092
✅ 使用 KRaft 模式(Kafka 3.3+ 推荐,不再依赖 Zookeeper)
✅ 使用 systemd 管理服务
✅ 打开防火墙端口:
✅ 配置:
log.retention.hoursauto.create.topics.enable=false我可以帮你:
你现在是 学习 / 测试 / 生产 用?