「这是我参与11月更文挑战的第19天,活动详情查看:2021最后一次更文挑战」
server.properties
- broker.id=0
+ kafka集群是由多个节点组成的,每个节点称为一个broker,中文翻译是代理。每个broker都有一个不同的brokerId,由broker.id指定,是一个不小于0的整数,各brokerId必须不同,但不必连续。如果我们想扩展kafka集群,只需引入新节点,分配一个不同的broker.id即可。
+ 启动kafka集群时,每一个broker都会实例化并启动一个kafkaController,并将该broker的brokerId注册到zooKeeper的相应节点中。集群各broker会根据选举机制选出其中一个broker作为leader,即leader kafkaController。leader kafkaController负责主题的创建与删除、分区和副本的管理等。当leader kafkaController宕机后,其他broker会再次选举出新的leader kafkaController。
- log.dir = /export/data/kafka/
+ broker持久化消息到哪里,数据目录
- log.retention.hours = 168
+ log文件最小存活时间,默认是168h,即7天。相同作用的还有log.retention.minutes、log.retention.ms。retention是保存的意思。
+ 数据存储的最大时间超过这个时间会根据log.cleanup.policy设置的策略处理数据,也就是消费端能够多久去消费数据。
+ log.retention.bytes和log.retention.hours任意一个达到要求,都会执行删除,会被topic创建时的指定参数覆盖。
- log.retention.check.interval.ms
+ 多长时间检查一次是否有log文件要删除。默认是300000ms,即5分钟。
- log.retention.bytes
+ 限制单个分区的log文件的最大值,超过这个值,将删除旧的log,以满足log文件不超过这个值。默认是-1,即不限制。
- log.roll.hours
+ 多少时间会生成一个新的log segment,默认是168h,即7天。相同作用的还有log.roll.ms、segment.ms。
- log.segment.bytes
+ log segment多大之后会生成一个新的log segment,默认是1073741824,即1G。
- log.flflush.interval.messages
+ 指定broker每收到几个消息就把消息从内存刷到硬盘(刷盘)。默认是9223372036854775807 好大。
+ kafka官方不建议使用这个配置,建议使用副本机制和操作系统的后台刷新功能,因为这更高效。这个配置可以根据不同的topic设置不同的值,即在创建topic的时候设置值。
+ 补充说明:
1 | text复制代码在Linux操作系统中,当我们把数据写入到文件系统之后,数据其实在操作系统的page cache里面,并没有刷到磁盘上去。如果此时操作系统挂了,其实数据就丢了。 |
- log.flflush.interval.ms
+ 指定broker每隔多少毫秒就把消息从内存刷到硬盘。默认值同log.flflush.interval.messages一样,9223372036854775807。
+ 同log.flflush.interval.messages一样,kafka官方不建议使用这个配置。
- delete.topic.enable=true
+ 是否允许从物理上删除topic
kafka-eagle概述
在生产环境下,在Kafka集群中,消息数据变化是我们关注的问题,当业务前提不复杂时,我们可以使用Kafka命令提供带有Zookeeper客户端工具的工具,可以轻松完成我们的工作。随着业务的复杂性,增加Group和 Topic,那么我们使用Kafka提供命令工具,已经感到无能为力,那么Kafka监控系统目前尤为重要,我们需要观察 消费者应用的细节。
为了简化开发者和服务工程师维护Kafka集群的工作有一个监控管理工具,叫做 Kafka-eagle。这个管理工具可以很容易地发现分布在集群中的哪些topic分布不均匀,或者是分区在整个集群分布不均匀的的情况。它支持管理多个集群、选择副本、副本重新分配以及创建Topic。同时,这个管理工具也是一个非常好的可以快速浏览这个集群的工具,
搭建安装 kafka-eagle
环境要求:需要安装jdk,启动zk以及kafka的服务
1 | bash复制代码# 启动Zookeeper |
修改本机host文件
1 | 复制代码192.168.200.20 kafka1 |
搭建步骤:
- 下载kafka-eagle的源码包
+ kafka-eagle官网:[download.kafka-eagle.org/](http://download.kafka-eagle.org/)
我们可以从官网上面直接下载最新的安装包即可kafka-eagle-bin-1.3.2.tar.gz这个版本即可
+ 代码托管地址:[github.com/smartloli/E…](https://github.com/smartloli/EFAK/tags)
- 上传安装包并解压:
+ 这里我们选择将kafak-eagle安装在第三台
+ 如果要解压的是zip格式,需要先安装命令支持。
- yum install unzip
- unzip xxxx.zip
1 | bash复制代码#将安装包上传至 node01服务器的/export/softwares路径下, 然后解压 |
- 准备数据库:
+ kafka-eagle需要使用一个数据库来保存一些元数据信息,我们这里直接使用msyql数据库来保存即可,在node01服务器执行以下命令创建一个mysql数据库即可
1 | lua复制代码--进入mysql客户端: |
- 修改kafka-eagle配置文件
1 | ini复制代码cd /export/servers/kafka-eagle-bin-1.3.2/kafka-eagle-web-1.3.2/conf |
默认情况下MySQL只允许本机连接到MYSQL实例中,所以如果要远程访问,必须开放权限:
1 | sql复制代码//修改权限 |
- 配置环境变量
- kafka-eagle必须配置环境变量,node03服务器执行以下命令来进行配置环境变量
1 | bash复制代码vi /etc/profile |
- 启动kakfa-eagle
1 | bash复制代码cd kafka-eagle-web-1.3.2/bin |
- 访问主界面:http://node03:8048/ke/account/signin?/ke/
- 用户名:admin
- 密码:123456
本文转载自: 掘金