简介:本文详细介绍Linux环境下Kafka 3.9.1的两种部署方案:基于Zookeeper的传统模式与新一代KRaft共识模式。涵盖环境准备、依赖安装、服务启动、配置优化等完整流程,特别针对生产环境提供端口管理、集群UUID生成等关键配置建议,帮助运维人员快速构建高可用消息队列系统。
推荐使用CentOS 7/8或Ubuntu 20.04 LTS等主流Linux发行版,需满足以下条件:
Kafka依赖Java运行环境,建议安装OpenJDK 11:
# CentOS安装示例sudo yum install -y java-11-openjdk-develjava -version # 验证安装# Ubuntu安装示例sudo apt updatesudo apt install -y openjdk-11-jdk
从Apache官方托管仓库获取最新稳定版(本文以3.9.2为例):
wget https://dlcdn.apache.org/zookeeper/zookeeper-3.9.2/apache-zookeeper-3.9.2-bin.tar.gztar -xzf apache-zookeeper-3.9.2-bin.tar.gz -C /opt/cd /opt/apache-zookeeper-3.9.2-bin
复制示例配置文件并修改关键参数:
cp conf/zoo_sample.cfg conf/zoo.cfgvim conf/zoo.cfg
核心配置项说明:
tickTime=2000 # 心跳间隔(ms)dataDir=/var/lib/zookeeper # 数据存储路径clientPort=2181 # 客户端连接端口maxClientCnxns=60 # 最大客户端连接数autopurge.snapRetainCount=3 # 保留快照数量autopurge.purgeInterval=24 # 自动清理间隔(小时)
启动/停止命令(需在安装目录执行):
# 启动服务(后台运行)bin/zkServer.sh start# 验证服务状态echo stat | nc localhost 2181# 预期输出:Zookeeper version: 3.9.2...# 停止服务bin/zkServer.sh stop
wget https://dlcdn.apache.org/kafka/3.9.1/kafka_2.13-3.9.1.tgztar -xzf kafka_2.13-3.9.1.tgz -C /opt/cd /opt/kafka_2.13-3.9.1
修改config/server.properties关键参数:
broker.id=0 # 节点ID(集群中需唯一)listeners=PLAINTEXT://:9092 # 监听地址log.dirs=/var/lib/kafka # 日志存储路径zookeeper.connect=localhost:2181 # Zookeeper连接串num.partitions=3 # 默认分区数log.retention.hours=168 # 日志保留时间(小时)
# 启动服务(后台运行)bin/kafka-server-start.sh -daemon config/server.properties# 验证服务状态netstat -tulnp | grep 9092# 预期输出:tcp 0 0 0.0.0.0:9092 0.0.0.0:* LISTEN# 停止服务bin/kafka-server-stop.sh
| 特性 | Zookeeper模式 | KRaft模式 |
|---|---|---|
| 元数据管理 | 独立Zookeeper集群 | 内置Quorum控制器 |
| 部署复杂度 | 高 | 低 |
| 扩展性 | 有限 | 优秀 |
| 推荐场景 | 传统架构 | 新建集群 |
cd /opt/kafka_2.13-3.9.1/bin./kafka-storage.sh random-uuid# 示例输出:5jXxYz12-3456-7890-aBcD-eFgHiJkLmNoP
# 使用生成的UUID格式化日志目录./kafka-storage.sh format -t <生成的UUID> -c ../config/kraft/server.properties
修改config/kraft/server.properties:
process.roles=broker,controller # 角色定义node.id=1 # 节点IDcontroller.quorum.voters=1@localhost:9093,2@node2:9093,3@node3:9093listeners=PLAINTEXT://:9092,CONTROLLER://:9093
# 启动服务(KRaft模式需指定配置目录)export KAFKA_OPTS=-Djava.security.auth.login.config=../config/kraft/jaas.confbin/kafka-server-start.sh ../config/kraft/server.properties
Zookeeper服务:
admin.serverPort=9089Kafka服务:
推荐集成Prometheus+Grafana监控体系:
# config/server.properties 安全相关配置security.inter.broker.protocol=SASL_PLAINTEXTsasl.enabled.mechanisms=PLAINsasl.mechanism.inter.broker.protocol=PLAINauthorizer.class.name=kafka.security.authorizer.AclAuthorizer
# 查找占用端口的进程lsof -i :9092# 强制终止进程kill -9 <PID>
配置日志轮转(推荐使用logrotate):
# /etc/logrotate.d/kafka/var/lib/kafka/*.log {dailyrotate 7missingoknotifemptycompressdelaycompresscopytruncate}
server.properties配置kafka-reassign-partitions.sh进行分区重分配本指南完整覆盖了Kafka 3.9.1在Linux环境下的两种部署模式,特别针对生产环境提供了详细的配置优化建议。实际部署时建议先在测试环境验证配置,再逐步迁移至生产环境。对于大规模集群,建议结合容器化部署方案实现更高效的资源管理。