lite2.0的kafka集群使用SASL认证,有两种类型环境:kerberos环境和非kerberos环境。kafka的访问方式有produce和consume,下面分别介绍不同环境下的kafka集群的访问方式。
1. 非kerberos环境
1.1. 准备
访问非kerberos环境的kafka集群之前,需要进行以下三项准备工作。
第一步:准备kafka-client-jaas.conf配置文件,也直接取kafka生成的客户端配置文件/etc/kafka/conf/kafka-client-jaas.conf,内容如下所示:
kafka-client-jaas.conf
KafkaClient {
org.apache.kafka.common.security.plain.PlainLoginModule required
username="kafka"
password="kafka@Tbds.com";
};
第二步:配置KAFKA_OPTS参数,执行命令:export KAFKA_OPTS='-Djava.security.auth.login.config=/etc/kafka/conf/kafka-client-jaas.conf'
第三步:准备kafka-sasl-conig.properties配置文件,内容如下所示:
kafka-sasl-conig.properties
security.protocol=SASL_PLAINTEXT
sasl.mechanism=PLAIN
假设把kafka-sasl-conig.properties文件保存在/tmp/目录下,即/tmp/kafka-sasl-conig.properties。
1.2. produce demo
produce即往kafka写入消息,produce的执行方法如下所示:
produce执行案例
export KAFKA_OPTS='-Djava.security.auth.login.config=/etc/kafka/conf/kafka-client-jaas.conf'
#第一种方法
bin/kafka-console-producer.sh --topic testTopic1 --bootstrap-server tbds-9-135-219-135:6669 --producer-property security.protocol=SASL_PLAINTEXT --producer-property sasl.mechanism=PLAIN
#第二种方法
bin/kafka-console-producer.sh --topic testTopic1 --bootstrap-server tbds-9-135-219-135:6669 --producer.config /tmp/kafka-sasl-config.properties
1.3. consumer demo
consume即从kafka读取消息,consume的执行方法如下所示:
consume执行案例
export KAFKA_OPTS='-Djava.security.auth.login.config=/etc/kafka/conf/kafka-client-jaas.conf'
#第一种方法
bin/kafka-console-consumer.sh --topic testTopic1 --from-beginning --bootstrap-server tbds-9-135-219-135:6669 --consumer-property security.protocol=SASL_PLAINTEXT --consumer-property sasl.mechanism=PLAIN
#第二种方法
bin/kafka-console-consumer.sh --topic testTopic1 --from-beginning --bootstrap-server tbds-9-135-219-135:6669 --consumer.config /tmp/kafka-sasl-config.properties
2. kerberos环境
2.1. 准备
访问kerberos环境的kafka集群之前,需要进行以下三项准备工作。
第一步:准备kerberos认证用户。使用principal为“kafka-client/tbds-9-134-191-22@TBDS.COM”,keytab密钥文件为“/etc/security/keytabs/kafka.client.keytab”。
第二步:准备jaas配置文件配置文件/tmp/kafka-client-jaas.properties,内容如下所示:
/tmp/kafka-client-jaas.properties
security.protocol=SASL_PLAINTEXT
sasl.mechanism=GSSAPI
sasl.kerberos.service.name=kafka
第三步:准备java.security.auth.login.config配置文件/etc/kafka/conf/kafka-client-jaas.conf,此文件在kafka安装时已创建,如果文件不存在才需手动创建,内容如下所示:
kafka-client-jaas.conf
// Kafka client authentication
KafkaClient {
com.sun.security.auth.module.Krb5LoginModule required
useKeyTab=true
storeKey=true
keyTab="/etc/security/keytabs/kafka.client.keytab"
principal="kafka-client/tbds-9-134-191-22@TBDS.COM";
};
主要是替换keyTab和principal字段的值。
2.2. produce demo
produce案例如下所示:
produce in kerberos
export KAFKA_OPTS='-Djava.security.auth.login.config=/etc/kafka/conf/kafka-client-jaas.conf';
#第一种方式
bin/kafka-console-producer.sh --bootstrap-server tbds-9-134-191-129:6669,tbds-9-134-191-22:6669,tbds-9-134-191-235:6669 --topic test20210601 --producer-property security.protocol=SASL_PLAINTEXT --producer-property sasl.mechanism=GSSAPI --producer-property sasl.kerberos.service.name=kafka;
#第二种方式
bin/kafka-console-producer.sh --bootstrap-server tbds-9-134-191-129:6669,tbds-9-134-191-22:6669,tbds-9-134-191-235:6669 --topic test20210601 --producer.config /tmp/kafka-client-jaas.properties;
2.3. consume demo
consume案例如下所示:
consume in kerberos
export KAFKA_OPTS='-Djava.security.auth.login.config=/etc/kafka/conf/kafka-client-jaas.conf';
#第一种方式
bin/kafka-console-consumer.sh --bootstrap-server tbds-9-134-191-129:6669,tbds-9-134-191-22:6669,tbds-9-134-191-235:6669 --topic test20210601 --group abcd001 --from-beginning --consumer-property security.protocol=SASL_PLAINTEXT --consumer-property sasl.mechanism=GSSAPI --consumer-property sasl.kerberos.service.name=kafka;
#第二种方式
bin/kafka-console-consumer.sh --bootstrap-server tbds-9-134-191-129:6669,tbds-9-134-191-22:6669,tbds-9-134-191-235:6669 --topic test20210601 --group abcd001 --from-beginning --consumer.config /tmp/kafka-client-jaas.properties;
注意:本文归作者所有,未经作者允许,不得转载