Kafka-Manager编译&安装&启动
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编译成功。
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服务的服务配置,如下图所示:
将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启动成功。
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服务的服务配置,如下图所示:
将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启动成功。
- 点赞
- 收藏
- 关注作者
评论(0)