Linux环境下Kafka集群管理的核心要点
Kafka集群的高可用性依赖于多节点Broker部署(建议至少3个)和Zookeeper集群(用于元数据管理、Leader选举,建议3或5节点)。需为每个Broker分配唯一的broker.id,配置listeners(Broker监听地址)和advertised.listeners(客户端连接的对外地址),确保节点间能互相通信。同时,Zookeeper的server.X配置需指向集群内所有节点,形成稳定的分布式协调体系。
核心配置文件server.properties的优化直接影响集群性能:
num.network.threads(处理网络请求的线程数)建议设为CPU核数+1;num.io.threads(处理磁盘I/O的线程数)建议设为CPU核数的2倍。log.dirs需指定多个磁盘目录(如/data/kafka1,/data/kafka2),实现并行读写;log.retention.hours(日志保留时间)根据业务需求设置(如72小时),避免磁盘空间耗尽;log.segment.bytes(日志段大小)建议设为1GB,便于日志滚动和清理。num.partitions(Topic分区数)应大于消费者数量,且为Broker数的倍数,提升并行处理能力;default.replication.factor(默认副本因子)建议设为3,确保数据冗余。--replication-factor 3,确保数据有多个副本分布在不同Broker上。min.insync.replicas(最小同步副本数)建议设为2,保证即使一个副本失效,数据仍能同步。unclean.leader.election.enable需设为false,禁止非同步副本成为Leader,避免数据丢失。-Xms4G -Xmx4G),选择G1垃圾回收器(-XX:+UseG1GC),减少Full GC停顿。ulimit -n 65536),调整TCP参数(如net.core.somaxconn=1024、net.ipv4.tcp_max_syn_backlog=8192),提升网络和I/O性能。batch.size(批量发送大小,如16KB)、linger.ms(等待批量发送的时间,如10ms)、compression.type(压缩类型,如snappy),减少网络开销;消费者配置fetch.min.bytes(每次拉取的最小数据量,如1KB)、max.poll.records(每次poll的最大记录数,如500条),提升消费吞吐量。kafka-topics.sh查看Topic信息、kafka-consumer-groups.sh查看消费者偏移量、kafka-broker-api-versions.sh检查API兼容性)进行日常巡检。log.retention.bytes限制单个日志文件大小),定期清理过期日志,避免磁盘空间不足。rsync同步到异地),确保灾难发生时快速恢复。SCRAM-SHA-256)进行Broker与客户端之间的身份验证,配置server.properties中的sasl.mechanism.inter.broker.protocol和listeners参数。ssl.keystore.location、ssl.truststore.location等参数。kafka-acls.sh工具配置ACL(访问控制列表),限制用户对Topic的生产/消费权限(如--producer、--consumer)。