温馨提示×

ubuntu kafka怎么配集群

小樊
37
2026-09-05 17:00:19
栏目: 智能运维

下面给你一个**在 Ubuntu 上搭建 Kafka 集群(以 3 台为例)**的实战步骤,基于 Kafka 3.x + Kafka 自带 Zookeeper(或 KRaft,可选),适合生产/测试环境。


一、环境准备(3 台 Ubuntu)

假设:

  • node1: 192.168.1.11
  • node2: 192.168.1.12
  • node3: 192.168.1.13

每台机器都做:

sudo apt update
sudo apt install -y openjdk-11-jdk
java -version

二、下载并安装 Kafka

每台机器执行:

cd /opt
sudo wget https://downloads.apache.org/kafka/3.6.1/kafka_2.13-3.6.1.tgz
sudo tar -xzf kafka_2.13-3.6.1.tgz
sudo mv kafka_2.13-3.6.1 kafka

三、配置 Zookeeper(集群)

Kafka 3.x 仍可用 Zookeeper(KRaft 也可,文末说明)

1️⃣ 修改 zookeeper.properties

sudo vi /opt/kafka/config/zookeeper.properties

内容:

dataDir=/opt/kafka/zookeeper
clientPort=2181
maxClientCnxns=0

server.1=192.168.1.11:2888:3888
server.2=192.168.1.12:2888:3888
server.3=192.168.1.13:2888:3888

2️⃣ 创建 myid

  • node1:
echo 1 | sudo tee /opt/kafka/zookeeper/myid
  • node2:
echo 2 | sudo tee /opt/kafka/zookeeper/myid
  • node3:
echo 3 | sudo tee /opt/kafka/zookeeper/myid

四、配置 Kafka(核心)

修改:

sudo vi /opt/kafka/config/server.properties

通用配置(每台改 broker.id 和 IP)

broker.id=1   # node2=2, node3=3

listeners=PLAINTEXT://192.168.1.11:9092
advertised.listeners=PLAINTEXT://192.168.1.11:9092

zookeeper.connect=192.168.1.11:2181,192.168.1.12:2181,192.168.1.13:2181

num.partitions=3
default.replication.factor=3
min.insync.replicas=2

log.dirs=/opt/kafka/logs

五、启动集群

1️⃣ 启动 Zookeeper

每台:

/opt/kafka/bin/zookeeper-server-start.sh -daemon /opt/kafka/config/zookeeper.properties

2️⃣ 启动 Kafka

每台:

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

六、验证集群

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

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

看到 Leader / Replicas / Isr 正常即成功 ✅


七、(可选)KRaft 模式(无 Zookeeper)

Kafka 3.x 推荐:

kafka-storage.sh random-uuid
kafka-storage.sh format

配置文件:config/kraft/server.properties


八、常见问题

  • ❌ 端口不通 → 防火墙
sudo ufw allow 2181,9092,2888,3888/tcp
  • ❌ broker.id 冲突
  • ❌ advertised.listeners 写错

如果你愿意,我可以:

  • 给你 systemd 服务文件
  • 帮你 Docker / K8s 部署
  • 或讲 KRaft 集群完整配置

你现在是测试还是生产环境?

0