1. 前置环境准备
sudo apt install openjdk-11-jdk,验证:java -version。zookeeper.connect(如localhost:2181)或Kraft集群信息。2. 版本兼容性
3. 关键配置参数调整
listeners定义Broker内部监听地址(如PLAINTEXT://0.0.0.0:9092),advertised.listeners定义外部客户端访问地址(如PLAINTEXT://your.domain.com:9092),需确保客户端能解析该地址。/tmp/kafka-logs(易被系统清理),建议修改为专用目录(如/var/lib/kafka/logs),并设置多目录(逗号分隔)提升IO性能。host1:port1,host2:port2(至少3个节点),确保网络可达。4. 文件描述符与权限设置
/etc/sysctl.conf添加fs.file-max=655350,编辑/etc/security/limits.conf添加* soft nofile 655350、* hard nofile 655350,并通过ulimit -n 655350临时生效;若使用systemd,需在Kafka服务文件(如/etc/systemd/system/kafka.service)中添加LimitNOFILE=655350。kafka)运行Kafka,避免权限问题。创建用户与组:sudo groupadd kafka; sudo useradd -g kafka kafka;修改数据、日志、配置目录权限:sudo chown -R kafka:kafka /var/lib/kafka /var/log/kafka /etc/kafka;若使用systemd,需在服务文件中指定User=kafka、Group=kafka。5. 性能优化
batch.size(默认16KB,建议32~64KB,减少网络请求)、linger.ms(默认200ms,建议500~1000ms,合并更多消息)、compression.type(启用Snappy/Gzip压缩,减少传输数据量)。num.network.threads(网络收发线程,默认3,建议8~16,适配万兆网卡)、num.io.threads(磁盘IO线程,默认8,建议16~32,匹配CPU核心数)、log.segment.bytes(日志分段大小,默认1GB,建议1~2GB,减少分段数量)、log.retention.hours(日志保留时间,默认168小时/7天,根据业务需求调整)。fetch.min.bytes(默认1KB,建议1~4MB,减少拉取次数)、max.poll.records(默认500,建议1000~2000,单次拉取更多消息)、enable.auto.commit(建议设为false,手动提交offset,避免重复消费)。6. 安全配置
ssl.keystore.location、ssl.truststore.location等参数),防止数据泄露;配置ACL(访问控制列表),限制客户端对Topic、分区等资源的访问(如kafka-acls.sh命令)。log.dirs),可使用rsync或专用备份工具,避免磁盘故障导致数据丢失。7. 监控与维护
kafka-topics.sh、kafka-consumer-groups.sh)监控Topic状态、消费者组进度;部署Prometheus+Grafana监控集群指标(如吞吐量、延迟、错误率)。log4j.properties中设置log.retention.hours),避免日志文件过大占用磁盘空间;定期检查日志中的ERROR/WARN信息,及时排查问题。