CentOS Kafka配置有哪些关键点
导读:一、基础配置:确保Broker正常运行 broker.id:每个Kafka broker的唯一标识符,集群内必须唯一,建议使用数字(如broker.id=1)。 listeners:Broker监听的地址和端口,需明确指定协议(如PLAI...
一、基础配置:确保Broker正常运行
- broker.id:每个Kafka broker的唯一标识符,集群内必须唯一,建议使用数字(如
broker.id=1
)。 - listeners:Broker监听的地址和端口,需明确指定协议(如
PLAINTEXT
、SASL_PLAINTEXT
)和IP/主机名(如listeners=PLAINTEXT://your.server.ip:9092
)。 - advertised.listeners:Broker向客户端广告的网络地址和端口,客户端用其连接Broker,需设置为公网或客户端可达的地址(如
advertised.listeners=PLAINTEXT://your.public.ip:9092
)。 - log.dirs:Kafka日志(消息数据)的存储目录,建议使用独立磁盘(如
log.dirs=/data/kafka-logs
),避免与系统文件共用,提升IO性能。 - zookeeper.connect:ZooKeeper集群连接字符串,用于集群管理和元数据存储(如
zookeeper.connect=zoo1:2181,zoo2:2181,zoo3:2181
)。
二、高可用性配置:保障数据与服务可靠性
- default.replication.factor:Topic的默认副本因子,建议设置为≥3(集群broker数≥3时),确保数据有多个副本,防止单点故障(如
default.replication.factor=3
)。 - min.insync.replicas:Producer发送消息时,要求同步副本的最小数量(需≤
default.replication.factor
),设置为≥2可保证数据不丢失(如min.insync.replicas=2
)。 - unclean.leader.election.enable:是否允许非同步副本(不在ISR列表中的副本)成为Leader,设置为
false
可避免数据丢失(如unclean.leader.election.enable=false
)。 - num.partitions:Topic的默认分区数,建议设置为broker数的倍数(如3个broker设置
num.partitions=6
),提升并行处理能力。
三、性能调优配置:提升吞吐与延迟
- JVM参数:调整堆内存大小(避免过大导致GC停顿)和垃圾回收器(推荐G1GC),如
export KAFKA_HEAP_OPTS="-Xms4G -Xmx4G -XX:+UseG1GC"
。 - 网络与IO线程:增加网络线程(
num.network.threads
,建议≥CPU核心数)和IO线程(num.io.threads
,建议≥磁盘数×2),提升并发处理能力(如num.network.threads=8
、num.io.threads=16
)。 - 批量发送与压缩:增大
batch.size
(如32768
,32KB)和linger.ms
(如10
,10ms),合并小消息减少网络开销;启用压缩(如compression.type=lz4
或snappy
),降低存储和传输成本。 - 日志刷新策略:调整
log.flush.interval.messages
(如10000
,1万条)和log.flush.interval.ms
(如1000
,1秒),平衡数据持久性与性能(避免频繁刷盘导致IO瓶颈)。 - 分区策略:合理设置分区数,分区越多并行度越高,但过多会增加ZooKeeper负担(建议单分区大小≤10GB)。
四、安全配置:保护数据传输与访问
- SASL认证:启用SASL/PLAIN认证(如
security.inter.broker.protocol=SASL_PLAINTEXT
、sasl.enabled.mechanisms=PLAIN
),并配置JAAS文件(export KAFKA_OPTS="-Djava.security.auth.login.config=/path/to/kafka_server_jaas.conf"
),防止未授权访问。 - SSL加密:配置SSL证书(如
ssl.keystore.location=/path/to/kafka.keystore.jks
、ssl.truststore.location=/path/to/kafka.truststore.jks
),加密Broker与客户端之间的通信,防止数据泄露。
五、操作系统优化:提升底层性能
- 文件描述符限制:增加系统文件描述符限制(如
ulimit -n 65535
),避免Kafka因文件句柄不足而崩溃。 - TCP参数调整:优化TCP缓冲区(如
net.core.wmem_default=1048576
、net.core.rmem_default=1048576
)和连接队列(如net.core.somaxconn=32768
),提升网络吞吐。 - 磁盘挂载选项:使用
noatime
选项挂载磁盘(如mount -o noatime /dev/sdb1 /data/kafka-logs
),减少不必要的磁盘IO。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: CentOS Kafka配置有哪些关键点
本文地址: https://pptw.com/jishu/730263.html