Kafka 3节点集群部署指南(版本2.13,内置Zookeeper)

环境准备

  • 3台Linux服务器(CentOS/Ubuntu等)
  • 每台机器至少4GB内存
  • JDK 8或11已安装
  • 网络互通,防火墙配置允许相关端口通信

安装步骤

1. 下载并解压Kafka

在所有3台机器上执行:

# 下载Kafka 2.13
wget http://192.168.1.2/file/kafka/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
cd /opt/kafka

2. 配置Zookeeper

编辑每台机器的config/kraft/README.md查看内置Zookeeper的配置说明,但更推荐使用Kafka Raft模式(KRaft):

KRaft模式配置(推荐)

  1. 生成集群ID(只需在一台机器上执行一次):

    ./bin/kafka-storage.sh random-uuid

    记下输出的UUID(如L4Ib1-3UTISkX4QyHx_5w

  2. 编辑每台机器的config/kraft/server.properties

# 节点1配置
node.id=1
process.roles=controller,broker
controller.quorum.voters=1@node1:9093,2@node2:9093,3@node3:9093
listeners=PLAINTEXT://:9092,CONTROLLER://:9093
advertised.listeners=PLAINTEXT://node1:9092
log.dirs=/opt/kafka/data
# 节点2配置
node.id=2
process.roles=controller,broker
controller.quorum.voters=1@node1:9093,2@node2:9093,3@node3:9093
listeners=PLAINTEXT://:9092,CONTROLLER://:9093
advertised.listeners=PLAINTEXT://node2:9092
log.dirs=/opt/kafka/data
# 节点3配置
node.id=3
process.roles=controller,broker
controller.quorum.voters=1@node1:9093,2@node2:9093,3@node3:9093
listeners=PLAINTEXT://:9092,CONTROLLER://:9093
advertised.listeners=PLAINTEXT://node3:9092
log.dirs=/opt/kafka/data

3. 格式化存储目录

在每台机器上执行(使用之前生成的集群ID):

./bin/kafka-storage.sh format -t <生成的UUID> -c config/kraft/server.properties

4. 启动Kafka集群

在每台机器上执行:

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

5. 验证集群状态

在任何一台机器上执行:

./bin/kafka-metadata-shell.sh --snapshot /opt/kafka/data/__cluster_metadata-0/00000000000000000000.log

然后输入ls brokers查看broker列表

6. 创建测试Topic验证

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

可选配置

设置系统服务(以节点1为例)

创建服务文件/etc/systemd/system/kafka.service

[Unit]
Description=Apache Kafka Server
After=network.target

[Service]
User=root
Group=root
ExecStart=/opt/kafka/bin/kafka-server-start.sh /opt/kafka/config/kraft/server.properties
ExecStop=/opt/kafka/bin/kafka-server-stop.sh
Restart=on-failure

[Install]
WantedBy=multi-user.target

然后执行:

systemctl daemon-reload
systemctl enable kafka
systemctl start kafka

防火墙配置

确保以下端口开放:

  • 9092 (Kafka客户端通信)
  • 9093 (控制器通信)
  • 9094 (如需SSL)

注意事项

  1. 确保所有节点的时钟同步(使用NTP)
  2. advertised.listeners必须配置为客户端可以访问的地址
  3. 生产环境建议配置SSL和SASL认证
  4. 监控Kafka集群的健康状态
  5. 根据硬件配置调整num.network.threadsnum.io.threads等参数

故障排查

  1. 查看日志:/opt/kafka/logs/server.log
  2. 检查端口是否监听:netstat -tulnp | grep java
  3. 检查集群状态:./bin/kafka-cluster.sh --bootstrap-server node1:9092 describe
作者:admin  创建时间:2025-06-06 11:10
最后编辑:admin  更新时间:2025-06-07 09:53