Kafka在Linux上的集群管理技巧
选择高性能硬件是基础:使用SSD替代传统机械硬盘(推荐3T及以上),提升磁盘I/O性能;配置充足内存(如128G及以上),配合JVM堆内存优化(-Xmx/-Xms设置为物理内存的70%-80%);采用高性能网络设备(如10Gbps及以上以太网卡),确保节点间通信低延迟。同时,优化网络带宽,避免因带宽瓶颈导致吞吐量受限。
num.network.threads(网络处理线程,默认3)和num.io.threads(IO处理线程,默认8),根据CPU核心数适当增加(如num.io.threads设置为CPU核心数的1-2倍),提升并发处理能力。socket.send.buffer.bytes(发送缓冲区,默认100KB)和socket.receive.buffer.bytes(接收缓冲区,默认100KB),优化网络传输效率。log.retention.hours(日志保留时间,默认168小时)和log.segment.bytes(日志段大小,默认1GB),避免日志膨胀占用过多磁盘空间;启用compression.type(压缩类型,默认none),减少网络传输和存储开销。ulimit -n 65536命令增大系统文件描述符限制,避免Kafka因并发连接过多无法处理。net.core.somaxconn(监听队列长度,默认128)和net.ipv4.tcp_max_syn_backlog(SYN队列长度,默认1024),提升网络连接处理能力;设置vm.swappiness=1,减少内存页交换到磁盘的概率,避免性能下降。-Xmx6G -Xms6G),避免频繁GC。-XX:+UseG1GC),减少Full GC停顿时间;启用JIT编译(默认开启),提升代码执行效率。replication.factor=3),确保数据冗余;通过min.insync.replicas(最小同步副本数,默认1)控制数据可靠性(建议设置为2,避免单副本故障导致数据丢失)。min.insync.replicas,防止因副本不同步导致数据丢失。rack.id参数,将Broker分布在不同机架或可用区,提升容灾能力(如机架断电时,其他机架的Broker仍能提供服务)。kafka-topics.sh、kafka-consumer-groups.sh等命令行工具,手动检查主题状态和消费者组消费情况。server.properties文件(设置唯一broker.id、指向同一Zookeeper集群的zookeeper.connect),启动Broker后,Kafka会自动将部分分区Leader迁移到新节点,实现负载均衡。log.cleanup.policy=delete,删除过期日志;log.retention.bytes,限制单个日志目录的最大大小),定期清理过期日志,避免磁盘空间耗尽。security.inter.broker.protocol=SASL_PLAINTEXT、sasl.mechanism.inter.broker.protocol=SCRAM-SHA-256)或SSL(ssl.enabled.protocols=TLSv1.2)身份认证,确保只有授权用户能访问Kafka集群。kafka-acls.sh命令配置ACL(访问控制列表),限制用户对主题的操作权限(如--operation produce、--operation consume),防止数据泄露或恶意篡改。ssl.keystore.location、ssl.truststore.location),保护数据在传输过程中的安全。