kafka-manager配置及安装Kerberos(Ambari-HDP)认证

目录

一、概述

二、环境

三、部署kafka-manager

3.1下载

3.2 配置修改

3.3kafka开启JMX

3.4启动CMAK

3.5登录

扫描二维码关注公众号,回复: 14887676 查看本文章

3.6添加kafka cluster配置

3.7 问题

3.8Topic和Broker信息查看

3.9Topic创建


一、概述


为了简化开发者和服务工程师维护Kafka集群的工作,yahoo构建了一个叫做Kafka管理器的基于Web工具,叫做 Kafka Manager(已改名为 cmak)。

这个管理工具可以很容易地发现分布在集群中的哪些topic分布不均匀,或者是分区在整个集群分布不均匀的的情况。

它支持管理多个集群、选择副本、副本重新分配以及创建Topic。同时,这个管理工具也是一个非常好的可以快速浏览这个集群的工具,有如下功能:

  • 管理多个集群
  • 轻松检查集群状态(主题、消费者、偏移量、代理、副本分布、分区分布)
  • 运行首选副本选择
  • 生成分区分配,带有选择要使用的代理的选项
  • 运行分区重分配(基于生成的分配)
  • 创建一个带有可选主题配置的主题(0.8.1.1与0.8.2+有不同的配置)
  • 删除主题(仅在0.8.2+支持,记住设置Delete .topic。在代理配置中启用=true)
  • 主题列表现在显示标记为删除的主题(仅支持0.8.2+)
  • 批量生成多个主题的分区分配,并可选择要使用的代理
  • 批量运行多个主题的分区重分配
  • 向现有主题添加分区
  • 更新现有主题的配置
  • 可选地为代理级和主题级指标启用JMX轮询。

可选地过滤掉在zookeeper中没有id /所有者/ &偏移量/目录的消费者。

GitHub - yahoo/CMAK: CMAK is a tool for managing Apache Kafka clustersCMAK is a tool for managing Apache Kafka clusters. Contribute to yahoo/CMAK development by creating an account on GitHub.https://github.com/yahoo/CMAK


二、环境


Ambari 集群版本信息

注意:cmak环境要求JDK版本为11

1、jdk
java version "jdk-11.0.18"
 
2、kafka集群信息
服务器:
192.168.2.152:6667
192.168.2.153:6667

软件:
kafka_2.0.0
zookeeper-3.4.6

三、部署kafka-manager


3.1下载

cmak下载地址为:

https://github.com/yahoo/CMAK/releases/download/3.0.0.6/cmak-3.0.0.6.zip

3.2 配置修改

export JAVA_HOME=/hadoop/software/jdk-11.0.18

因为本地已经添加JDK1.8 环境变量,所以我在启动脚本中添加JDK环境变量

修改cmak中application.conf配置文件:

kafka-manager.zkhosts="192.168.2.152:2181,192.168.2.153:2181"
kafka-manager.zkhosts=${?ZK_HOSTS}
cmak.zkhosts="192.168.2.152:2181,192.168.2.153:2181"
cmak.zkhosts=${?ZK_HOSTS}
##开启认证
basicAuthentication.enabled=true

basicAuthentication.username="admin"
basicAuthentication.username=${?KAFKA_MANAGER_USERNAME}
basicAuthentication.password="admin"
basicAuthentication.password=${?KAFKA_MANAGER_PASSWORD}

#kafka-manager.consumer.properties.file=${?CONSUMER_PROPERTIES_FILE}
kafka-manager.consumer.properties.file=/hadoop/software/cmak-3.0.0.6/conf/consumer.properties


添加conf/consumer.properties配置

security.protocol=SASL_PLAINTEXT
key.deserializer=org.apache.kafka.common.serialization.ByteArrayDeserializer
value.deserializer=org.apache.kafka.common.serialization.ByteArrayDeserializer
sasl.mechanism=GSSAPI
sasl.kerberos.service.name=kafka
添加 conf/jaas.conf 配置

Client{
  com.sun.security.auth.module.Krb5LoginModule required
  useKeyTab=true
  keyTab="/etc/security/keytabs/kafka.service.keytab"
  principal="kafka/[email protected]"
  serviceName="kafka"
  doNotPrompt=true;
};
KafkaClient{
  com.sun.security.auth.module.Krb5LoginModule required
  useKeyTab=true
  keyTab="/etc/security/keytabs/kafka.service.keytab"
  principal="kafka/[email protected]"
  serviceName="kafka"
  doNotPrompt=true;
};

3.3kafka开启JMX

如果开启JMX轮训 ,必须要在kafka启动脚本中打开JMX端口(kafka节点都打开)

vim  /usr/hdp/3.1.4.0-315/kafka/bin/kafka-server-start.sh

export JMX_PORT=9999

然后去重启kafka, 检测kafka-manager端口

3.4启动CMAK

创建启动脚本 startCamk.sh

#!/bin/bash
echo '-------------------------------------------------------------------分界线'$(date +%F%t%T)> manager.out


# 配置kafka-manager元数据使用的zookeeper,此处必须是用export
export ZK_HOSTS=192.168.2.152:2181,192.168.2.153:2181,192.168.2.154:2181
# kafka-manager 路径
MANAGER_HOME=/hadoop/software/cmak-3.0.0.6
# 可执行文件路径
KAFKA_MANAGER=$MANAGER_HOME/bin/cmak
# 日志位置
APP_HOME=-Dapplication.home=$MANAGER_HOME
# 端口
HTTP_PORT=-Dhttp.port=9001


# SASL安全认证
JAAS_CONF=-Djava.security.auth.login.config=$MANAGER_HOME/conf/jaas.conf
KRB5_CONF=-Djava.security.krb5.conf=$MANAGER_HOME/conf/krb5.conf


nohup  $KAFKA_MANAGER $JAAS_CONF $KRB5_CONF $APP_HOME $HTTP_PORT >manager.out 2>&1 &


echo "$!"
tailf manager.out

可以先在 前台启动 ,查看是否有报错

./bin/cmak -Djava.security.krb5.conf=./conf/krb5.conf -Djava.security.auth.login.config=./conf/jaas.conf -Dhttp.port=9001

3.5登录

http://192.168.2.154:9000/

之前配置了账号密码(admin/admin) 如果没有改过是(admin/password)

3.6添加kafka cluster配置

当我们第一次打开这个界面的时候 是空白的 要配置 添加集群

配置:zookeeper 地址,后面的namespace 不用加

因为开启了kerberos 所以选择认证模式。save保存 然后去查看

3.7 问题

配置保存失败:kafka manager添加集群出现错误KeeperErrorCode

KeeperErrorCode = Unimplemented for /kafka-manager/mutex Try again.

解决办法

登录到zookeeper客户端,手动创建/ kafka-manager/ mutex / locks和/ kafka-manager / mutex / leases节点

[root@hdp103 ~]# zookeeper-client \
create /kafka-manager/mutex/locks ""
create /kafka-manager/mutex ""
create /kafka-manager/mutex/leases ""

3.8Topic和Broker信息查看

Summary 页面 可以看到 ,zk连接信息、kafka 版本信息、Topic和Brokers个数。

查看topic状态,面上可以查看到Broker信息 topic状态

点击 List 可以查看 Topics 清单

查看 topic kangtest 的详细信息

3.9Topic创建

其他参数配置,默认

topic list 查看 topic kangll-manager-test 创建成功

命令行查看 topic

接下来我们根据一张图理解上面的设置:


在上图一个Kafka集群中,有两个服务器,每个服务器上都有2个分区。P0,P3可能属于同一个主题,也可能是两个不同的主题。

如果设置的Partitons和Replication Factor都是2,这种情况下该主题的分布就和上图中Kafka集群显示的相同,此时P0,P3是同一个主题的两个分区。P1,P2也是同一个主题的两个分区,Server1和Server2其中一个会作为Leader进行读写操作,另一个通过复制进行同步。

如果设置的Partitons和Replication Factor都是1,这时只会根据算法在某个Server上创建一个分区,可以是P0~4中的某一个(分区都是新建的,不是先存在4个然后从中取1个)。

猜你喜欢

转载自blog.csdn.net/qq_35995514/article/details/129673341