经验首页 前端设计 程序设计 Java相关 移动开发 数据库/运维 软件/图像 大数据/云计算 其他经验
当前位置:技术经验 » 大数据/云/AI » Apache Kafka » 查看文章
Kafka Eagle分布式模式
来源:cnblogs  作者:哥不是小萝莉  时间:2021/12/31 8:42:12  对本文有异议

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所需要的环境变量,具体内容如下所示:

  1. # 编辑环境变量文件
  2. vi ~/.bash_profile
  3. # 添加如下内容
  4. # 添加JDK环境,建议使用JDK8以上
  5. export JAVA_HOME=/data/soft/new/jdk
  6. # 添加EFAK环境
  7. export KE_HOME=/data/soft/new/efak
  8. 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地址如下:

  1. 192.168.31.75
  2. 192.168.31.98
  3. 192.168.31.251
  4. 192.168.31.88

2.配置system-config.properties文件

EFAK配置信息如下所示:

  1. ######################################
  2. # 配置Kafka集群别名和Zookeeper访问地址
  3. ######################################
  4. efak.zk.cluster.alias=cluster1
  5. cluster1.zk.list=192.168.31.127:2181
  6. ######################################
  7. # Zookeeper是否启用ACL
  8. ######################################
  9. cluster1.zk.acl.enable=false
  10. cluster1.zk.acl.schema=digest
  11. cluster1.zk.acl.username=test
  12. cluster1.zk.acl.password=test123
  13. ######################################
  14. # 如果一个Kafka集群规模较大,可以配置该参数
  15. # 例如:配置阀值为20,若当前Kafka集群节点超过20个,将启用离线统计
  16. ######################################
  17. cluster1.efak.broker.size=20
  18. ######################################
  19. # Zookeeper客户端线程数,单机模式设置16
  20. # 分布式模式可以设置为4或者8(EFAK节点数大于5设置为4,若小于5设置为8即可)
  21. ######################################
  22. kafka.zk.limit.size=8
  23. ######################################
  24. # EFAK Web页面启动端口
  25. ######################################
  26. efak.webui.port=8048
  27. ######################################
  28. # EFAK 是否启用分布式模式
  29. ######################################
  30. efak.distributed.enable=true
  31. # 在master节点上设置角色为master,其他节点设置为slave。
  32. # 有个小技巧,就是从master节点同步配置到slave节点时,
  33. # 将该属性先设置为slave,然后同步完成后,
  34. # 将master节点上的slave值修改为master即可
  35. efak.cluster.mode.status=master
  36. # 设置master节点的IP地址
  37. efak.worknode.master.host=192.168.31.199
  38. # 设置一个可用的端口供WorkNodeServer使用
  39. efak.worknode.port=8085
  40. ######################################
  41. # kafka jmx 是否启用了ACL
  42. ######################################
  43. cluster1.efak.jmx.acl=false
  44. cluster1.efak.jmx.user=keadmin
  45. cluster1.efak.jmx.password=keadmin123
  46. cluster1.efak.jmx.ssl=false
  47. cluster1.efak.jmx.truststore.location=/data/ssl/certificates/kafka.truststore
  48. cluster1.efak.jmx.truststore.password=ke123456
  49. ######################################
  50. # kafka offset 存储方式,
  51. # 目前Kafka基本都是存储在Kafka的topic中,
  52. # 可保留该默认值不变
  53. ######################################
  54. cluster1.efak.offset.storage=kafka
  55. ######################################
  56. # kafka jmx 地址,默认Apache发布的Kafka基本是这个默认值,
  57. # 对于一些公有云Kafka厂商,它们会修改这个值,
  58. # 比如会将jmxrmi修改为kafka或者是其它的值,
  59. # 若是选择的公有云厂商的Kafka,可以根据实际的值来设置该属性
  60. ######################################
  61. cluster1.efak.jmx.uri=service:jmx:rmi:///jndi/rmi://%s/jmxrmi
  62. ######################################
  63. # kafka监控是否开启,以及存储的监控数据保留时间天数
  64. ######################################
  65. efak.metrics.charts=true
  66. efak.metrics.retain=15
  67. ######################################
  68. # kafka sql 查询topic的单分区最近的条数,
  69. # 以及在页面预览topic数据的最大记录条数
  70. ######################################
  71. efak.sql.topic.records.max=5000
  72. efak.sql.topic.preview.records.max=10
  73. ######################################
  74. # 删除topic的密钥,仅供管理员角色使用
  75. ######################################
  76. efak.topic.token=keadmin
  77. ######################################
  78. # kafka sasl 安全认证是否开启
  79. ######################################
  80. cluster1.efak.sasl.enable=false
  81. cluster1.efak.sasl.protocol=SASL_PLAINTEXT
  82. cluster1.efak.sasl.mechanism=SCRAM-SHA-256
  83. cluster1.efak.sasl.jaas.config=org.apache.kafka.common.security.scram.ScramLoginModule required username="kafka" password="kafka-eagle";
  84. cluster1.efak.sasl.client.id=
  85. cluster1.efak.blacklist.topics=
  86. cluster1.efak.sasl.cgroup.enable=false
  87. cluster1.efak.sasl.cgroup.topics=
  88. ######################################
  89. # kafka ssl 安全认证是否开启
  90. ######################################
  91. cluster1.efak.ssl.enable=false
  92. cluster1.efak.ssl.protocol=SSL
  93. cluster1.efak.ssl.truststore.location=
  94. cluster1.efak.ssl.truststore.password=
  95. cluster1.efak.ssl.keystore.location=
  96. cluster1.efak.ssl.keystore.password=
  97. cluster1.efak.ssl.key.password=
  98. cluster1.efak.ssl.endpoint.identification.algorithm=https
  99. cluster1.efak.blacklist.topics=
  100. cluster1.efak.ssl.cgroup.enable=false
  101. cluster1.efak.ssl.cgroup.topics=
  102. ######################################
  103. # 生产环境建议使用MySQL来存储相关数据
  104. ######################################
  105. efak.driver=com.mysql.cj.jdbc.Driver
  106. efak.url=jdbc:mysql://localhost:3306/ke_prd?useUnicode=true&characterEncoding=UTF-8&zeroDateTimeBehavior=convertToNull
  107. efak.username=root
  108. efak.password=123456

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

1.同步EFAK系统环境

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

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

  1. # 如果你的$KE_HOME环境地址为/data/soft/new/efak
  2. 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启动命令了。

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

具体启动截图如下所示:

 

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

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

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

 

2.3.5 新增EFAK节点监控

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

 

3.总结

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

4.结束语

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

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

联系方式:
邮箱:smartloli.org@gmail.com
Twitter:https://twitter.com/smartloli
QQ群(Hadoop - 交流社区1):424769183
QQ群(Kafka并不难学): 825943084
温馨提示:请大家加群的时候写上加群理由(姓名+公司/学校),方便管理员审核,谢谢!

热爱生活,享受编程,与君共勉!


公众号:


作者:哥不是小萝莉 [关于我][犒赏

出处:http://www.cnblogs.com/smartloli/

转载请注明出处,谢谢合作!

原文链接:http://www.cnblogs.com/smartloli/p/15732794.html

 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号