温馨提示×

kafka linux怎样集群

小樊
38
2026-10-08 05:43:31
栏目: 智能运维

下面给你一个从零在 Linux 上搭建 Kafka 集群的实战步骤(以 Kafka 3.x + KRaft 模式 为例,这也是现在官方推荐的方式,不再依赖 ZooKeeper)。


一、环境准备

1. 机器规划(示例)

假设有 3 台 Linux 服务器:

主机名 IP
kafka1 192.168.1.11
kafka2 192.168.1.12
kafka3 192.168.1.13

Kafka 集群最少 3 个节点,生产环境推荐 3/5 个

2. 基础依赖

  • JDK 11 或以上
  • 关闭防火墙或开放端口(9092、9093)
java -version

二、下载并安装 Kafka

在三台机器上都执行:

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 /opt/kafka
cd /opt/kafka

三、KRaft 模式集群配置(重点)

1. 生成 Cluster ID(只需一次)

在 任意一台机器 执行:

KAFKA_CLUSTER_ID=$(bin/kafka-storage.sh random-uuid)
echo $KAFKA_CLUSTER_ID

假设得到:

abc12345-6789-0abc-def1-23456789abcd

2. 修改配置文件

编辑 config/kraft/server.properties

kafka1

node.id=1
controller.quorum.voters=1@192.168.1.11:9093,2@192.168.1.12:9093,3@192.168.1.13:9093

listeners=PLAINTEXT://192.168.1.11:9092,CONTROLLER://192.168.1.11:9093
advertised.listeners=PLAINTEXT://192.168.1.11:9092

log.dirs=/opt/kafka/data

kafka2

node.id=2
controller.quorum.voters=1@192.168.1.11:9093,2@192.168.1.12:9093,3@192.168.1.13:9093

listeners=PLAINTEXT://192.168.1.12:9092,CONTROLLER://192.168.1.12:9093
advertised.listeners=PLAINTEXT://192.168.1.12:9092

log.dirs=/opt/kafka/data

kafka3

node.id=3
controller.quorum.voters=1@192.168.1.11:9093,2@192.168.1.12:9093,3@192.168.1.13:9093

listeners=PLAINTEXT://192.168.1.13:9092,CONTROLLER://192.168.1.13:9093
advertised.listeners=PLAINTEXT://192.168.1.13:9092

log.dirs=/opt/kafka/data

四、初始化并启动 Kafka

1. 初始化存储(三台都执行)

bin/kafka-storage.sh format \
  -t abc12345-6789-0abc-def1-23456789abcd \
  -c config/kraft/server.properties

2. 启动 Kafka

bin/kafka-server-start.sh -daemon config/kraft/server.properties

五、验证集群

1. 创建 Topic(副本数=3)

bin/kafka-topics.sh --create \
  --topic test \
  --partitions 3 \
  --replication-factor 3 \
  --bootstrap-server 192.168.1.11:9092

2. 查看 Topic 状态

bin/kafka-topics.sh --describe \
  --topic test \
  --bootstrap-server 192.168.1.11:9092

看到 Leader / Replicas / ISR 正常即成功


六、生产 & 消费测试

# 生产
bin/kafka-console-producer.sh \
  --topic test \
  --bootstrap-server 192.168.1.11:9092

# 消费
bin/kafka-console-consumer.sh \
  --topic test \
  --from-beginning \
  --bootstrap-server 192.168.1.12:9092

七、常见问题

✅ 集群必须 node.id 唯一
✅ controller.quorum.voters 三台必须一致
✅ 防火墙一定要放行 9092 / 9093
✅ 时间同步(NTP)


如果你需要:

  • ZooKeeper 模式(老版本)
  • Docker / K8s 部署
  • SASL / SSL 安全集群

告诉我你的使用场景,我可以直接给你对应方案。

0 踩