下面给你一份**在 Linux 上部署 Kafka 集群(以 3 节点为例)**的实用指南,基于 Kafka 3.x + ZooKeeper(如果你用 KRaft 模式也可以,后面会提)。
| 主机名 | IP | 角色 |
|---|---|---|
| kafka1 | 192.168.1.11 | broker1 + zookeeper |
| kafka2 | 192.168.1.12 | broker2 + zookeeper |
| kafka3 | 192.168.1.13 | broker3 + zookeeper |
Kafka 依赖 Java,建议 JDK 8 或 11
# 三台机器都执行
hostnamectl set-hostname kafka1 # 对应修改
# /etc/hosts
192.168.1.11 kafka1
192.168.1.12 kafka2
192.168.1.13 kafka3
# 安装 Java
yum install -y java-11-openjdk
java -version
wget https://archive.apache.org/dist/kafka/3.6.1/kafka_2.13-3.6.1.tgz
tar -xzf kafka_2.13-3.6.1.tgz
mv kafka_2.13-3.6.1 /opt/kafka
编辑:
/opt/kafka/config/zookeeper.properties
dataDir=/opt/kafka/zkdata
clientPort=2181
maxClientCnxns=0
server.1=kafka1:2888:3888
server.2=kafka2:2888:3888
server.3=kafka3:2888:3888
创建 myid:
# kafka1
echo 1 > /opt/kafka/zkdata/myid
# kafka2
echo 2 > /opt/kafka/zkdata/myid
# kafka3
echo 3 > /opt/kafka/zkdata/myid
/opt/kafka/bin/zookeeper-server-start.sh -daemon /opt/kafka/config/zookeeper.properties
kafka1
broker.id=1
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
kafka2
broker.id=2
listeners=PLAINTEXT://kafka2:9092
advertised.listeners=PLAINTEXT://kafka2:9092
kafka3
broker.id=3
listeners=PLAINTEXT://kafka3:9092
advertised.listeners=PLAINTEXT://kafka3:9092
/opt/kafka/bin/kafka-server-start.sh -daemon /opt/kafka/config/server.properties
查看日志:
tail -f /opt/kafka/logs/server.log
kafka-topics.sh --create \
--bootstrap-server kafka1:9092 \
--replication-factor 3 \
--partitions 3 \
--topic test-topic
kafka-topics.sh --describe --topic test-topic --bootstrap-server kafka1:9092
# 生产
kafka-console-producer.sh --topic test-topic --bootstrap-server kafka1:9092
# 消费(另一终端)
kafka-console-consumer.sh --topic test-topic --from-beginning --bootstrap-server kafka1:9092
如果你用 Kafka 3.3+,推荐 KRaft:
# 生成 cluster ID
KAFKA_CLUSTER_ID=$(kafka-storage.sh random-uuid)
# 格式化
kafka-storage.sh format -t $KAFKA_CLUSTER_ID -c config/kraft/server.properties
# 启动
kafka-server-start.sh -daemon config/kraft/server.properties
advertised.listenersmyid 和 dataDiracks、batch.size如果你需要:
可以直接告诉我你的使用场景。