本文主要是介绍kafka 0.10.1.1的SASL入门配置教程,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
刚测通的kafka的producer和consumer,下来准备搞一下kafka的认证,SSL比较复杂,而且影响性能,内部暂时不考虑,因此把目标定在了SASL上。本来以为按照网上的教程简单配置一下很快就能搞定的,结果没有一个能用的,走了好多弯路,花了一天多才搞定,因此记录一下,此次的配置针对的是kafka0.10.1.1的版本
配置分为3部分,zookeeper的配置、broker的配置和producer以及consumer的配置。
第一部分 zookeeper的配置
进入kafka目录执行 vi kafka_zoo_jaas.conf
Server {org.apache.kafka.common.security.plain.PlainLoginModule requiredusername="admin"password="admin-secret"user_admin="admin-secret";
};
vi bin/zookeeper-server-start.sh在文档的倒数第二行加入以下内容:
export KAFKA_OPTS=" -Djava.security.auth.login.config=/usr/local/kafka1011/kafka_zoo_jaas.conf"
然后执行vi config/zookeeper.properties添加zookeeper.properties中的配置如下:
authProvider.1=org.apache.zookeeper.server.auth.SASLAuthenticationProvider
requireClientAuthScheme=sasl
jaasLoginRenew=3600000
执行./bin/zookeeper-server-start.sh config/zookeeper.properties 启动zookeeper成功。
在zookeeper这里卡了很久,主要是一开始没有意识到是zookeeper的问题。
第二部分 broker的配置
vi kafka_server_jaas.conf
KafkaServer {org.apache.kafka.common.security.plain.PlainLoginModule requiredusername="admin"password="admin-secret"user_admin="admin-secret"user_producer="prod-sec"user_consumer="cons-sec";
};
Client {
org.apache.kafka.common.security.plain.PlainLoginModule requiredusername="admin"password="admin-secret";
};
不知道是不是跟kafka的版本有关系,我看别人这里配置的不是Client。
cp bin/kafka-server-start.sh bin/secured-kafka-server-start.sh
vi bin/secured-kafka-server-start.sh
在最后一行改为以下内容
exec $base_dir/kafka-run-class.sh $EXTRA_ARGS -Djava.security.auth.login.config=/usr/local/kafka1011/kafka_server_jaas.conf kafka.Kafka "$@"
然后vi $KAFKA_HOME/server.properties或者vi config/server.properties加入以下内容:
security.inter.broker.protocol=SASL_PLAINTEXT
sasl.enabled.mechanisms=PLAIN
sasl.mechanism.inter.broker.protocol=PLAIN
authorizer.class.name=kafka.security.auth.SimpleAclAuthorizer
allow.everyone.if.no.acl.found=true
super.users=User:admin
执行./bin/secured-kafka-server-start.sh ./config/server.properties观察日志,成功。
第三部分 producer以及consumer的配置
vi writer_jaas.conf
KafkaClient {
org.apache.kafka.common.security.plain.PlainLoginModule required
username="admin"
password="admin-secret";
};
vi producer.properties 和consumer.properties
security.protocol=SASL_PLAINTEXT
sasl.mechanism=PLAIN
cp bin/kafka-console-consumer.sh bin/reader-kafka-console-consumer.sh
vi bin/reader-kafka-console-consumer.sh
cp bin/kafka-console-producer.sh bin/writer-kafka-console-producer.sh
vi bin/writer-kafka-console-producer.sh
修改writer-kafka-console-producer.sh与reader-kafka-console-consumer.sh文件
最后一行改为
exec $(dirname $0)/kafka-run-class.sh -Djava.security.auth.login.config=/usr/local/kafka1011/writer_jaas.conf kafka.tools.ConsoleProducer "$@"
再用kafka-acls.sh对用户进行授权
./bin/kafka-acls.sh --authorizer-properties zookeeper.connect=10.1.8.16:2181,10.1.8.15:2181,10.1.8.14:2181 --add --allow-principal User:admin --operation Read --operation Write --topic replica
然后启动writer-kafka-console-producer.sh
./bin/writer-kafka-console-producer.sh --broker-list 10.1.8.16:9092,10.1.8.15:9092,10.1.8.14:9092 --topic replica --producer.config config/producer.properties
./bin/reader-kafka-console-consumer.sh --bootstrap-server 10.1.8.16:9092,10.1.8.15:9092,10.1.8.14:9092 --topic replica --from-beginning --consumer.config config/consumer.properties
下面是一些错误的汇总
zookeeper配置不正确,zookeeper.properties中缺少了那三行配置
kafka_server_jaas.conf与对应的kafka_zoo_jaas.conf错误
kafka_server_jaas.conf中的应为Client而不是KafkaClient
这个错误是第一次配置时出来的,想了一下第一次的配置与最终版本的配置差异较大,出了这种问题的话建议重来吧
这个是kafka_zoo_jaas.conf中配置的问题,网上搜的资料是配置为zookeeper,但是实际上应该为Server。
压力测试命令
./bin/kafka-producer-perf-test.sh --topic test-pati3-rep2 --throughput 500000 --num-records 1500000 --record-size 1000 --producer.config config/producer.properties --producer-props bootstrap.servers=10.1.8.16:9092,10.1.8.15:9092,10.1.8.14:9092 acks=1
下周准备尝试下多用户的配置,到时候继续更新。
这篇关于kafka 0.10.1.1的SASL入门配置教程的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!