Fayson在前面的文章介绍了《如何在CDH集群安装Kafka Manager》和《0542-6.1.0-非安全环境下Kafka管理工具Kafka Eagle安装使用》。Kafka-eagle支持Kerberos环境下的Kafka集群管理,本篇文章Fayson主要介绍在Kerberos环境下Kafka管理工具Kafka Eagle安装使用。
1.Kafka-eagle配置
2.Kafka-eagle使用
3.总结
1.CM和CDH版本为5.15.0
2.Kafka版本为0.10.2+kafka2.2.0
3.Kafka-eagle版本为1.2.9
2
Kafka-eagle配置
在前面的文章《6.1.0-非Kerberos环境下Kafka管理工具Kafka Eagle安装使用》已经介绍了Kafka-eagle的安装及配置,这里就不再重复的讲了。既然要集成Kerberos环境下的Kafka,当然少不了Principal账号和keytab文件。
1.准备一个kafka的Principal账号及keytab文件
使用AD的话window下导出keytab命令:
ktpass -princ kafka/[email protected] -mapuser kafka/admin -pass 123!QAZ -out kafkaadmin.keytab -crypto RC4-HMAC-NT
使用KDC的话Linux下导出keytab命令:
kadmin.local -q "xst -norandkey -k kafkaadmin.keytab kafka/[email protected]"
2.进入{KE_HOME}/conf目录,在system-config.properties配置文件中找到“kafka sasl authenticate”片段将配置修改为如下内容
kafka.eagle.sasl.enable=true kafka.eagle.sasl.protocol=SASL_PLAINTEXT kafka.eagle.sasl.mechanism=GSSAPI
3.修改${KE_HOME}/conf/kafka_client_jaas.conf文件,内容如下:
KafkaClient { com.sun.security.auth.module.Krb5LoginModule required useKeyTab=true storeKey=true serviceName=kafka keyTab="/opt/cloudera/kafka-eagle/keytab/kafkaadmin.keytab" principal="kafka/[email protected]"; }; Client { com.sun.security.auth.module.Krb5LoginModule required useKeyTab=true storeKey=true keyTab="/opt/cloudera/kafka-eagle/keytab/kafkaadmin.keytab" principal="kafka/[email protected]"; };
注意:kafka_client_jaas.conf文件中配置的serviceName=kafka参数,在Kerberos环境下访问Kafka时需要获取serviceName,之前Fayson是在代码里面指定“sasl.kerberos.service.name”与jaas.conf文件中指定效果一致。如下是KafkaClient加载Kerberos配置时获取serviceName代码片段
3
Kafka-eagle使用
1.kafka-eagle监控主页
2.Topic列表界面
3.模拟向指定Topic发送消息界面
4.Consumers监控界面
5.Kafka指标监控界面
4
总结
1.在集成Kerberos环境下的Kafka时需要注意jaas.conf文件中需要增加serviceName属性,否则Kafka-eagle在访问Kakfa时会报“No serviceName defined in either JAAS or Kafka config”错误。
2.Kafka-eagle1.2.9版本使用的Kafka客户端为2.0.0,目前集成Kafka0.10.2版本未发现有什么异常。
更多功能可参考官方文档:https://ke.smartloli.org/
在安装测试过程总使用的Kafka自带的性能测试脚本生成和消费消息
[root@cdh05 lib]# more /data/disk1/client.properties security.protocol=SASL_PLAINTEXT sasl.kerberos.service.name=kafka client.id=testgroup bootstrap.servers=cdh2.fayson.com:9092,cdh3.fayson.com:9092,cdh4.fayson.com:9092 max.request.size=4192256
生产消息脚本
export KAFKA_OPTS="-Djava.security.auth.login.config=/opt/cloudera/kafka-eagle/conf/kafka_client_jaas.conf " sh /opt/cloudera/parcels/KAFKA/lib/kafka/bin/kafka-producer-perf-test.sh \ --topic topic_eagle_1 \ --num-records 1000 \ --producer.config /data/disk1/client.properties \ --throughput 10 \ --record-size 1024
消费消息脚本
export KAFKA_OPTS="-Djava.security.auth.login.config=/opt/cloudera/kafka-eagle/conf/kafka_client_jaas.conf " /opt/cloudera/parcels/KAFKA/lib/kafka/bin/kafka-consumer-perf-test.sh \ --topic topic_eagle_1 \ --messages 10000 \ --fetch-size 10 \ --broker-list cdh2.fayson.com:9092,cdh3.fayson.com:9092,cdh4.fayson.com:9092 \ --consumer.config /data/disk1/client.properties