kafka kerberos安全认证后消息测试

在CDH 5.13.1 启用了安全认证后,KAFKA需要经过一些安全参数配置才可以使用。而CDH各个地方的资料都有或多或少的问题,导致各种错误。我这里将今天的踩坑过程记录下来。

1、准备工作
首先需要通过kerberos的安全,需要准备好四个个文件:kaytab文件(krb认证文件)、jaas.conf文件、producer.properties、consumer.properties

jaas.conf文件内容:
KafkaClient {
com.sun.security.auth.module.Krb5LoginModule required
useKeyTab=true
keyTab=”/Users/develop/test/testkafka/kafka.keytab”
storeKey=true
useTicketCache=true
debug=true
principal=”kafka@TEST.COM”;
};
注意里面keytab文件路径,要指向你存放keytab文件路径。

producer.properties文件内容:
security.protocol=SASL_PLAINTEXT
sasl.kerberos.service.name=kafka

consumer.properties文件内容:
security.protocol=SASL_PLAINTEXT
sasl.kerberos.service.name=kafka
sasl.mechanism=GSSAPI

2、导出jaas.conf文件路径到JVM环境变量
export KAFKA_OPTS=”-Djava.security.auth.login.config=/root/kafka_test/jaas.conf”

至此完成安全认证准备,可以进行kafka的相关操作了

3、创建topic
sh /opt/cloudera/parcels/KAFKA/bin/kafka-topics –create –zookeeper server1:2181/kafka –replication-factor 1 –partitions 1 –topic test
注意:-zookeeper server1:2181/kafka 最后的路径/kafka是cdh上kafka的默认root路径。如果不加这个路径就会报如下错误。

4、审查topic是否创建成功

sh /opt/cloudera/parcels/KAFKA/bin/kafka-topics –list –zookeeper server1:2181/kafka

5、创建消费者
sh /opt/cloudera/parcels/KAFKA/bin/kafka-console-consumer –new-consumer –topic test –from-beginning –bootstrap-server server1:9092 –consumer.config consumer.properties –partition 0
注意:虽然我们创建topic的时候设置–partitions 1,但是这里如若不指定–partition 0 ,消费者死活都不会拿到消息的!!具体原因没有仔细探查,估计是什么默认参数的问题,目前这样设置是可以拿到消息的。

6、创建生产者
sh /opt/cloudera/parcels/KAFKA/bin/kafka-console-producer –broker-list server1:9092 –topic test –producer.config producer.properties

至此可以在安全认证的kafka上,通过生产者和消费者测试。但是如何使用java程序登入安全认证的kafka还在努力中。。。感觉免费版的cdh真难用。。

发表评论

电子邮件地址不会被公开。 必填项已用*标注