Kafka集群管理工具CMAK-3.0.0.5源码编译以及安装部署

1. sbt编译工具安装配置

# 1.安装
[admin@bdc01 ~]$ sudo wget -O /etc/yum.repos.d/bintray-sbt-rpm.repo https://bintray.com/sbt/rpm/rpm
[admin@bdc01 ~]$ sudo yum install sbt -y

# 2.配置,文件:/etc/sbt/sbtopts,未列出的保持默认即可
-sbt-create
-sbt-dir /opt/sbt
-sbt-boot /opt/sbt/boot
-ivy /data/sbt/repo
-Dsbt.override.build.repos=true
-Dsbt.repository.config=/etc/sbt/repositories
-Dsbt.repository.secure=false
-Dfile.encoding=UTF8
-Dsbt.log.format=true

# 3.创建自定义的目录
[admin@bdc01 ~]$ sudo mkdir -p /opt/sbt/boot
[admin@bdc01 ~]$ sudo mkdir -p /data/sbt/repo
[admin@bdc01 ~]$ sudo chown -R admin:admin /opt/sbt
[admin@bdc01 ~]$ sudo chown -R admin:admin /data/sbt

# 4.优化仓库地址,加速下载,文件:/etc/sbt/repositories
[repositories]
local
public: https://maven.aliyun.com/nexus/content/groups/public/
typesafe: https://dl.bintray.com/typesafe/ivy-releases/ , [organization]/[module]/(scala_[scalaVersion]/)(sbt_[sbtVersion]/)[revision]/[type]s/[artifact](-[classifier]).[ext], bootOnly
ivy-sbt-plugin: https://dl.bintray.com/sbt/sbt-plugin-releases/, [organization]/[module]/(scala_[scalaVersion]/)(sbt_[sbtVersion]/)[revision]/[type]s/[artifact](-[classifier]).[ext]
sonatype-oss-releases
sonatype-oss-snapshots

# 5.下载jar包
[admin@bdc01 ~]$ sbt sbtVersion
# 到这一行会卡住一会,耐心等待,之后下载会很快
[info] [launcher] getting org.scala-sbt sbt 1.4.2  (this may take some time)...
downloading https://maven.aliyun.com/nexus/content/groups/public/org/scala-sbt/sbt/1.4.2/sbt-1.4.2.jar ...
downloading https://maven.aliyun.com/nexus/content/groups/public/org/scala-lang/scala-library/2.12.12/scala-library-2.12.12.jar ...
    [SUCCESSFUL ] org.scala-sbt#sbt;1.4.2!sbt.jar (528ms)
    ...
[info] welcome to sbt 1.4.2 (Oracle Corporation Java 1.8.0_251)
...
[info] Fetched artifacts of 
[info] set current project to admin (in build file:/home/admin/)
[info] 1.4.2

2. cmak源码编译

# 1.下载源码,解压后进入源码根目录
[admin@bdc01 ~]$ wget https://github.com/yahoo/CMAK/archive/3.0.0.5.tar.gz
[admin@bdc01 ~]$ tar -zxvf 3.0.0.5.tar.gz
[admin@bdc01 ~]$ cd CMAK-3.0.0.5/

# 2.编译源码
# 注意:是sbt clean dist,不是./sbt clean dist
[admin@bdc01 CMAK-3.0.0.5]$ sbt clean dist

# 我在执行过程中遇到以下报错
[error] Caused by: lmcoursier.internal.shaded.coursier.cache.ArtifactError$WrongChecksum: wrong checksum: /home/admin/.cache/coursier/v1/https/maven.aliyun.com/nexus/content/groups/public/org/webjars/npm/entities/2.1.0/entities-2.1.0.jar (expected SHA-1 1bcaa0b8032c97dbad046323af72ff0213ebcac5 in /home/admin/.cache/coursier/v1/https/maven.aliyun.com/nexus/content/groups/public/org/webjars/npm/entities/2.1.0/entities-2.1.0.jar.sha1, got c36a3cc098a65d94b215834942e806fc8d1af23a)
[error]     at lmcoursier.internal.shaded.coursier.cache.FileCache.$anonfun$validateChecksum$4(FileCache.scala:705)
[error]     at scala.concurrent.Future$.$anonfun$apply$1(Future.scala:659)
[error]     at scala.util.Success.$anonfun$map$1(Try.scala:255)
...

# 这里是说,org/webjars/npm/entities/2.1.0/entities-2.1.0.jar这个jar包
# 目录下有个entities-2.1.0.jar.sha1文件,其中记录的sha1值为1bcaa0b8032c97dbad046323af72ff0213ebcac5
# 而通过sha1sum计算出来的值是c36a3cc098a65d94b215834942e806fc8d1af23a
# 这说明这个文件有问题
# 我验证了一下,果然sha1值对不上
# 于是我在maven的中央仓库下载了该jar包,https://repo1.maven.org/maven2/org/webjars/npm/entities/2.1.0/entities-2.1.0.jar
# 使用sha1sum计算,得到的值是c36a3cc098a65d94b215834942e806fc8d1af23a
# 说明,阿里云仓库下载下来的jar包与maven中央仓库下载的jar包是一样的
# 但是不知道什么原因,entities-2.1.0.jar.sha1文件中的值有问题
# 于是我把entities-2.1.0.jar.sha1文件中的值改成了c36a3cc098a65d94b215834942e806fc8d1af23a
# 再执行,就没有问题了

# 依赖的jar包下完之后,报了一推错
[error] /home/admin/CMAK-3.0.0.5/app/kafka/manager/actor/cluster/KafkaStateActor.scala:115:29: type mismatch;
[error]  found   : java.util.Map[_$1,_$2] where type _$2, type _$1
[error]  required: java.util.Map[? <: Object, ? <: Object]
[error] Note: _$1 >: ? <: Object, but Java-defined trait Map is invariant in type K.
[error] You may wish to investigate a wildcard type such as `_ >: ? <: Object`. (SLS 3.2.10)
[error] Note: _$2 >: ? <: Object, but Java-defined trait Map is invariant in type V.
[error] You may wish to investigate a wildcard type such as `_ >: ? <: Object`. (SLS 3.2.10)
[error]       cp => props.putAll(cp.asMap)
[error]                             ^
[error] /home/admin/CMAK-3.0.0.5/app/kafka/manager/actor/cluster/KafkaStateActor.scala:275:29: type mismatch;
[error]  found   : java.util.Map[_$1,_$2] where type _$2, type _$1
[error]  required: java.util.Map[? <: Object, ? <: Object]
[error] Note: _$1 >: ? <: Object, but Java-defined trait Map is invariant in type K.
[error] You may wish to investigate a wildcard type such as `_ >: ? <: Object`. (SLS 3.2.10)
[error] Note: _$2 >: ? <: Object, but Java-defined trait Map is invariant in type V.
[error] You may wish to investigate a wildcard type such as `_ >: ? <: Object`. (SLS 3.2.10)
[error]       cp => props.putAll(cp.asMap)
...
# 我的环境是JDK1.8,由于官网介绍cmak都是使用JDK11编译的于是我尝试使用JDK11再进行一次编译,这次编译成功了
[admin@bdc01 CMAK-3.0.0.5]$ sbt -java-home /usr/java/jdk-11.0.9 clean dist
copying runtime jar...
[info] welcome to sbt 1.4.2 (Oracle Corporation Java 11.0.9)
[info] loading project definition from /home/admin/CMAK-3.0.0.5/project/project
[info] loading settings for project cmak-3-0-0-5-build from plugins.sbt ...
[info] loading project definition from /home/admin/CMAK-3.0.0.5/project
[info] loading settings for project root from build.sbt ...
[info] set current project to cmak (in build file:/home/admin/CMAK-3.0.0.5/)
[success] Total time: 0 s, completed Nov 6, 2020, 2:20:26 PM
[info] Wrote /home/admin/CMAK-3.0.0.5/target/scala-2.12/cmak_2.12-3.0.0.5.pom
Warning: node.js detection failed, sbt will use the Rhino based Trireme JavaScript engine instead to run JavaScript assets compilation, which in some cases may be orders of magnitude slower than using node.js.
[warn] There may be incompatibilities among your library dependencies; run 'evicted' to see detailed eviction warnings.
[info] Main Scala API documentation to /home/admin/CMAK-3.0.0.5/target/scala-2.12/api...
[info] Non-compiled module 'compiler-bridge_2.12' for Scala 2.12.10. Compiling...
[info] compiling 136 Scala sources and 2 Java sources to /home/admin/CMAK-3.0.0.5/target/scala-2.12/classes ...
[info]   Compilation completed in 11.645s.
model contains 632 documentable templates
[info] Main Scala API documentation successful.
[info] LESS compiling on 1 source(s)
[success] All package validations passed
[info] Your package is ready in /home/admin/CMAK-3.0.0.5/target/universal/cmak-3.0.0.5.zip
[success] Total time: 82 s (01:22), completed Nov 6, 2020, 2:21:48 PM

# 在CMAK-3.0.0.5/target/universal目录下,有一个文件:cmak-3.0.0.5.zip
# 就是编译好的安装包

3. cmak安装部署

cmak在github上有已经编译好的安装包,我在JDK1.8环境中无法运行,于是才有了上一步的源码编译,我想使用JDK1.8编译,使得安装包可以在JDK1.8环境中运行,结果使用JDK1.8编译都编译不过,于是,只好老老实实的使用JDK11来安装cmak了。

# 1.安装JDK11
# cmak都是使用JDK11版本来编译的,所以使用JDK8是无法运行的
# 所以给cmak单独部署JDK11环境
[admin@bdc01 java]$ ll /usr/java/
total 0
lrwxrwxrwx 1 root root  12 2020-06-10 14:16 jdk -> jdk1.8.0_251
drwxr-xr-x 8 root root 115 2020-11-06 14:17 jdk-11.0.9
drwxr-xr-x 7 root root 245 2020-03-12 14:37 jdk1.8.0_251
# 我的JAVA_HOME实际上为JDK1.8
[admin@bdc01 java]$ echo $JAVA_HOME
/usr/java/jdk

# 2.解压
[admin@bdc01 opt]$ sudo unzip cmak-3.0.0.5.zip
[admin@bdc01 opt]$ sudo chown -R admin:admin cmak-3.0.0.5

# 3.修改配置文件
# 文件:cmak-3.0.0.5/conf/application.conf
application.home=/opt/cmak-3.0.0.5
cmak.zkhosts="bdc01:2181,bdc02:2181,bdc03:2181"
basicAuthentication.enabled=true
basicAuthentication.username="admin"
basicAuthentication.password="admin"
# 文件cmak-3.0.0.5/conf/logback.xml、cmak-3.0.0.5/conf/logger.xml
# 在根标签<configuration>下添加如下配置
<property name="application.home" value="/opt/cmak-3.0.0.5"/>

# 4.Kafka开启JMX端口
# 文件:kafka/bin/kafka-run-class.sh
# 在文件开头加入以下环境变量
export JMX_PORT=9988
# 同步配置后重启Kafka集群

# 5.启动cmak
[admin@bdc01 cmak-3.0.0.5]$ nohup /opt/cmak-3.0.0.5/bin/cmak -Dhttp.port=9998 -java-home /usr/java/jdk-11.0.9 > /dev/null &
[1] 47282

# 6.进入Zookeeper客户端,创建/kafka-manager/mutex节点
# 如果zookeeper的版本是>3.4的,则这一步是不需要的
[admin@bdc01 cmak-3.0.0.5]$ zkCli.sh        
[zk: localhost:2181(CONNECTED) 0] create /kafka-manager ""
Created /kafka-manager
[zk: localhost:2181(CONNECTED) 1] create /kafka-manager/mutex ""
Created /kafka-manager/mutex
[zk: localhost:2181(CONNECTED) 2] create /kafka-manager/mutex/locks ""
Created /kafka-manager/locks
[zk: localhost:2181(CONNECTED) 3] create /kafka-manager/mutex/leases ""
Created /kafka-manager/leases
[zk: localhost:2181(CONNECTED) 4] quit

访问WEB-UI:

点击页面最下方的"Save"按钮后:

查看Topic信息:

查看Broker信息:

到这里,cmak-3.0.0.5的安装部署就完成了。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 151,511评论 1 330
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 64,495评论 1 273
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 101,595评论 0 225
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 42,558评论 0 190
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 50,715评论 3 270
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 39,672评论 1 192
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,112评论 2 291
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 29,837评论 0 181
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 33,417评论 0 228
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 29,928评论 2 232
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 31,316评论 1 242
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 27,773评论 2 234
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 32,253评论 3 220
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 25,827评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,440评论 0 180
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 34,523评论 2 249
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 34,583评论 2 249

推荐阅读更多精彩内容