kafka图形管理工具CMAK(Kafka Manager)安装及使用
Tags: CMAKKafkaKafka Manager
简介
kafka-manager 项目地址:https://github.com/yahoo/kafka-manager
为了简化开发者和服务工程师维护Kafka集群的工作,yahoo构建了一个叫做Kafka管理器的基于Web工具,叫做 Kafka Manager,现已更名为CMAK(Cluster Manager for Apache Kafka, previously known as Kafka Manager)。主要是因为误用了 Apache 的商标,所以才从 kafka-manager 改名为 CMAK。
这个管理工具可以很容易地发现分布在集群中的哪些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位置)
CMAK is a tool for managing Apache Kafka clusters。
安装
1 2 3 4 5 6 7 8 9 | docker rm -f lhrkafkamanager docker run -itd --name lhrkafkamanager -h lhrkafkamanager \ -p 9000:9000 \ -v /sys/fs/cgroup:/sys/fs/cgroup \ --privileged=true lhrbest/lhrcentos76:9.0 \ /usr/sbin/init docker exec -it lhrkafkamanager bash |
安装java 11
下载:https://www.oracle.com/java/technologies/downloads/
Java 11 下载:https://www.oracle.com/java/technologies/downloads/#java11
CMAK需要最低java 11版本,建议安装java 11,我安装java 18后启动报错,安装java 11需要浏览器获取下载地址:
1 2 3 4 5 6 7 8 | wget https://download.oracle.com/java/11/latest/jdk-11_linux-x64_bin.rpm rpm -ivh jdk-11_linux-x64_bin.rpm java -version [root@lhrkafkamanager bin]# java -version java version "11.0.15.1" 2022-04-22 LTS Java(TM) SE Runtime Environment 18.9 (build 11.0.15.1+2-LTS-10) Java HotSpot(TM) 64-Bit Server VM 18.9 (build 11.0.15.1+2-LTS-10, mixed mode) |
安装zk
参考:https://www.xmmup.com/anzhuangzookeeper.html
ZK最低为3.5版本。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | wget https://downloads.apache.org/zookeeper/zookeeper-3.8.0/apache-zookeeper-3.8.0-bin.tar.gz tar -zxvf apache-zookeeper-3.8.0-bin.tar.gz -C /usr/local/ ln -s /usr/local/apache-zookeeper-3.8.0-bin/ /usr/local/zookeeper cd /usr/local/zookeeper/conf cp zoo_sample.cfg zoo.cfg vi zoo.cfg dataDir=/usr/local/zookeeper/data cat >> /root/.bashrc <<"EOF" export ZOOKEEPER_HOME=/usr/local/zookeeper export PATH=$PATH:$ZOOKEEPER_HOME/bin EOF source /root/.bashrc cd /usr/local/zookeeper/bin/ ./zkServer.sh start netstat -tulnp | grep 2181 ./zkCli.sh -server 127.0.0.1:2181 |
安装CMAK
在 3.0.0.2 版本之前,kafka-manager 是不提供现成的编译包的,需要我们自己编译打包。在 3.0.0.2 版本之后我们可以直接下载编译后的 zip 包即可。
下载地址:https://github.com/yahoo/CMAK
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | wget https://github.com/yahoo/CMAK/releases/download/3.0.0.6/cmak-3.0.0.6.zip unzip cmak-3.0.0.6.zip -d /usr/local/ ln -s /usr/local/cmak-3.0.0.6 /usr/local/cmak cd /usr/local/cmak/conf -- 修改参数或配置环境变量 vi /usr/local/cmak/conf/application.conf cmak.zkhosts="127.0.0.1:2181" export ZK_HOSTS="127.0.0.1:2181" -- 启动 /usr/local/cmak/bin/cmak & /usr/local/cmak/bin/cmak -Dconfig.file=/usr/local/cmak/conf/application.conf & /usr/local/cmak/bin/cmak -Dconfig.file=/usr/local/cmak/conf/application.conf -Dhttp.port=9000 & /usr/local/cmak/bin/cmak -java-home /usr/java/jdk-11.0.15.1 -Dconfig.file=/usr/local/cmak/conf/application.conf -Dhttp.port=9000 & |
web登陆地址:http://192.168.1.35:9000/
使用
参考:https://www.cnblogs.com/dadonggg/p/8205302.html
可以通过 Add Cluster
菜单创建我们的 Kafka 集群:
注意的的是 Cluster Zookeeper Hosts 要配置 Kafka 在 ZooKeeper 中的 NameSpace,在这我们是 kafka
,具体取决于 Kafka 的配置:
1 | zookeeper.connect=localhost:2181/kafka |
看到如下页面表示我们已经创建好集群了:
如果你遇到报如下错误:
1 | Yikes! KeeperErrorCode = Unimplemented for /kafka-manager/mutex Try again. |
那么你需要升级 Zookeeper 到 3.5+ 版本。
创建成功后,你就可以看到你的 Kafka 信息:
开机启动
1 2 3 4 5 6 7 8 | cat >> /etc/rc.local <<"EOF" /usr/local/zookeeper/bin/zkServer.sh start rm -rf /usr/local/cmak-3.0.0.6/RUNNING_PID /usr/local/cmak/bin/cmak & EOF chmod +x /etc/rc.d/rc.local |
错误解决
将kafka的地址和主机名解析加入/etc/hosts文件
否则会报类似错误:Couldn't resolve server lhrkafka:9092 from bootstrap.servers as DNS resolution failed for lhrkafka 和 “Caused by: org.apache.kafka.common.config.ConfigException: No resolvable bootstrap urls given in bootstrap.servers”
1 | echo "172.17.0.3 lhrkafka" >> /etc/hosts |
JMX
1 | Enable JMX Polling (Set JMX_PORT env variable before starting kafka server) |
kafka服务必需要开启JMX,否则在下一步启动kafka-manager时会出现:
java.lang.IllegalArgumentException: requirement failed: No jmx port but jmx polling enabled!
解决:在bin/kafka-server-start.sh前面加上如下代码export JMX_PORT=9999
,然后重启kafka:
1 2 3 4 | export JMX_PORT=9999 -- 重启kafka /usr/local/kafka/bin/kafka-server-start.sh /usr/local/kafka/config/server.properties & |
docker使用kafka manager
1 2 3 4 5 6 7 8 9 10 11 12 | docker pull registry.cn-hangzhou.aliyuncs.com/lhrbest/kafkamanager_cmak:3.0.0.6 docker rm -f lhrkafkamanager docker run -itd --name lhrkafkamanager -h lhrkafkamanager \ -p 9000:9000 \ -v /sys/fs/cgroup:/sys/fs/cgroup \ --privileged=true lhrbest/kafkamanager_cmak:3.0.0.6 \ /usr/sbin/init docker exec -it lhrkafkamanager bash web登陆地址:http://192.168.1.35:9000/ |