Kafka集群部署与配置全指南
一、Kafka单节点部署详解
1. 软件准备与安装
下载Kafka发行版
wget https://downloads.apache.org/kafka/3.7.1/kafka_2.13-3.7.1.tgz
解压到指定目录
tar xf kafka_2.13-3.7.1.tgz -C /softwares/
2. 关键配置详解
server.properties核心配置
# 节点唯一标识(必须集群内唯一)
broker.id=91
# 数据存储目录(建议使用高性能磁盘)
log.dirs=/oldboyedu/data/kafka-logs
# ZooKeeper集群连接配置
zookeeper.connect=10.0.0.91:2181,10.0.0.92:2181,10.0.0.93:2181/oldboyedu-kafka371
配置说明:
broker.id:每个Kafka节点的唯一ID,集群内不能重复log.dirs:建议使用多块磁盘提高吞吐量(逗号分隔多个路径)zookeeper.connect:ZooKeeper集群地址,路径/oldboyedu-kafka371实现命名空间隔离
3. 环境变量配置
# 创建环境变量文件
cat > /etc/profile.d/kafka.sh <<'EOF'
#!/bin/bash
export KAFKA_HOME=/oldboyedu/softwares/kafka_2.13-3.7.1
export PATH=$PATH:${KAFKA_HOME}/bin
EOF
# 立即生效
source /etc/profile.d/kafka.sh
4. 服务启停管理
启动Kafka(后台模式)
kafka-server-start.sh -daemon $KAFKA_HOME/config/server.properties
停止Kafka
kafka-server-stop.sh
验证启动:
# 检查ZooKeeper注册信息
zkCli.sh ls /oldboyedu-kafka371/brokers/ids
# 应看到临时节点[91](表示broker 91已注册)
二、Kafka集群部署进阶
1. 集群节点配置同步
将主节点配置分发到其他节点
# 分发Kafka软件
scp -r /oldboyedu/softwares/kafka_2.13-3.7.1/ elk92:/oldboyedu/softwares/
scp -r /oldboyedu/softwares/kafka_2.13-3.7.1/ elk93:/oldboyedu/softwares/
# 分发环境变量
scp /etc/profile.d/kafka.sh elk92:/etc/profile.d/
scp /etc/profile.d/kafka.sh elk93:/etc/profile.d/
2. 各节点专属配置
在elk92节点修改
sed -i '/^broker.id/s#91#92#' $KAFKA_HOME/config/server.properties
在elk93节点修改
sed -i '/^broker.id/s#91#93#' $KAFKA_HOME/config/server.properties
关键检查点:
- 确保每个节点的
broker.id唯一 - 检查
zookeeper.connect配置一致 - 各节点
log.dirs目录权限正确
3. 集群启动与验证
启动所有节点
# 在各节点分别执行
kafka-server-start.sh -daemon $KAFKA_HOME/config/server.properties
集群健康检查
# 查看ZooKeeper注册的所有broker
zkCli.sh ls /oldboyedu-kafka371/brokers/ids
# 预期输出:[91, 92, 93](三个临时节点)
# 使用Kafka自带工具验证
kafka-broker-api-versions.sh --bootstrap-server 10.0.0.91:9092
三、生产环境关键配置
1. server.properties优化建议
# 网络配置
listeners=PLAINTEXT://0.0.0.0:9092
advertised.listeners=PLAINTEXT://10.0.0.91:9092
# 日志保留策略
log.retention.hours=168
log.segment.bytes=1073741824
log.retention.check.interval.ms=300000
# 副本与ISR配置
default.replication.factor=3
min.insync.replicas=2
unclean.leader.election.enable=false
2. JVM调优建议
# 修改bin/kafka-server-start.sh
export KAFKA_HEAP_OPTS="-Xms4G -Xmx4G -XX:MetaspaceSize=96m -XX:+UseG1GC"
export KAFKA_JVM_PERFORMANCE_OPTS="-XX:MaxGCPauseMillis=20 -XX:InitiatingHeapOccupancyPercent=35"
四、集群管理技巧
1. 常用管理命令
主题操作
# 创建主题(3分区,2副本)
kafka-topics.sh --create \
--bootstrap-server 10.0.0.91:9092 \
--replication-factor 2 \
--partitions 3 \
--topic test-topic
# 查看主题列表
kafka-topics.sh --list --bootstrap-server 10.0.0.91:9092
生产者测试
kafka-console-producer.sh \
--bootstrap-server 10.0.0.91:9092 \
--topic test-topic
消费者测试
kafka-console-consumer.sh \
--bootstrap-server 10.0.0.91:9092 \
--topic test-topic \
--from-beginning
2. 集群监控
使用kafka-topics.sh监控
kafka-topics.sh --describe \
--bootstrap-server 10.0.0.91:9092 \
--topic test-topic
使用JMX指标
export JMX_PORT=9999
kafka-server-start.sh config/server.properties
五、故障排查指南
1. 常见问题解决
问题1:ZooKeeper节点消失
- 检查网络连接
- 验证ZooKeeper集群健康状态
- 检查Kafka日志中的连接错误
问题2:磁盘空间不足
# 检查日志目录
df -h /oldboyedu/data/kafka-logs
# 临时解决方案:调整保留策略
kafka-configs.sh --alter \
--bootstrap-server 10.0.0.91:9092 \
--entity-type topics \
--entity-name test-topic \
--add-config retention.ms=3600000
2. 日志分析要点
# 关键日志位置
tail -f $KAFKA_HOME/logs/server.log
# 重点关注:
# - Controller选举过程
# - ISR集合变化
# - 副本同步异常
六、安全加固建议
1. 基础安全措施
# 启用SASL认证
security.inter.broker.protocol=SASL_PLAINTEXT
sasl.mechanism.inter.broker.protocol=PLAIN
sasl.enabled.mechanisms=PLAIN
2. 网络隔离
# 限制监听IP
listeners=PLAINTEXT://10.0.0.91:9092
# 启用防火墙规则
iptables -A INPUT -p tcp --dport 9092 -s 10.0.0.0/24 -j ACCEPT
总结
通过本文的详细指导,您已经完成了:
- Kafka单节点部署与配置
- 三节点集群的搭建与验证
- 生产环境关键参数调优
- 日常管理命令和监控方法
实际生产环境中建议:
- 至少部署3个broker节点保证高可用
- 监控磁盘使用率和ISR状态
- 定期测试故障转移能力
- 根据业务负载调整分区数和副本因子
附:集群验证完整流程
# 1. 创建测试主题
kafka-topics.sh --create \
--bootstrap-server 10.0.0.91:9092 \
--replication-factor 3 \
--partitions 3 \
--topic cluster-test
# 2. 生产测试消息
kafka-console-producer.sh \
--bootstrap-server 10.0.0.91:9092 \
--topic cluster-test
# 3. 消费测试消息(从不同节点)
kafka-console-consumer.sh \
--bootstrap-server 10.0.0.92:9092 \
--topic cluster-test \
--from-beginning
# 4. 查看主题详情
kafka-topics.sh --describe \
--bootstrap-server 10.0.0.93:9092 \
--topic cluster-test
浙公网安备 33010602011771号