1.概述

最近有同学留言,Kafka Eagle的分布式模式功能怎么使用,如何部署安装?今天笔者就为大家来详细介绍一下Kafka Eagle的分布式模式功能的安装和使用。

2.内容

首先,这里我们需要说明一下,Kafka Eagle已经更名为EFAK(Eagle For Apache Kafka)。感谢Apache Kafka PMC的认可,EFAK将继续提供和开发新功能,来满足Kafka集群和应用的相关监控和管理功能。

2.1 背景

当我们管理Kafka多集群或者一个规模较大的Kafka集群时,单机模式的EFAK部署时,运行的多线程任务,相关消费者、Topic、生产者、Broker & Zookeeper的监控指标等内容调度时,部署EFAK的服务器如果配置较低,会造成很大的负载,对CPU的负载会很高。为了解决这类问题,EFAK开发了分布式模式的部署,可由多个低配置的服务器来组件一个EFAK集群。来对Kafka多集群进行监控和管理。

2.2 基础环境

部署EFAK所需要的基础环境如下:

2.2.1 硬件和操作系统

  • 操作系统:Linux系统即可(Ubuntu、CentOS等)
  • JDK:JDK8以上
  • CPU:1核以上
  • 内存:2GB以上

2.2.2 EFAK安装包

EFAK安装包,目前官网上以及发布了最新的v2.0.9版本,支持分布式模式部署。可以直接下载到Linux服务器进行安装和部署使用。如果需要自行编译部署,可以到Github下载源代码进行编译部署:

2.3 安装部署

EFAK分布式模式部署,这里以5个节点为例子(1个Master和4个Slave),各个节点的角色如下如所示:

2.3.1 配置EFAK环境

首先,我们定义一个服务器为Master节点,在Master节点上下载EFAK安装包,并配置EFAK所需要的环境变量,具体内容如下所示:

# 编辑环境变量文件
vi ~/.bash_profile # 添加如下内容 # 添加JDK环境,建议使用JDK8以上
export JAVA_HOME=/data/soft/new/jdk # 添加EFAK环境
export KE_HOME=/data/soft/new/efak export PATH=$PATH:$JAVA_HOME/bin:$KE_HOME/bin

然后执行source ~/.bash_profile命令使配置环境变量立即生效。

2.3.2 配置EFAK系统文件

在EFAK的conf目录下有两个配置系统的文件,它们分别是:

  • system-config.properties:用来配置EFAK系统相关内容,比如启动端口、Zookeeper地址、Kafka安全认证信息、数据库存储地址等;
  • works:Slave节点地址(建议直接使用IP)。

1.配置works文件

works存储节点IP地址如下:

192.168.31.75
192.168.31.98
192.168.31.251
192.168.31.88

2.配置system-config.properties文件

EFAK配置信息如下所示:

######################################
# 配置Kafka集群别名和Zookeeper访问地址
######################################
efak.zk.cluster.alias=cluster1
cluster1.zk.list=192.168.31.127:2181 ######################################
# Zookeeper是否启用ACL
######################################
cluster1.zk.acl.enable=false
cluster1.zk.acl.schema=digest
cluster1.zk.acl.username=test
cluster1.zk.acl.password=test123 ######################################
# 如果一个Kafka集群规模较大,可以配置该参数
# 例如:配置阀值为20,若当前Kafka集群节点超过20个,将启用离线统计
######################################
cluster1.efak.broker.size=20 ######################################
# Zookeeper客户端线程数,单机模式设置16
# 分布式模式可以设置为4或者8(EFAK节点数大于5设置为4,若小于5设置为8即可)
######################################
kafka.zk.limit.size=8 ######################################
# EFAK Web页面启动端口
######################################
efak.webui.port=8048 ######################################
# EFAK 是否启用分布式模式
######################################
efak.distributed.enable=true # 在master节点上设置角色为master,其他节点设置为slave。
# 有个小技巧,就是从master节点同步配置到slave节点时,
# 将该属性先设置为slave,然后同步完成后,
# 将master节点上的slave值修改为master即可
efak.cluster.mode.status=master # 设置master节点的IP地址
efak.worknode.master.host=192.168.31.199 # 设置一个可用的端口供WorkNodeServer使用
efak.worknode.port=8085 ######################################
# kafka jmx 是否启用了ACL
######################################
cluster1.efak.jmx.acl=false
cluster1.efak.jmx.user=keadmin
cluster1.efak.jmx.password=keadmin123
cluster1.efak.jmx.ssl=false
cluster1.efak.jmx.truststore.location=/data/ssl/certificates/kafka.truststore
cluster1.efak.jmx.truststore.password=ke123456 ######################################
# kafka offset 存储方式,
# 目前Kafka基本都是存储在Kafka的topic中,
# 可保留该默认值不变
######################################
cluster1.efak.offset.storage=kafka ######################################
# kafka jmx 地址,默认Apache发布的Kafka基本是这个默认值,
# 对于一些公有云Kafka厂商,它们会修改这个值,
# 比如会将jmxrmi修改为kafka或者是其它的值,
# 若是选择的公有云厂商的Kafka,可以根据实际的值来设置该属性
######################################
cluster1.efak.jmx.uri=service:jmx:rmi:///jndi/rmi://%s/jmxrmi ######################################
# kafka监控是否开启,以及存储的监控数据保留时间天数
######################################
efak.metrics.charts=true
efak.metrics.retain=15 ######################################
# kafka sql 查询topic的单分区最近的条数,
# 以及在页面预览topic数据的最大记录条数
######################################
efak.sql.topic.records.max=5000
efak.sql.topic.preview.records.max=10 ######################################
# 删除topic的密钥,仅供管理员角色使用
######################################
efak.topic.token=keadmin ######################################
# kafka sasl 安全认证是否开启
######################################
cluster1.efak.sasl.enable=false
cluster1.efak.sasl.protocol=SASL_PLAINTEXT
cluster1.efak.sasl.mechanism=SCRAM-SHA-256
cluster1.efak.sasl.jaas.config=org.apache.kafka.common.security.scram.ScramLoginModule required username="kafka" password="kafka-eagle";
cluster1.efak.sasl.client.id=
cluster1.efak.blacklist.topics=
cluster1.efak.sasl.cgroup.enable=false
cluster1.efak.sasl.cgroup.topics= ######################################
# kafka ssl 安全认证是否开启
######################################
cluster1.efak.ssl.enable=false
cluster1.efak.ssl.protocol=SSL
cluster1.efak.ssl.truststore.location=
cluster1.efak.ssl.truststore.password=
cluster1.efak.ssl.keystore.location=
cluster1.efak.ssl.keystore.password=
cluster1.efak.ssl.key.password=
cluster1.efak.ssl.endpoint.identification.algorithm=https
cluster1.efak.blacklist.topics=
cluster1.efak.ssl.cgroup.enable=false
cluster1.efak.ssl.cgroup.topics= ######################################
# 生产环境建议使用MySQL来存储相关数据
######################################
efak.driver=com.mysql.cj.jdbc.Driver
efak.url=jdbc:mysql://localhost:3306/ke_prd?useUnicode=true&characterEncoding=UTF-8&zeroDateTimeBehavior=convertToNull
efak.username=root
efak.password=123456

2.3.3 分发EFAK安装包和系统环境

1.同步EFAK系统环境

# 同步系统环境
for i in `cat $KE_HOME/conf/works`;do scp ~/.bash_profile $i:~/;done

2.同步EFAK安装包到Slave节点

# 如果你的$KE_HOME环境地址为/data/soft/new/efak
for i in `cat $KE_HOME/conf/works`;do scp -r $KE_HOME $i:/data/soft/new/;done

然后,修改Master节点上的属性值efak.cluster.mode.status,将Master节点上该属性值slave修改为master即可。其他Slave节点无需改动。

2.3.4 启动EFAK分布式集群

EFAK分布式模式新增了ke.sh cluster命令,该命令支持如下参数:

  • ke.sh cluster start:启动EFAK分布式集群;
  • ke.sh cluster status:查看EFAK分布式集群状态;
  • ke.sh cluster stop:停止EFAK分布式集群
  • ke.sh cluster restart:重启EFAK分布式集群

当我们完成EFAK系统环境和安装包的分发后,就可以执行ke.sh cluster start启动命令了。

# 启动 EFAK 分布式模式
ke.sh cluster start

具体启动截图如下所示:

执行ke.sh cluster status命令查看各个节点的状态:

# 查看节点状态
ke.sh cluster status

执行上述命令,具体截图如下所示:

2.3.5 新增EFAK节点监控

在EFAK分布式模式下,新增监控EFAK各个节点的功能(单击模式下也可以查看Master节点相关指标),具体监控内容如下图所示:

3.总结

如果是Kafka集群规模较大或者管理的Kafka集群有多个,可以使用EFAK的分布式模式部署。如果管理的Kafka集群规模较小,Topic数量、消费者应用等较少,可以使用EFAK的单机模式部署即可。

4.结束语

这篇博客就和大家分享到这里,如果大家在研究学习的过程当中有什么问题,可以加群进行讨论或发送邮件给我,我会尽我所能为您解答,与君共勉!

另外,博主出书了《Kafka并不难学》和《Hadoop大数据挖掘从入门到进阶实战》,喜欢的朋友或同学, 可以在公告栏那里点击购买链接购买博主的书进行学习,在此感谢大家的支持。关注下面公众号,根据提示,可免费获取书籍的教学视频。

Kafka Eagle分布式模式的更多相关文章

  1. Kafka Eagle 3.0.1功能预览

    1.概述 最近有同学留言,关于Kafka Eagle的一些使用问题.今天笔者就为大家来详细介绍Kafka Eagle 3.0.1的功能以及使用方法. 2.内容 在3.0.1版本中,EFAK优化了分布式 ...

  2. Kafka是分布式发布-订阅消息系统

    Kafka是分布式发布-订阅消息系统 https://www.biaodianfu.com/kafka.html Kafka是分布式发布-订阅消息系统.它最初由LinkedIn公司开发,之后成为Apa ...

  3. 比Kafka Mangaer更优秀的开源监控工具-Kafka Eagle

    比Kafka Mangaer更优秀的开源监控工具-Kafka Eagle 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 在Kafka的监控系统中有很多优秀的开源监控系统.比如Kaf ...

  4. Hadoop生态圈-Kafka的本地模式部署

    Hadoop生态圈-Kafka的本地模式部署 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.Kafka简介 1>.什么是JMS 答:在Java中有一个角消息系统的东西,我 ...

  5. Kafka作为分布式消息系统的系统解析

    Kafka概述 Apache Kafka由Scala和Java编写,基于生产者和消费者模型作为开源的分布式发布订阅消息系统.它提供了类似于JMS的特性,但设计上又有很大区别,它不是JMS规范的实现,如 ...

  6. alpakka-kafka(10)-用kafka实现分布式近实时交易

    随着网上购物消费模式热度的不断提高,网上销售平台上各种促销手段也层出不穷,其中"秒购"已经是各种网站普遍流行的促销方式了."秒购"对数据的实效性和精确性要求非常 ...

  7. 利用Kafka的Assign模式实现超大群组(10万+)消息推送

    引言 IM即时通信场景下,最重要的一个能力就是推送:在线的直接通过长连接网关服务转发,离线的通过APNS或者极光等系统进行推送.   本文主要是针对在线用户推送场景来进行总结和探讨:如何利用Kafka ...

  8. Hbase入门教程--单节点伪分布式模式的安装与使用

    Hbase入门简介 HBase是一个分布式的.面向列的开源数据库,该技术来源于 FayChang 所撰写的Google论文"Bigtable:一个结构化数据的分布式存储系统".就像 ...

  9. Kafka 消息监控 - Kafka Eagle

    1.概述 在开发工作当中,消费 Kafka 集群中的消息时,数据的变动是我们所关心的,当业务并不复杂的前提下,我们可以使用 Kafka 提供的命令工具,配合 Zookeeper 客户端工具,可以很方便 ...

随机推荐

  1. Codeforces 497E - Subsequences Return(矩阵乘法)

    Codeforces 题目传送门 & 洛谷题目传送门 一道还算不错的矩乘 tea 罢,不过做过类似的题应该就比较套路了-- 首先考虑对于一个固定的序列 \(\{a\}\) 怎样求其本质不同的序 ...

  2. Python基础之数字类型内置方法

    目录 1. 整型内置方法(int) 2. 浮点型内置方法 3. 常用操作 1. 整型内置方法(int) 用途:年龄,号码,等级等 定义: age = 18 常用操作 # 算数运算.比较运算 age = ...

  3. 前端3 — js — BOM没完( 不了解也行 )

    1.js是什么? -- 英文全称javascript javaScript(简称"JS") 是一种具有函数优先的轻量级,解释型或即时编译型的编程语言.虽然它是作为开发Web页面的脚 ...

  4. 大数据学习day18----第三阶段spark01--------0.前言(分布式运算框架的核心思想,MR与Spark的比较,spark可以怎么运行,spark提交到spark集群的方式)1. spark(standalone模式)的安装 2. Spark各个角色的功能 3.SparkShell的使用,spark编程入门(wordcount案例)

    0.前言 0.1  分布式运算框架的核心思想(此处以MR运行在yarn上为例)  提交job时,resourcemanager(图中写成了master)会根据数据的量以及工作的复杂度,解析工作量,从而 ...

  5. cookie规范(RFC6265)翻译

    来源:https://github.com/renaesop/blog/issues/4 RFC 6265 要点翻译 1.简介 本文档定义了HTTP Cookie以及HTTP头的Set-Cookie字 ...

  6. 关于浏览器,从输入URL到呈现页面过程!(主讲TCP/IP协议)

    一.文本对话--从请求到响应 我们在浏览器中输入一个 URL,回车之后便会在浏览器中观察到页面内容.实际上这个过程是: (1)浏览器向网站所在的服务器发送了一个 Request(请求) (2)网站服务 ...

  7. 容器之分类与各种测试(三)——queue

    queue是单端队列,但是在其实现上是使用的双端队列,所以在queue的实现上多用的是deque的方法.(只要用双端队列的一端只出数据,另一端只进数据即可从功能上实现单端队列)如下图 例程 #incl ...

  8. Linux系统根目录下各文件夹介绍

    参考自:[1]Linux 系统根目录下各个文件夹的作用 https://www.cnblogs.com/jiangfeilong/p/10538795.html[2]了解Linux根目录"/ ...

  9. ComponentScan注解的使用

    在项目初始化时,会将加@component,@service...相关注解的类添加到spring容器中. 但是项目需要,项目初始化时自动过滤某包下面的类,不将其添加到容器中. 有两种实现方案, 1.如 ...

  10. jmeter进阶

    1.如果(if)控制器的使用     2.参数的调用 3.数据库的链接