温馨提示×

kafka集群linux怎部署

小樊
43
2026-10-02 09:21:52
栏目: 智能运维

下面给你一份**在 Linux 上部署 Kafka 集群(以 3 节点为例)**的实用指南,基于 Kafka 3.x + ZooKeeper(如果你用 KRaft 模式也可以,后面会提)。


一、环境准备

1. 机器规划(示例)

主机名 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

2. 基础环境

# 三台机器都执行
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

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

1. 下载并解压

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

2. 配置 ZooKeeper

编辑:

/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

3. 启动 ZooKeeper

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

三、Kafka Broker 集群配置

1. 修改 server.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

2. 启动 Kafka

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

查看日志:

tail -f /opt/kafka/logs/server.log

四、验证 Kafka 集群

1. 创建 Topic

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

2. 查看 Topic

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

3. 生产 / 消费测试

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

# 消费(另一终端)
kafka-console-consumer.sh --topic test-topic --from-beginning --bootstrap-server kafka1:9092

五、KRaft 模式(新方式,无 ZooKeeper)

如果你用 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

六、常见问题

  • 无法连接 broker → 检查 advertised.listeners
  • ZK 起不来 → 检查 myid 和 dataDir
  • 生产慢 → 调整 acks、batch.size

如果你需要:

  • 生产级 systemd 服务
  • Docker / K8s 部署
  • 安全认证(SASL/SSL)

可以直接告诉我你的使用场景。

0 踩