温馨提示×

linux kafka如何集群部署

小樊
44
2026-09-05 09:49:05
栏目: 智能运维

下面以 Linux 环境下 Kafka 集群部署 为例,给你一份实操向、生产可用的部署说明(基于 Kafka 3.x,自带 Zookeeper 或 KRaft 模式都可,这里先讲最常用、最稳定的 Zookeeper 模式)。


一、环境准备

1. 机器规划(示例)

假设 3 台服务器:

主机名 IP 角色
kafka1 192.168.1.101 broker + zookeeper
kafka2 192.168.1.102 broker + zookeeper
kafka3 192.168.1.103 broker + zookeeper

Kafka 依赖 Java,推荐 JDK 8 / 11 / 17(对应 Kafka 版本)

2. 基础环境

每台机器执行:

# 关闭防火墙或放行端口
systemctl stop firewalld
systemctl disable firewalld

# 安装 JDK
yum install -y java-11-openjdk

# 创建用户(可选)
useradd kafka

二、Zookeeper 集群部署(Kafka 依赖)

1. 下载并解压

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 -C /opt
ln -s /opt/kafka_2.13-3.6.1 /opt/kafka

2. 配置 Zookeeper

编辑:

vi /opt/kafka/config/zookeeper.properties

统一配置(3 台一致):

dataDir=/data/zookeeper
clientPort=2181
maxClientCnxns=0

server.1=192.168.1.101:2888:3888
server.2=192.168.1.102:2888:3888
server.3=192.168.1.103:2888:3888

3. 设置 myid

每台机器不同:

# kafka1
echo 1 > /data/zookeeper/myid

# kafka2
echo 2 > /data/zookeeper/myid

# kafka3
echo 3 > /data/zookeeper/myid

4. 启动 Zookeeper

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

三、Kafka Broker 集群部署

1. 修改 server.properties

vi /opt/kafka/config/server.properties

kafka1

broker.id=1
listeners=PLAINTEXT://192.168.1.101:9092
advertised.listeners=PLAINTEXT://192.168.1.101:9092
zookeeper.connect=192.168.1.101:2181,192.168.1.102:2181,192.168.1.103:2181
log.dirs=/data/kafka-logs
num.partitions=3
default.replication.factor=3
min.insync.replicas=2

kafka2

broker.id=2
listeners=PLAINTEXT://192.168.1.102:9092
advertised.listeners=PLAINTEXT://192.168.1.102:9092

kafka3

broker.id=3
listeners=PLAINTEXT://192.168.1.103:9092
advertised.listeners=PLAINTEXT://192.168.1.103:9092

⚠️ broker.id 必须唯一


2. 启动 Kafka

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

四、集群验证

1. 创建 Topic

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

2. 查看 Topic

kafka-topics.sh --describe \
--bootstrap-server 192.168.1.101:9092 \
--topic test-topic

3. 生产 / 消费测试

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

# 消费(另一台)
kafka-console-consumer.sh \
--bootstrap-server 192.168.1.102:9092 \
--topic test-topic --from-beginning

五、KRaft 模式(新方案,无 Zookeeper)

如果你用的是 Kafka 3.3+,可以用 KRaft:

# 生成集群 ID
kafka-storage.sh random-uuid

# 格式化
kafka-storage.sh format -t <uuid> -c config/kraft/server.properties

适合:

  • 新项目
  • 不想维护 Zookeeper

六、生产建议

  • ✅ 使用 SSD
  • ✅ 单独部署 Zookeeper(3 / 5 台)
  • ✅ 开启 acks=all
  • ✅ 监控(JMX + Prometheus + Grafana)
  • ✅ 配置 log.retention.hours

如果你愿意,我可以:

  • 给你 docker-compose 集群版
  • 给你 systemd 自启脚本
  • 或讲 KRaft 完整部署

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

0 踩