kafka集群管理工具kafka-manager部署安装

本是古典 何须时尚 2023-06-27 11:23 37阅读 0赞

一、kafka-manager 简介

为了简化开发者和服务工程师维护Kafka集群的工作,yahoo构建了一个基于Web的Kafka集群管理工具,叫做 Kafka Manager。这个管理工具可以很容易地发现分布在集群中的哪些topic分布不均匀,或者是分区在整个集群分布不均匀的的情况。它支持管理多个集群、选择副本、副本重新分配以及创建Topic。同时,这个管理工具也是一个非常好的可以快速浏览这个集群的工具,有如下功能:

  1. 管理多个kafka集群
  2. 便捷的检查kafka集群状态(topics,brokers,备份分布情况,分区分布情况)
  3. 选择你要运行的副本
  4. 基于当前分区状况进行
  5. 可以选择topic配置并创建topic(0.8.1.1和0.8.2的配置不同)
  6. 删除topic(只支持0.8.2以上的版本并且要在broker配置中设置delete.topic.enable=true)
  7. Topic list会指明哪些topic被删除(在0.8.2以上版本适用)
  8. 为已存在的topic增加分区
  9. 为已存在的topic更新配置
  10. 在多个topic上批量重分区
  11. 在多个topic上批量重分区(可选partition broker位置)

kafka-manager 项目地址:https://github.com/yahoo/kafka-manager

二、安装

1. 环境要求

  • Kafka 0.8.1.1 or 0.8.2.* or 0.9.0.*

  • Java 8+

  • zookeeper 2+

本次实验所用的环境是kafka-0.9.1.0jdk-1.8.0_60zookeeper-3.4.7,下载解压安装运行:

  1. # start zookeeper
  2. cd /usr/local/zookeeper-3.4.7
  3. ./bin/zkServer.sh start
  4. #
  5. # start kafka
  6. cd /usr/local/kafka_2.11-0.9.0.0
  7. ./bin/kafka-server-start.sh ./config/server.properties

2. 下载安装 kafka-manager

下载编译

  1. git clone https://github.com/yahoo/kafka-manager
  2. cd kafka-manager
  3. # 因为要编译。所以下面这步操作要等很久
  4. sbt clean distcd target/
  5. # 在target目录下我们可以看到 kafka-manager
  6. kafka-manager-1.3.0.8.zip

tips:使用sbt编译打包的时候时间可能会比较长,如果你hang在Loading project definition from kafka-manager/project
可以修改project/plugins.sbt中的LogLevel参数将logLevel := Level.Warn修改为logLevel := Level.Debug 。

或者,简单点直接下载编译好的安装包,下面给出网友编译好的 kafka-manager-1.3.3.7.zip 的网盘链接:https://pan.baidu.com/s/1qYifoa4 密码:el4o

解压

  1. unzip kafka-manager-1.3.0.8.zip -d /usr/local
  2. cd /usr/local/kafka-manager-1.3.0.8

修改配置

编辑 conf/application.properties 文件,修改 Zookeeper 集群地址。

  1. # 如果zk是集群,这里填写多个zk地址
  2. kafka-manager.zkhosts="localhost:2181"

启动

  1. bin/kafka-manager

kafka-manager 默认的端口是9000,可通过 -Dhttp.port,指定端口; -Dconfig.file=conf/application.conf指定配置文件:

  1. nohup bin/kafka-manager -Dconfig.file=conf/application.conf -Dhttp.port=8080 &

我们用浏览器访问试试,界面非常简洁。

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3BlbmdqdW5sZWU_size_16_color_FFFFFF_t_70

这样便安装成功了。

三、测试 kafka-mamager

新建 Cluster

输入要监控的Kafka集群的名称及Zookeeper集群的地址。

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3BlbmdqdW5sZWU_size_16_color_FFFFFF_t_70 1

建好之后看到如下界面。

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3BlbmdqdW5sZWU_size_16_color_FFFFFF_t_70 2

在保存Cluster时,若勾选了启用 JMX 投票,如果 kafka 没有设置 JMX_PORT, kafka manager 日志会出现如下错误信息:

  1. [error] k.m.a.c.BrokerViewCacheActor - Failed to get broker topic segment metrics for BrokerIdentity(1,192.168.118.15,9092,-1,false)
  2. java.lang.IllegalArgumentException: requirement failed: No jmx port but jmx polling enabled!

解决办法:

  修改 kafka-server-start.sh,增加 JMX 的端口信息。

20200106161048102.png

修改kafka-run-class.sh,增加绿色部分,注意对应的 ip地址。

20200106161121661.png

三个节点都需要修改,修改完毕记得重启 kafka 服务。

新建topic

填写分区和副本个数。

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3BlbmdqdW5sZWU_size_16_color_FFFFFF_t_70 3

查看topic

在 Kafka-manager 中看到的topic如下:

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3BlbmdqdW5sZWU_size_16_color_FFFFFF_t_70 4

在服务器上通过kafka-topics.sh命令查询到的topic如下:

  1. # bin/kafka-topics.sh --list --zookeeper localhost:2181

20200106155201345.png

启动 consumer

  1. bin/kafka-console-consumer.sh --zookeeper localhost:2181 --from-beginning --topic test-a

启动 producer

  1. bin/kafka-console-producer.sh --broker-list 10.26.236.43:9092 --topic test-a

此时, 看到的Broker列表如下。

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3BlbmdqdW5sZWU_size_16_color_FFFFFF_t_70 5

输入 message。

20200106155647733.png

可以看到 consumer 已经收到消息。

20200106155708178.png

到这里,我们的kafka-manager已搭建测试成功,它的其他用法大家可自行测试。

发表评论

表情:
评论列表 (有 0 条评论,37人围观)

还没有评论,来说两句吧...

相关阅读

    相关 kafka部署

    在[上篇文章][Link 1]中讲解了kafka的单点部署,本篇讲解kafka的集群部署。 1.拷贝kafka配置文件并启动 进入kafka的解压文件,输入以下两行命令

    相关 Kafka 部署

      Kafka是由Apache软件基金会开发的一个开源流处理平台,由Scala和Java编写。Kafka是一种高吞吐量的分布式发布订阅消息系统,它可以处理消费者在网站中的所有动