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 required
            username="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 required
        username="admin"
        password="admin-secret"
        user_admin="admin-secret"
        user_producer="prod-sec"
        user_consumer="cons-sec";
};
Client {
org.apache.kafka.common.security.plain.PlainLoginModule required
   username="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

下周准备尝试下多用户的配置,到时候继续更新。

猜你喜欢

转载自blog.csdn.net/skymouse2002/article/details/79931371