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模式配置(推荐)
生成集群ID(只需在一台机器上执行一次):
./bin/kafka-storage.sh random-uuid
记下输出的UUID(如
L4Ib1-3UTISkX4QyHx_5w
)编辑每台机器的
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)
注意事项
- 确保所有节点的时钟同步(使用NTP)
advertised.listeners
必须配置为客户端可以访问的地址- 生产环境建议配置SSL和SASL认证
- 监控Kafka集群的健康状态
- 根据硬件配置调整
num.network.threads
和num.io.threads
等参数
故障排查
- 查看日志:
/opt/kafka/logs/server.log
- 检查端口是否监听:
netstat -tulnp | grep java
- 检查集群状态:
./bin/kafka-cluster.sh --bootstrap-server node1:9092 describe
作者:admin 创建时间:2025-06-06 11:10
最后编辑:admin 更新时间:2025-06-07 09:53
最后编辑:admin 更新时间:2025-06-07 09:53