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

下週準備嘗試下多用戶的配置,到時候繼續更新。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章