赞
踩
本文主要讲述对于启用了SASL_PLAINTEXT用户名密码模式的Kafka,如何安装部署雅虎的CMAK(即Kafka-Manager),并且支持Kafka集群的JMX监控及查看消费者信息。
软件环境:
准备工作:
这样操作之后,CMAK的目录为/usr/local/cmak-3.0.0.5,JDK11的目录为/usr/java/jdk-11.0.9。
配置及启动:
CMAK主要有两个配置文件需要修改,都位于conf目录下,分别是application.conf和consumer.properties
application.conf主要修改其中Zookeeper设置的几行,其中3行使用#注释,一行改为Zookeeper集群的地址,格式如下:
- #kafka-manager.zkhosts="kafka-manager-zookeeper:2181"
- #kafka-manager.zkhosts=${?ZK_HOSTS}
- cmak.zkhosts="kafka01:2181,kafka02:2181,kafka03:2181"
- #cmak.zkhosts=${?ZK_HOSTS}
consumer.properties主要修改安全协议的内容,将整个文件的内容改为如下代码即可:
- security.protocol=SASL_PLAINTEXT
- sasl.mechanism=PLAIN
- key.deserializer=org.apache.kafka.common.serialization.ByteArrayDeserializer
- value.deserializer=org.apache.kafka.common.serialization.ByteArrayDeserializer
另外,在conf目录下新建一个文件kafka_client_jaas.conf,用来指定kafka的用户名密码,其内容如下,用户名密码应与kafka配置中的一致:
- KafkaClient {
- org.apache.kafka.common.security.plain.PlainLoginModule required
- username="admin"
- password="1234567890";
- };
然后,即可用如下命令启动CMAK了,不过此时启动的CMAK,无论是JMX监控还是消费者列表都是无法加载出来的
nohup /usr/local/cmak-3.0.0.5/bin/cmak -java-home /usr/java/jdk-11.0.9/ -Dconfig.file=/usr/local/cmak-3.0.0.5/conf/application.conf -Dhttp.port=8080 >/usr/local/cmak-3.0.0.5/logs/cmak.log 2>/usr/local/cmak-3.0.0.5/logs/cmak-error.log &
启动后,即可在浏览器中使用http://ip:8080/访问CMAK网站了,界面如下:
接下来,需要解决JMX监控和消费者列表加载的问题
点击页面上的Modify按钮,进入配置界面,修改图中2项配置,并到最下方给配置SASL JAAS Config中的username和password的值加上单引号,保存后就可以将消费者列表加载出来了
至于JMX,如果服务器的防火墙是关闭的,那么此时应该可以加载出集群的所有数据流量信息了,如果防火墙是打开的,那么还需修改Kafka本身的配置
修改Kafka配置:
很多文章都会告诉你,需要修改kafka-server-start.sh,设置JMX_PORT为9999,然后设置防火墙开启9999端口,即可实现JMX监听
但其实是不行的,因为JMX这个9999的端口,只是一个侦听端口,它在9999这个端口侦听到请求后,会分配一个随机的RMI端口,让请求方去访问,如果防火墙不是关闭状态的话,那么这个随机端口是无论如何也不会被防火墙通过的
所以,我们其实还需要将这个随机的RMI端口也固定,具体操作如下:
修改Kafka的bin目录下的2个文件,kafka-run-class.sh和kafka-server-start.sh
kafka-run-class.sh增加一段,加在JMX port的后面即可,代码如下:
- # JMX rmi port to use
- if [ $JMX_RMI_PORT ]; then
- KAFKA_JMX_OPTS="$KAFKA_JMX_OPTS -Dcom.sun.management.jmxremote.rmi.port=$JMX_RMI_PORT "
- fi
kafka-server-start.sh在if [ "x$KAFKA_HEAP_OPTS" = "x" ]; then这一段中增加2行代码,将JMX的端口设为9999,JMX RMI的端口设为9998,代码如下:
- if [ "x$KAFKA_HEAP_OPTS" = "x" ]; then
- export KAFKA_HEAP_OPTS="-Xmx4G -Xms1G -Djava.security.auth.login.config=/usr/local/kafka/config/kafka_server_jaas.conf"
- export JMX_PORT="9999"
- export JMX_RMI_PORT="9998"
- fi
防火墙增加对9999和9998端口的开放:
- firewall-cmd --permanent --add-port=9998/tcp
- firewall-cmd --permanent --add-port=9999/tcp
重启Kafka和防火墙,CMAK即可监控整个集群的数据流量情况了:
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。