温馨提示×

ubuntu kafka配置如何设集群

小樊
50
2026-10-17 05:56:32
栏目: 智能运维

下面以 Ubuntu + Kafka(以 3.x 为例,Kafka 自带 Zookeeper 或 KRaft 模式) 为例,说明如何配置 Kafka 集群。


一、准备工作(3 台 Ubuntu 服务器)

假设有 3 台机器:

主机名 IP
kafka1 192.168.1.11
kafka2 192.168.1.12
kafka3 192.168.1.13

每台机器都:

  • 安装 JDK 8+
  • 下载 Kafka
  • 解压到 /opt/kafka
sudo apt update
sudo apt install openjdk-11-jdk -y
wget https://downloads.apache.org/kafka/3.6.1/kafka_2.13-3.6.1.tgz
tar -xzf kafka_2.13-3.6.1.tgz -C /opt
ln -s /opt/kafka_2.13-3.6.1 /opt/kafka

二、Zookeeper 模式(传统方式,常用)

1️⃣ 配置 Zookeeper(3 台都要)

编辑 config/zookeeper.properties

dataDir=/var/lib/zookeeper
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:

# kafka1
echo 1 > /var/lib/zookeeper/myid

# kafka2
echo 2 > /var/lib/zookeeper/myid

# kafka3
echo 3 > /var/lib/zookeeper/myid

2️⃣ 配置 Kafka(每台不同)

编辑 config/server.properties

kafka1

broker.id=1
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

kafka2

broker.id=2
listeners=PLAINTEXT://192.168.1.12:9092
advertised.listeners=PLAINTEXT://192.168.1.12:9092
zookeeper.connect=192.168.1.11:2181,192.168.1.12:2181,192.168.1.13:2181

kafka3

broker.id=3
listeners=PLAINTEXT://192.168.1.13:9092
advertised.listeners=PLAINTEXT://192.168.1.13:9092
zookeeper.connect=192.168.1.11:2181,192.168.1.12:2181,192.168.1.13:2181

3️⃣ 启动集群

# 先启动 zookeeper
/opt/kafka/bin/zookeeper-server-start.sh -daemon /opt/kafka/config/zookeeper.properties

# 再启动 kafka
/opt/kafka/bin/kafka-server-start.sh -daemon /opt/kafka/config/server.properties

三、KRaft 模式(Kafka 3.x 推荐,无 Zookeeper)

1️⃣ 生成集群 ID

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

2️⃣ 配置 server.properties

kafka1

process.roles=broker,controller
node.id=1
listeners=PLAINTEXT://192.168.1.11:9092,CONTROLLER://192.168.1.11:9093
controller.quorum.voters=1@192.168.1.11:9093,2@192.168.1.12:9093,3@192.168.1.13:9093

kafka2 / kafka3

只需改 node.id 和 IP

3️⃣ 格式化存储

/opt/kafka/bin/kafka-storage.sh format -t $KAFKA_CLUSTER_ID -c /opt/kafka/config/server.properties

4️⃣ 启动

/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

五、常见注意点

✅ broker.id 必须唯一
✅ advertised.listeners 必须能被其他节点访问
✅ 防火墙开放 9092 / 2181 / 9093
✅ 生产环境建议 3 或 5 个节点


如果你愿意,我可以:

  • 给你 systemd 启动脚本
  • 帮你 Docker / K8s 部署
  • 按你当前 Ubuntu 版本和 Kafka 版本细化配置

你现在是 Zookeeper 还是 KRaft?

0 踩