1. Kafka安装前的环境准备Kafka作为分布式消息队列系统在安装前需要确保基础环境配置到位。我通常会先检查以下三个核心组件1.1 Java环境安装与验证Kafka运行依赖Java环境推荐使用OpenJDK 8或11版本。在Ubuntu系统上可以通过以下命令安装sudo apt update sudo apt install openjdk-11-jdk安装完成后验证版本java -version注意如果系统已安装多个Java版本需通过update-alternatives --config java设置默认版本。我曾遇到过因Java版本不匹配导致Kafka启动失败的情况特别提醒检查版本兼容性。1.2 系统资源规划根据生产环境需求合理分配资源内存单个Broker建议4GB以上磁盘SSD优先预留至少50GB空间文件描述符建议设置ulimit -n 100000可以通过修改/etc/security/limits.conf永久生效* soft nofile 100000 * hard nofile 1000001.3 主机名与网络配置确保/etc/hosts中包含正确的IP和主机名映射这对集群部署尤为重要。我曾经因为主机名解析问题浪费了两小时排查时间。2. Kafka二进制包安装2.1 下载与解压从Apache官网获取稳定版本当前推荐3.3.1wget https://downloads.apache.org/kafka/3.3.1/kafka_2.13-3.3.1.tgz tar -xzf kafka_2.13-3.3.1.tgz cd kafka_2.13-3.3.12.2 目录结构解析解压后的关键目录bin/操作脚本目录config/配置文件目录logs/日志存储目录生产环境建议外挂libs/依赖库目录3. 单机模式配置与启动3.1 Zookeeper配置调整修改config/zookeeper.propertiesdataDir/var/lib/zookeeper clientPort2181 maxClientCnxns100启动Zookeeperbin/zookeeper-server-start.sh config/zookeeper.properties 实操技巧使用nohup或screen保持后台运行避免SSH断开导致服务终止。3.2 Kafka服务配置修改config/server.properties核心参数broker.id0 listenersPLAINTEXT://:9092 log.dirs/tmp/kafka-logs num.partitions3启动Kafka服务bin/kafka-server-start.sh config/server.properties 4. 集群模式部署4.1 多节点配置要点在不同节点上需要修改broker.id1 # 各节点唯一ID listenersPLAINTEXT://hostname:9092 zookeeper.connectzk1:2181,zk2:2181,zk3:21814.2 集群验证方法创建测试Topic验证集群状态bin/kafka-topics.sh --create --topic test --partitions 3 \ --replication-factor 2 --bootstrap-server localhost:9092查看Topic详情bin/kafka-topics.sh --describe --topic test --bootstrap-server localhost:90925. 生产环境优化配置5.1 关键参数调优server.properties建议配置num.network.threads8 num.io.threads16 socket.send.buffer.bytes102400 socket.receive.buffer.bytes102400 log.retention.hours1685.2 日志管理策略推荐配置日志滚动策略log.segment.bytes1073741824 # 1GB分段 log.retention.check.interval.ms3000006. 常见问题排查指南6.1 启动失败排查流程检查端口冲突netstat -tulnp | grep 9092查看日志定位问题tail -n 100 logs/server.log6.2 性能问题处理若出现消息堆积增加分区数bin/kafka-topics.sh --alter --partitions 5调整消费者数量检查磁盘IO性能7. 安全加固措施7.1 SASL认证配置修改server.properties启用认证security.inter.broker.protocolSASL_PLAINTEXT sasl.mechanism.inter.broker.protocolPLAIN sasl.enabled.mechanismsPLAIN7.2 SSL加密配置生成证书后配置listenersSSL://:9093 ssl.keystore.location/path/to/keystore ssl.keystore.passwordkeystore_password ssl.key.passwordkey_password8. 监控与维护8.1 JMX监控配置启动时添加JMX参数export JMX_PORT9999 bin/kafka-server-start.sh config/server.properties8.2 日常维护命令查看Broker状态bin/kafka-broker-api-versions.sh --bootstrap-server localhost:9092我在实际运维中发现定期检查log.dirs磁盘使用率能预防90%的突发故障。建议设置监控告警当磁盘使用超过80%时自动触发日志清理。