首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

还在查很多文档?一篇可以拿来即用的Kafka配置

Kafka是分布式发布-订阅消息系统,最初由LinkedIn公司开发,之后成为Apache项目的一部分。Kafka是一种快速、可扩展的、分布式的、分区的和可复制的提交日志服务。目前在互联网公司使用非常广泛,已经成为大数据分析的基础服务。

Kafka部署配置包含三个部分,分别是操作系统、ZooKeeper、Kafka。

操作系统

常见的操作系统是CentOS或RedHat,版本号有6.4、7.2、7.4等,集群起始机器配置一般是3台或者5台,Kafka与ZooKeeper分别部署在不同的机器上。

为避免Kafka报”Too many open files”错误,Kafka的limits文件配置“kafka.conf”,部署在路径“/etc/security/limits.d”下,Kafka服务必须配置完后启动才能生效。

kafka.conf

=====================

kafka hard nofile 100000

kafka soft nofile 100000

=====================

为了提高Kafka的性能,/etc/sysctl.conf文件需增加以下配置:

=====================

vm.swappiness=1//物理内存使用率超过99%时,使用swap分区,这样避免使用swap分区,否则影响性能。

vm.dirty_background_ratio=5//脏页达到系统内存5%时,后台刷新页面

vm.dirty_ratio=70//脏页占到系统内存70%时,刷新进磁盘

vm.max_map_count=262144//允许一个进程在虚拟内存区域的最大数量

net.core.wmen_default=131072//socket写缓冲区

net.core.rmem_default=131072//socket读缓冲区

net.core.wmen_max=2097152//socket最大写缓冲区

net.core.rmem_max=2097152//socket最大读缓冲区

=====================

ZooKeeper的limits文件配置如附件“zookeeper.conf”, 部署在路径“/etc/security/limits.d”下,ZooKeeper服务必须配置完后启动才能生效。

zookeeper.conf

=======================

zookeeper hard nofile 81920

zookeeper soft nofile 81920

=======================

ZooKeeper

目前ZooKeeper的稳定版本是3.4.13,对应的配置文件如文件“zookeeper.cfg”,一般部署在/etc/zookeeper路径下。

zookeeper.cfg

=========================

tickTime=2000 //最小时间单元,单位毫秒

initLimit=10//Follower启动,与Leader同步的时间倍数

syncLimit=5//Leader与Follower之间进行心跳检测的最大延时时间倍数

dataDir=$dir1/zookeeper//快照文件存储路径

dataLogDir=$dir2/zookeeper//事务日志文件存储路径

clientPort=2181//客户端端口

maxClientCnxns=60//单个客户端IP最大连接数

autopurge.snapRetainCount=10//自动清理快照文件保存个数

autopurge.purgeInterval=24//自动清理时间间隔,单位小时

server.1=zoo1.example.com:2888:3888//机器名:节点通信端口:选举端口

server.2=zoo2.example.com:2888:3888

server.3=zoo3.example.com:2888:3888

server.4=zoo4.example.com:2888:3888

server.5=zoo5.example.com:2888:3888

=========================

Kafka

Kafka使用的版本以0.10.2为例,对应的配置文件如附件“server.properties”,一般部署在/etc/kafka路径下。

server.properties

==========================

broker.id=$id //Broker的标识符

delete.topic.enable=true //打开删除Topic

auto.create.topics.enable=false //关闭自动创建Topic

listeners=PLAINTEXT://$ip:9092 //使用的协议及监听端口

advertised.listeners=PLAINTEXT://$ip:9092//使用的协议及监听端口

num.network.threads=3 //处理网络请求的网络线程数

num.io.threads=8 //处理网络请求的IO线程数

num.replica.fetchers=4 //Follower复制Leader消息的线程数

socket.send.buffer.bytes=102400 //Socket发送Buffer大小

socket.receive.buffer.bytes=102400 //网络请求Socket接受Buffer大小

socket.request.max.bytes=104857600 //Socket请求的最大大小

message.max.bytes=20000000 //消息的最大大小,默认1M,调整为20M,有些日志会很大

log.dirs=$dir/kafka //日志存放的路径

num.partitions=$broker_num * 2 //Topic的分区数,两倍的Broker数量

num.recovery.threads.per.data.dir=1 //服务器启动和关闭时,打开和关闭日志片段的线程数

log.retention.hours=72 //日志的保存时间,单位小时,历史配置

log.segment.bytes=1073741824 //日志分段的大小,默认1G

log.retention.check.interval.ms=300000 //日志保存时间的检查间隔

log.cleaner.enable=true //打开日志清理进程

zookeeper.connect=$ip1:2181,$ip2:2181,$ip3:2181,$ip4:2181,$ip5:2181/$chroot//连接的ZooKeeper及根路径

zookeeper.connection.timeout.ms=15000//ZooKeeper连接超时时间

zookeeper.session.timeout.ms=30000 //ZooKeeper会话超时时间

default.replication.factor=2 //Topic副本数,默认为1,对数据可用性要求高可设为3,节省磁盘使用2

replica.lag.time.max.ms=10000 //Leader从ISR中移除Follower的时间(Follower没有发送同步Leader请求或者没有同步完Leader的日志)

replica.fetch.wait.max.ms=500 //Follower同步Leader的最大等待时间

replica.socket.receive.buffer.bytes=65536//Socket接受网络请求的Buffer

replica.fetch.max.bytes=20000000 //Follower同步Leader的最大消息大小

replica.socket.timeout.ms=30000 //副本Socket超时时间

unclean.leader.election.enable=true //允许不在ISR中的Follower被选举为Leader

min.insync.replicas=1//最少与Leader同步的副本数

============================

如果有疑问或者不同观点,请在评论区留言,欢迎交流!

【关注】

如果觉得文章对你有用,请关注本微信公众号 - 全栈生涯

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20190106G0JWLK00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券