Kafka安装配置(SASL/SCRAM动态认证)
????????SASL/SCRAM驗(yàn)證方法可以在Kafka服務(wù)啟動之后,動態(tài)的新增用戶分并配權(quán)限,在業(yè)務(wù)變動頻繁,開發(fā)人員多的情況下比SASL/PLAIN方法更加靈活。
Zookeeper:3.4.13,kafka依賴zookeeper,
Kafka:kafka_2.12-2.8.1
ZooInspector:zookeeper客戶端查看工具
安裝根目錄:/app/kafka/
Zookeeper下載地址:Apache ZooKeeper
Kafka下載地址:Apache Kafka
1.安裝zookeeper
1.1.上傳到目錄并解壓
-- 進(jìn)入zookeeper安裝目錄 cd /app/kafka -- 選擇zookeeper壓縮包上傳 rz -- 解壓文件 tar -zxvf zookeeper-3.4.13.tar.gz -- 重命名 mv zookeeper-3.4.13 zookeeper1.2.修改配置
-- 進(jìn)入配置文件根目錄 cd /app/kafka/zookeeper/conf -- 復(fù)制配置文件 cp zoo_sample.cfg zoo.cfg -- 修改配置文件zoo.cfg vi zoo.cfg-- 配置2個配置項dataDir=/app/kafka/zookeeper/datadataLogDir=/app/kafka/zookeeper/logs1.3.服務(wù)腳本
-- 進(jìn)入zookeeper的bin目錄 cd /app/kafka/zookeeper/bin -- 啟動服務(wù),指定配置文件 ./zkServer.sh start ../conf/zoo.cfg -- 停止服務(wù) ./zkServer.sh stop -- 查看狀態(tài) ./zkServer.sh status -- 啟動客戶端 ./zkCli.sh -- 查看zookeeper中的所有topic主題 ls /brokers/topics/ -- 刪除test-topic主題 delete /brokers/topics/test-topic2.安裝kafka
2.1.上傳到目錄并解壓
-- 進(jìn)入kafka安裝目錄 cd /app/kafka -- 選擇kafka壓縮包上傳 rz -- 解壓文件 tar -zxvf kafka_2.12-2.8.1.tgz -- 重命名 mv kafka_2.12-2.8.1 kafka2.2.修改配置
-- 進(jìn)入配置文件根目錄 cd /app/kafka/kafka/config -- 修改配置文件 vi server.propertiesbroker.id=0 # broker.id屬性在kafka集群中必須要是唯一listeners=PLAINTEXT://localhost:9092 # kafka部署的ip和端口號log.dir=/kafka/kafka-logs # kafka的消息存儲文件zookeeper.connect=localhost:2181 # kafka連接zookeeper服務(wù)的地址2.3.服務(wù)腳本
-- 進(jìn)入kafka的bin目錄 cd /app/kafka/kafka/bin -- 非后臺啟動腳本 ./kafka-server-start.sh ../config/server.properties -- 后臺啟動腳本 ./kafka-server-start.sh -daemon ../config/server.properties 1>> kafka-server.log 2>> kafka-server.log & -- 停止服務(wù) ./kafka-server-stop.sh -- 創(chuàng)建test_topic主題 ./kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 1 --partitions 11 --topic test_topic -- 擴(kuò)容分區(qū) ./kafka-topics.sh -alter --partitions 20 --zookeeper localhost:2181 --topic test_topic -- 查看主題列表 ./kafka-topics.sh --list --zookeeper localhost:2181 -- 查看test_topic情況 ./kafka-topics.sh --describe --zookeeper localhost:2181 --topic test_topic -- 刪除test_topic主題 ./kafka-topics.sh --delete --topic test_topic --zookeeper localhost:2181 -- 給test_topic主題生產(chǎn)消息 ./kafka-console-producer.sh --broker-list localhost:9092 --topic test_topic -- 從test_topic主題消費(fèi)消息 ./kafka-console-consumer.sh --bootstrap-server localhost:9092 --from-beginning --topic test_topic3.配置SASL/SCRAM動態(tài)認(rèn)證
????????SASL/SCRAM認(rèn)證是把憑證(credential)存儲在Zookeeper,使用kafka-configs.sh在Zookeeper中創(chuàng)建憑據(jù)。對于每個SCRAM機(jī)制,必須添加具有機(jī)制名稱的配置來創(chuàng)建憑證,在啟動Kafka broker之前創(chuàng)建代理間通信的憑據(jù)。所以第一步,在沒有設(shè)置任何權(quán)限的配置下啟動Kafka和Zookeeper。
3.1.SCRAM用戶證書配置
-- 進(jìn)入kafka的bin目錄 cd /app/kafka/kafka/bin -- 創(chuàng)建broker通信用戶:admin(在使用sasl之前必須先創(chuàng)建,否則啟動報錯) ./kafka-configs.sh --zookeeper localhost:2181 --alter --add-config 'SCRAM-SHA-256=[password=admin-sec]' --entity-type users --entity-name admin -- 創(chuàng)建生產(chǎn)者證書 ./kafka-configs.sh --zookeeper localhost:2181 --alter --add-config 'SCRAM-SHA-256=[password=producer-sec]' --entity-type users --entity-name producer -- 創(chuàng)建消費(fèi)者證書 ./kafka-configs.sh --zookeeper localhost:2181 --alter --add-config 'SCRAM-SHA-256=[password=consumer-sec]' --entity-type users --entity-name consumer -- 查看用戶[producer]的SCRAM證書 ./kafka-configs.sh --zookeeper localhost:2181 --describe --entity-type users --entity-name producer -- 刪除用戶[producer]的SCRAM證書 ./kafka-configs.sh --zookeeper localhost:2181 --alter --delete-config 'SCRAM-SHA-256' --entity-type users --entity-name producer3.2.服務(wù)端配置
-- 進(jìn)入kafka目錄 cd /app/kafka/kafka -- 創(chuàng)建JAAS配置文件 vi config/kafka-server-jaas.conf-- 文件內(nèi)容如下KafkaServer {org.apache.kafka.common.security.scram.ScramLoginModule requiredusername="admin"password="admin-sec";}; -- 創(chuàng)建sasl啟動腳本 cp bin/kafka-server-start.sh bin/kafka-server-start-sasl.sh -- 修改sasl啟動腳本 vi bin/kafka-server-start-sasl.sh-- 最后一行配置修改為如下exec $base_dir/kafka-run-class.sh $EXTRA_ARGS -Djava.security.auth.login.config=/app/kafka/kafka/config/kafka-server-jaas.conf kafka.Kafka "$@" -- 創(chuàng)建sasl服務(wù)屬性配置 cp config/server.properties config/server-sasl.properties -- 修改sasl服務(wù)屬性配置 vi config/server-sasl.properties-- 配置修改如下# 認(rèn)證配置listeners=SASL_PLAINTEXT://localhost:9092security.inter.broker.protocol=SASL_PLAINTEXTsasl.mechanism.inter.broker.protocol=SCRAM-SHA-256sasl.enabled.mechanisms=SCRAM-SHA-256# ACL配置allow.everyone.if.no.acl.found=falsesuper.users=User:adminauthorizer.class.name=kafka.security.auth.SimpleAclAuthorizer-- 重啟Kafka和Zookeeper cd /app/kafka/kafka/bin ./kafka-server-stop.sh ./kafka-server-start-sasl.sh ../config/server-sasl.properties # 后臺啟動 ./kafka-server-start-sasl.sh -daemon ../config/server-sasl.properties 1>> kafka-server-sasl.log 2>> kafka-server-sasl.log & cd /app/kafka/zookeeper/bin ./zkServer.sh stop ./zkServer.sh start ../conf/zoo.cfg3.3.客戶端配置
-- 進(jìn)入kafka目錄 cd /app/kafka/kafka -- 創(chuàng)建admin用戶客戶端JAAS配置文件 vi config/kafka-client-scram-admin-jaas.conf-- 文件內(nèi)容如下KafkaServer {org.apache.kafka.common.security.scram.ScramLoginModule requiredusername="admin"password="admin-sec";}; -- 創(chuàng)建producer用戶客戶端JAAS配置文件 vi config/kafka-client-scram-producer-jaas.conf-- 文件內(nèi)容如下KafkaServer {org.apache.kafka.common.security.scram.ScramLoginModule requiredusername="producer"password="producer-sec";}; -- 創(chuàng)建consumer用戶客戶端JAAS配置文件 vi config/kafka-client-scram-consumer-jaas.conf-- 文件內(nèi)容如下KafkaServer {org.apache.kafka.common.security.scram.ScramLoginModule requiredusername="consumer"password="consumer-sec";}; -- 創(chuàng)建生產(chǎn)者sasl啟動腳本 cp bin/kafka-console-producer.sh bin/kafka-console-producer-sasl.sh -- 修改生產(chǎn)者sasl啟動腳本 vi bin/kafka-console-producer-sasl.sh-- 配置修改為如下exec $(dirname $0)/kafka-run-class.sh -Djava.security.auth.login.config=/app/kafka/kafka/config/kafka-client-scram-producer-jaas.conf -- 創(chuàng)建消費(fèi)者sasl啟動腳本 cp bin/kafka-console-consumer.sh bin/kafka-console-consumer-sasl.sh -- 修改消費(fèi)者sasl啟動腳本 vi bin/kafka-console-consumer-sasl.sh-- 配置修改為如下exec $(dirname $0)/kafka-run-class.sh -Djava.security.auth.login.config=/app/kafka/kafka/config/kafka-client-scram-consumer-jaas.conf -- 修改屬性配置consumer.properties和producer.properties,修改方式相同 vi consumer.properties-- 修改配置如下security.protocol=SASL_PLAINTEXTsasl.mechanism=SCRAM-SHA-2563.4.讀寫權(quán)限配置
-- 進(jìn)入kafka的bin目錄 cd /app/kafka/kafka/bin -- 對生產(chǎn)者producer指定主題(test-topic)賦予寫的權(quán)限 ./kafka-acls.sh --authorizer kafka.security.auth.SimpleAclAuthorizer --authorizer-properties zookeeper.connect=localhost:2181 --add --allow-principal User:producer --operation Write --topic test-topic -- 對消費(fèi)者consumer指定主題(test-topic)賦予讀的權(quán)限 ./kafka-acls.sh --authorizer kafka.security.auth.SimpleAclAuthorizer --authorizer-properties zookeeper.connect=localhost:2181 --add --allow-principal User:consumer --operation Read --topic test-topic -- 對消費(fèi)者組(groupid='test-group')授權(quán) ./kafka-acls.sh --authorizer kafka.security.auth.SimpleAclAuthorizer --authorizer-properties zookeeper.connect=localhost:2181 --add --allow-principal User:consumer --operation Read --group test-group -- 查看權(quán)限 ./kafka-acls.sh --authorizer kafka.security.auth.SimpleAclAuthorizer --authorizer-properties zookeeper.connect=localhost:2181 --list4.測試
4.1.Kafka自帶客戶端測試
-- 啟動zookeeper服務(wù)(如未啟動) cd /app/kafka/zookeeper/bin ./zkServer.sh start zoo.cfg -- 啟動kafka服務(wù)(如未啟動) cd /app/kafka/kafka/bin ./kafka-server-start-sasl.sh -daemon ../config/server-sasl.properties 1>> kafka-server-sasl.log 2>> kafka-server-sasl.log & -- 創(chuàng)建主題 ./kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 1 --partitions 1 --topic test-topic -- 啟動生產(chǎn)者 ./kafka-console-producer.sh --broker-list localhost:9092 --topic test-topic -- 啟動消費(fèi)者 ./kafka-console-consumer.sh --bootstrap-server localhost:9092 --from-beginning --topic test-topic -- 消息服務(wù)驗(yàn)證測試 #生產(chǎn)者窗口輸入內(nèi)容,消費(fèi)者窗口能馬上消費(fèi)到參考:
https://blog.csdn.net/qq_41688840/article/details/123031628
https://www.cnblogs.com/niun/articles/15504275.html
https://blog.csdn.net/qq_38616503/article/details/117529690
https://blog.csdn.net/weixin_30367543/article/details/98409382
總結(jié)
以上是生活随笔為你收集整理的Kafka安装配置(SASL/SCRAM动态认证)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: emWin—数字软键盘
- 下一篇: html 收藏网站 功能实现,网站常用的