一、环境准备:基础依赖与系统配置
sudo yum install java-1.8.0-openjdk-devel -y),并通过java -version验证安装。确保JAVA_HOME环境变量正确配置。zoo.cfg中的server.x参数(如server.1=zoo1:2888:3888;server.2=zoo2:2888:3888;server.3=zoo3:2888:3888),并设置dataDir(数据目录)、clientPort(客户端端口,默认2181)。noatime选项(减少文件访问时间戳更新开销)。vm.swappiness=1(禁用或极小化swap,避免磁盘I/O瓶颈)、vm.max_map_count=655360(增加内存映射区域数量,支持更多并发)、net.core.rmem_default=262144/net.core.wmem_default=262144(增大网络缓冲区,提升吞吐量)。disabled(setenforce 0并修改/etc/selinux/config),避免权限限制;开放Kafka端口(如9092)和Zookeeper端口(如2181),使用firewall-cmd --add-port=9092/tcp --permanent && firewall-cmd --reload。二、Kafka Broker核心配置:性能与可靠性平衡
broker.id(如1、2、3);listeners指定Broker监听的协议和地址(如PLAINTEXT://broker1.example.com:9092),advertised.listeners指定客户端连接的地址(如PLAINTEXT://public-ip:9092),确保客户端能正确访问。log.dirs设置多个日志目录(如/data/kafka1,/data/kafka2),实现磁盘并行读写;num.partitions设置Topic默认分区数(建议与集群Broker数量一致,提升并行度);default.replication.factor设置默认副本数(生产环境建议3,保证数据冗余);min.insync.replicas=2(确保写入成功的最小副本数,避免脑裂)。zookeeper.connect指向Zookeeper集群地址(如zoo1:2181,zoo2:2181,zoo3:2181),建议配置zookeeper.connection.timeout.ms=6000(连接超时时间)。三、性能优化:提升吞吐与降低延迟
-Xms8G -Xmx8G,占物理内存的70%-80%),避免频繁GC;使用G1垃圾回收器(-XX:+UseG1GC),适合大内存场景;设置-XX:MaxGCPauseMillis=200(目标GC停顿时间)。vm.dirty_background_ratio=5(脏页占比达到5%时后台刷盘)、vm.dirty_ratio=10(脏页占比达到10%时强制刷盘),平衡I/O性能与数据安全性。net.ipv4.tcp_wmem="4096 16384 131072"、net.ipv4.tcp_rmem="4096 65536 1048576"),增大窗口大小,提升网络吞吐量。batch.size=16384(批量发送大小,提升吞吐量)、linger.ms=5(等待批量发送的时间,平衡延迟与吞吐)、compression.type=snappy(启用Snappy压缩,减少网络传输和存储开销)、acks=all(确保消息持久化到所有ISR副本)。fetch.max.bytes=524288(每次拉取的最大数据量,减少网络开销)、max.poll.records=500(每次poll的最大记录数,提升吞吐)、max.poll.interval.ms=300000(两次poll的最大间隔,避免频繁rebalance)。num.network.threads=8(网络请求线程数,建议CPU核数+1)、num.io.threads=16(磁盘I/O线程数,建议CPU核数×2)、log.segment.bytes=1073741824(日志段大小,1GB,平衡磁盘I/O与日志切换频率)。四、高可用性保障:防止单点故障
default.replication.factor=3(每个分区3个副本),min.insync.replicas=2(写入时至少2个副本确认),确保数据冗余和写入可靠性。auto.leader.rebalance.enable=true),将分区Leader转移到健康副本,无需人工干预。tickTime=2000(心跳间隔)、initLimit=5(Leader与Follower初始同步时间)、syncLimit=2(Leader与Follower同步超时时间)。五、监控与维护:确保稳定运行
kafka-topics.sh、kafka-consumer-groups.sh)查看Topic状态和消费者组进度。log.retention.hours=168,保留7天)和Zookeeper日志(autopurge.snapRetainCount=3,保留3个快照),避免磁盘空间耗尽;设置日志轮转(logrotate),自动压缩和删除旧日志。dataDir目录)和Kafka日志(log.dirs目录),防止数据丢失;定期升级Kafka和Zookeeper版本(注意兼容性,如Kafka 3.x与Zookeeper 3.7.x及以上版本兼容),修复已知漏洞和提升性能。