Kafka在CentOS上的配置最佳实践
java-1.8.0-openjdk-devel),通过java -version验证安装是否成功。dataDir指向专用目录,clientPort设为2181)。log.dirs,如/var/lib/kafka/logs)需设置为Kafka用户(或运行用户)所有,避免权限问题导致服务异常。broker.id:每个Broker的唯一整数标识(集群中不可重复),建议使用服务器IP后几位(如192.168.1.10→10)。listeners:指定Broker监听的协议及地址(如SASL_PLAINTEXT://0.0.0.0:9092),需包含所有网络接口;advertised.listeners:客户端连接的地址(如PLAINTEXT://your_public_ip:9092),确保客户端能正确访问。zookeeper.connect需填写Zookeeper集群地址(如zk1:2181,zk2:2181,zk3:2181),建议添加chroot路径(如/kafka)隔离Kafka数据。log.dirs:指定多个日志目录(如/data/kafka1,/data/kafka2),提升磁盘IO并行能力;避免使用/tmp(系统重启可能清空)。log.retention.ms:日志保留时间(如168h,即7天),根据业务需求调整;log.cleanup.policy:日志清理策略(delete删除旧数据,compact压缩相同key的消息,适合日志类场景)。default.replication.factor:主题默认副本数(建议≥2,生产环境设为3,确保数据冗余);min.insync.replicas:最小同步副本数(建议设为2,保证数据可靠性)。num.partitions:主题默认分区数(根据消费者并行需求设置,如消费者线程数为4,建议设为4或更大,提升并行处理能力)。vm.swappiness:设为1(禁用或极少使用swap,避免磁盘IO瓶颈);vm.dirty_background_ratio:设为10(后台刷脏页的阈值);vm.dirty_ratio:设为60(触发强制刷脏页的阈值)。vm.max_map_count:设为262144(增加内存映射区域数量,提升Kafka处理大量文件的能力)。noatime选项(避免记录文件访问时间,减少IO开销)。net.core.rmem_default、net.core.wmem_default等参数(增大网络缓冲区,提升吞吐量)。batch.size:批量发送消息的字节数(如1048576,即1MB),增大可提升吞吐量;linger.ms:发送延迟(如100ms),等待更多消息合并后发送。compression.type:消息压缩类型(如lz4,兼顾压缩率与速度),减少网络传输和磁盘IO。fetch.min.bytes:每次拉取的最小字节数(如1048576,即1MB),减少拉取次数;fetch.max.wait.ms:拉取最大等待时间(如1000ms),平衡延迟与吞吐量。1/4~1/2(如8GB内存设为4g),避免过大导致GC停顿;使用G1垃圾回收器(-XX:+UseG1GC),提升GC效率。PLAIN机制),配置security.inter.broker.protocol=SASL_PLAINTEXT、sasl.enabled.mechanisms=PLAIN,并通过kafka_server_jaas.conf文件设置用户名密码。ssl.keystore.location、ssl.truststore.location),保护数据传输安全。firewall-cmd --add-rich-rule='rule family="ipv4" source address="192.168.1.0/24" port port="9092" protocol="tcp" accept')。kafka-topics.sh、kafka-consumer-groups.sh等命令定期检查Topic状态。log.retention.ms自动删除旧数据),避免磁盘空间耗尽;使用logrotate工具归档日志。snapshot目录)和Kafka日志目录(log.dirs),制定恢复流程(如从备份中恢复log.dirs)。