kakfa配置文件说明、 kafka监控与运维

863 阅读5分钟

「这是我参与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的时候设置值。
    • 补充说明:
    在Linux操作系统中,当我们把数据写入到文件系统之后,数据其实在操作系统的page cache里面,并没有刷到磁盘上去。如果此时操作系统挂了,其实数据就丢了。
    
    1、kafka是多副本的,当你配置了同步复制之后。多个副本的数据都在page cache里面,出现多个副本同时挂掉的概率比1个副本挂掉,概率就小很多了
    
    2、操作系统有后台线程,定期刷盘。如果应用程序每写入1次数据,都调用一次fsync,那性能损耗就很大,所以一般都会在性能和可靠性之间进行权衡。因为对应一个应用来说,虽然应用挂了,只要操作系统不挂,数据就不会丢。
    
  • 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的服务

# 启动Zookeeper
zkServer.sh start

#启动Kafka
nohup ./kafka-server-start.sh /export/servers/kafka/config/server.properties 2>&1 &

修改本机host文件

192.168.200.20 kafka1
192.168.200.20 kafka2
192.168.200.20 kafka3
192.168.200.11 node1
192.168.200.12 node2
192.168.200.13 node3

搭建步骤:

  • 下载kafka-eagle的源码包

  • 上传安装包并解压:

    • 这里我们选择将kafak-eagle安装在第三台
    • 如果要解压的是zip格式,需要先安装命令支持。
      • yum install unzip
      • unzip xxxx.zip
    #将安装包上传至 node01服务器的/export/softwares路径下, 然后解压
    cd /export/softwares/
    unzip kafka-eagle.zip
    cd cd kafka-eagle-web/target/
    tar -zxf kafka-eagle-web-2.0.1-bin.tar.gz -C /export/servers
    
  • 准备数据库:

    • kafka-eagle需要使用一个数据库来保存一些元数据信息,我们这里直接使用msyql数据库来保存即可,在node01服务器执行以下命令创建一个mysql数据库即可
    --进入mysql客户端:
    create database eagle;
    
  • 修改kafka-eagle配置文件

image.png

cd /export/servers/kafka-eagle-bin-1.3.2/kafka-eagle-web-1.3.2/conf
vim system-config.properties

#内容如下:
kafka.eagle.zk.cluster.alias=cluster1
cluster1.zk.list=node1:2181,node2:2181,node3:2181

kafka.eagle.driver=com.mysql.jdbc.Driver
kafka.eagle.url=jdbc:mysql://10.1.192.208:3306/eagle
kafka.eagle.username=root
kafka.eagle.password=wu7787879

默认情况下MySQL只允许本机连接到MYSQL实例中,所以如果要远程访问,必须开放权限:

//修改权限
update user set host = '%' where user ='root'; 
//刷新配置
flflush privileges; 
  • 配置环境变量
    • kafka-eagle必须配置环境变量,node03服务器执行以下命令来进行配置环境变量
vi /etc/profile
#内容如下:
export KE_HOME=/export/servers/kafka-eagle-bin-1.3.2/kafka-eagle-web-1.3.2
export PATH=:$KE_HOME/bin:$PATH

#让修改立即生效,执行
source /etc/profile
  • 启动kakfa-eagle
cd kafka-eagle-web-1.3.2/bin
chmod u+x ke.sh
./ke.sh start