Kafka-Manager编译&安装&启动

举报
那人好像一条狗 发表于 2018/01/22 18:56:23 2018/01/22
【摘要】 Kafka-Manager是由Yahoo公司开源的一款基于Web的Kafka管理工具,可以对Kafka集群中的Broker、Topic、Partition、Consumer等进行监控查看和管理。

Kafka-Manager是由Yahoo公司开源的一款基于Web的Kafka管理工具,可以对Kafka集群中的Broker、Topic、Partition、Consumer等进行监控查看和管理。

1   获取Kafka-Manager编译包


Kafka-Manager的官网上只提供了源码包,并没有提供编译包,因此获取Kafka-Manager编译包有两种途径:

(1)       直接从网上获取其他人自己编译好的Kafka-Manager编译包;

(2)       从官网下载Kafka-Manager源码包,然后自己手动编译。

1.1     直接获取已有Kafka-Manager编译包

由于Kafka-Manager是利用SBT进行编译构建的,这个过程由于网络等限制比较麻烦和耗时。可以直接从网上获取别人已经编译好的Kafka-Manager包,这样就直接省去了1.2整个章节中的工作。

Kafka-Manager编译包可以直接从下面这个链接获取:

http://blog.wolfogre.com/posts/kafka-manager-download/

下载完成后,直接到本文中的《2 Kafka-Manager部署运行部分》


1.2    利用源码手动编译

Kafka-Manager的编译打包是基于SBT的,因此在编译Kafka-Manager要先预先准备以及Java JDK与SBT。

1.2.1   配置Java JDK

这里要求JDK的版本为JDK 1.8。具体的JDK的安装与配置,比较常见,这里就不赘述。

1.2.2  安装SBT

到SBT官网:http://www.scala-sbt.org/download.html 下载SBT压缩包。将下载的SBT压缩包进行解压并配置SBT环境变量。【目前先讨论下Windows环境下的编译】

本文主要是针对Windows操作系统下的SBT的安装,至于Linux操作系统下SBT的安装可自行搜索安装。

1.    Windows环境:

假设解压的SBT放在D:\sbt目录。

添加SBT_HOME环境变量,

    SBT_HOME ="D:\sbt"

并在Path中追加

    ;%SBT_HOME%\bin;

然后通过在命令行窗口中输入sbt,如果sbt被识别则说明已经安装配置成功。


1.2.3  配置SBT

由于在利用SBT工具编译项目时,需要下载很多SBT工程编译时依赖的jar包等资源,由于SBT默认的资源都是在国外,由于网络原因可以会很慢甚至无法连接,所以为了能更快速地下载这些资源,可以对SBT进行一些配置。

1、   先配置SBT的本地资源存放目录,以便在下载一次后可以为之后的编译使用。

打开“SBT安装目录:\conf\sbtconfig.txt”文件,在文件最后追加

-Dsbt.boot.directory=D:/boot/
-Dsbt.global.base=D:/.sbt
-Dsbt.ivy.home=D:/.ivy2

2、   在“SBT安装目录:\conf\”目录下,新建文件repo.properties文件,将以下内容复制到文件中。

[repositories] 
  local
  store_1:http://repo.typesafe.com/typesafe/ivy-releases/
  store_2:http://repo2.maven.org/maven2/
  typesafe: http://repo.typesafe.com/typesafe/ivy-releases/, [organization]/[module]/(scala_[scalaVersion]/)(sbt_[sbtVersion]/)[revision]/[type]s/[artifact](-[classifier]).[ext], bootOnly 
  typesafe2: http://repo.typesafe.com/typesafe/releases/
  sbt-plugin: http://repo.scala-sbt.org/scalasbt/sbt-plugin-releases/
  sonatype: http://oss.sonatype.org/content/repositories/snapshots 
  uk_maven: http://uk.maven.org/maven2/ 
  ibibli: http://mirrors.ibiblio.org/maven2/ 
  repo2: http://repo2.maven.org/maven2/
  aliyun: http://maven.aliyun.com/nexus/content/groups/public
  comp-maven:http://mvnrepository.com/artifact/
  store_cn:http://maven.oschina.net/content/groups/public/
  store_mir:http://mirrors.ibiblio.org/maven2/
  store_0:http://maven.net.cn/content/groups/public/
 
  sbt-releases-repo: http://repo.typesafe.com/typesafe/ivy-releases/, [organization]/[module]/(scala_[scalaVersion]/)(sbt_[sbtVersion]/)[revision]/[type]s/[artifact](-[classifier]).[ext]
  sbt-plugins-repo: http://repo.scala-sbt.org/scalasbt/sbt-plugin-releases/, [organization]/[module]/(scala_[scalaVersion]/)(sbt_[sbtVersion]/)[revision]/[type]s/[artifact](-[classifier]).[ext]
  maven-central: http://repo1.maven.org/maven2/


3、   打开“SBT安装目录:\conf\sbtconfig.txt”文件,在文件最后追加:

-Dsbt.repository.config= SBT安装目录:/conf/repo.properties

4、   如果依旧有一些repo无法访问,可以考虑为SBT设置代理,由于走HTTPS时,由于证书问题,还是走HTTP较好。

打开“SBT安装目录:\conf\sbtconfig.txt”文件,在文件最后追加

-Dsbt.repository.secure=false #配置项告知SBT使用HTTP而非HTTPS来更新和下载artifacts
-Dhttp.proxyHost= proxy host
-Dhttp.proxyPort= proxy port
-Dhttp.proxyUser=用户名
-Dhttp.proxyPassword=密码


1.2.4  利用SBT编译Kafka-Manager


1、    下载Kafka-Manager工程

https://github.com/yahoo/kafka-manager界面上直接下载Kafka-Manager工程。


2、    将步骤1中下载的kafka-manager-master.zip文件进行解压,并进入kafka-manager-master目录,如:D:\kafka-manager-master。

cd D:\kafka-manager-master
sbt clean dist

该步骤由于需要下载很多的jar包等资源文件,比较耗时,需要耐心等待。

如果最后出现如下输出,则说明Kafka-manager编译成功。


image.png


3、    到D:\kafka-manager-master\target\universal目录中找到编译好的kafka-manager包即kafka-manager-1.3.3.15.zip


2  Kafka-Manager部署运行


由于当前MRS集群中根据是否开启了Kerberos认证分成非安全集群和安全集群两种模式。

2.1  非安全模式Kafka集群(未开启Kerberos认证)

2.1.1   修改Kafka JMX监控的相关配置

由于当前集群中在安装配置Kafka的监控时,默认的只允许Kafka服务所在的本节点访问当前节点的JMX服务;这样导致运行在其他节点上的Kafka-Manager无法访问JMX服务,从而无法获取相关的监控信息。

1、    到Manager的管理界面上,修改Kafka服务的服务配置,如下图所示:

image.png

KAFKA_JMX_IP配置项修改为${BROKER_IP}

然后再保存配置重启Kafka服务,以便让修改的配置生效。


2.1.2   修改Kafka-Manager中关于访问JMX服务的配置

由于当前集群中的Kafka服务在开启JMX服务时,JMX服务的访问地址的后缀为kafka,Kafka-Manager中的访问JMX服务的地址的后缀为jmxrmi,因此需要修改Kafka-Manager中的访问地址的后缀。

修改kafka-manager-master/app/kafka/manager/jmx/KafkaJMX.scala中的doWithConnection方法中的urlString,即第36行【限Kafka-Manager 2.11-1.3.3.15版本】。

原UrlString:


val urlString = s"service:jmx:rmi:///jndi/rmi://$jmxHost:$jmxPort/jmxrmi"

修改为:

val urlString = s"service:jmx:rmi:///jndi/rmi://$jmxHost:$jmxPort/kafka"

2.1.3  将前面编译生成的kafka-manager-1.3.3.15.zip包进行解压,比如存放在/opt目录下

2.1.4  修改Kafka-Manager的配置

1、    修改Kafka-Manager中关于Kafka集群对应的Zookeeper集群的配置以及与consumer相关的配置:


cd /opt/kafka-manager-1.3.3.15
vi conf/application.conf
kafka-manager.zkhosts="IP1:24002"
vi conf/application.conf
kafka-manager.consumer.properties.file=consumer.properties 
#该consumer.properties在kafka-manager-1.3.3.15/conf目录中

2、    修改/opt/kafka-manager-1.3.3.15/conf/consumer.properties文件:

cd /opt/kafka-manager-1.3.3.15
vi /conf/consumer.properties #将consumer.properties文件的内容修改如下。
security.protocol=PLAINTEXT

3、    修改Kafka-Manager相关日志文件的存放路径

cd /opt/kafka-manager-1.3.3.15

修改conf/logback.xml和conf/logger.xml文件

将<file></file>和<fileNamePattern></fileNamePattern>两个地方修改为你期望的日志存放路径。


2.1.5  启动Kafka-Manager

cd /opt/kafka-manager-1.3.3.15

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

在浏览器中输入IP1:9000,若出现以下界面则说明Kafka-Manager启动成功。


image.png



2.2  安全模式Kafka集群(开启Kerberos认证)

对于开启Kerberos认证的集群中的Kafka来说,现阶段的Kafka-Manager【Kafka-Manager 2.11-1.3.3.15版本】无法管理Consumer和Offsets。

2.2.1  修改Kafka JMX监控的相关配置

由于当前集群中在安装配置Kafka的监控时,默认的只允许Kafka服务所在的本节点访问当前节点的JMX服务;这样导致运行在其他节点上的Kafka-Manager无法访问JMX服务,从而无法获取相关的监控信息。

1、    到Manager的管理界面上,修改Kafka服务的服务配置,如下图所示:

image.png

KAFKA_JMX_IP配置项修改为${BROKER_IP}

然后再保存配置重启Kafka服务,以便让修改的配置生效。


2.2.2  修改Kafka-Manager中关于访问JMX服务的配置

由于当前集群中的Kafka服务在开启JMX服务时,JMX服务的访问地址的后缀为kafka,Kafka-Manager中的访问JMX服务的地址的后缀为jmxrmi,因此需要修改Kafka-Manager中的访问地址的后缀。

修改kafka-manager-master/app/kafka/manager/jmx/KafkaJMX.scala中的doWithConnection方法中的urlString,即第36行【限Kafka-Manager 2.11-1.3.3.15版本】。

原UrlString:


val urlString = s"service:jmx:rmi:///jndi/rmi://$jmxHost:$jmxPort/jmxrmi"

修改为:

val urlString = s"service:jmx:rmi:///jndi/rmi://$jmxHost:$jmxPort/kafka"

2.2.3  将前面编译生成的kafka-manager-1.3.3.15.zip包进行解压,比如存放在/opt目录下

2.2.4  修改Kafka-Manager的配置

1、    修改Kafka-Manager中关于Kafka集群对应的Zookeeper集群的配置以及与consumer相关的配置:

cd /opt/kafka-manager-1.3.3.15
vi conf/application.conf
kafka-manager.zkhosts="IP1:24002"
vi conf/application.conf
kafka-manager.consumer.properties.file=consumer.properties 
#该consumer.properties在kafka-manager-1.3.3.15/conf目录中

2、    修改/opt/kafka-manager-1.3.3.15/conf/consumer.properties文件:

cd /opt/kafka-manager-1.3.3.15
vi /conf/consumer.properties #将consumer.properties文件的内容修改如下。
security.protocol=SASL_PLAINTEXT

3、    修改Kafka-Manager相关日志文件的存放路径

cd /opt/kafka-manager-1.3.3.15

修改conf/logback.xml和conf/logger.xml文件

将<file></file>和<fileNamePattern></fileNamePattern>两个地方修改为你期望的日志存放路径。

2.2.5  准备Kerberos安全认证相关配置

1、    将集群中安装的Kafka服务相关的Kerberos认证的配置文件(主要包含jaas.conf、kafka.keytab)拷贝到Kafka-Manager的conf目录下:

cd /opt/kafka-manager-1.3.3.15
cp 集群的安装目录/etc/1_11_Broker/jaas.conf  conf/
cp 集群的安装目录/etc/1_11_Broker/kafka.keytab conf/

2、    修改jaas.conf文件中指定的kafka.keytab文件的路径:


keyTab="/opt/kafka-manager-1.3.3.15/conf/kafka.keytab"

3、    在jaas.conf文件添加KafkaClient项

KafkaClient {
com.sun.security.auth.module.Krb5LoginModule required
useKeyTab=true
keyTab="/opt/kafka-manager-1.3.3.15/conf/kafka.keytab"
storeKey=true
useTicketCache=false
serviceName="kafka"
principal="kafka/hadoop.hadoop.com@HADOOP.COM";
};

2.2.6      替换Zookeeper的jar包

由于公司内部对于Zookeeper服务的修改,使得Zookeeper服务在Kerberos上注册的身份为zookeeper/hadoop.hadoop.com@HADOOP.COM,而开源的Zookeeper服务在Kerberos注册的身份为zookeeper/${HOSTNAME}@HADOOP.COM,这样会导致Kerberos查找Zookeeper服务时查找不到。因此需要用公司的包去替换Kafka-Manager中使用的Zookeeper包。

比如当前集群中Kafka服务使用的zookeeper jar包版本为a.b.c

当前Kafka-Manager中使用的zookeeper jar包版本为x.y.z

cp 集群中Kafka的安装目录/kafka/libs/zookeeper- a.b.c.jar /opt/kafka-manager-1.3.3.15/libs/
cd /opt/kafka-manager-1.3.3.15/libs

2.2.7        启动Kafka-Manager

cd /opt/kafka-manager-1.3.3.15
nohup bin/kafka-manager -Dconfig.file=conf/application.conf -Dhttp.port=9000

在浏览器中输入IP1:9000,若出现以下界面则说明Kafka-Manager启动成功。

image.png


【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。