2020-10-22
官方配置:http://kafka.apache.org/documentation/#security_sasl_plain
kafka:類似于一個(gè)數(shù)據(jù)緩沖區(qū)丹皱,應(yīng)用程序接收不了大量數(shù)據(jù)的沖擊濒旦,依靠kafka在中間做個(gè)緩沖豆巨,kafka依靠zk達(dá)到一個(gè)高可用狀態(tài)
zk:注冊(cè)中心
1灯萍、環(huán)境準(zhǔn)備
? ? ? ? 1猛们、zk安裝--使用kafka的sasl認(rèn)證? #zk安裝請(qǐng)看上個(gè)文檔http://www.reibang.com/p/3b22058ee3fd
? ? ? ? 2艾栋、修改主配置文件乏苦、創(chuàng)建zk_jaas文件畅形、聲明位置养距、拷貝kafka下認(rèn)證文件----如果是集群,所有節(jié)點(diǎn)的機(jī)器內(nèi)容要同步修改
1日熬、修改zk的主配置文件---節(jié)點(diǎn)同步修改
[root@elastic41 zookeeper]# vim conf/zoo.cfg
#文件中新增以下內(nèi)容
#kafka加密認(rèn)證使用
authProvider.1=org.apache.zookeeper.server.auth.SASLAuthenticationProvider? ?##指定使用kafka的認(rèn)證機(jī)制為plain
requireClientAuthScheme=sasl
jaasLoginRenew=3600000
zookeeper.sasl.client=true
2棍厌、創(chuàng)建zk_jaas文件、聲明位置---節(jié)點(diǎn)同步修改
[root@elastic41 zookeeper]# cat >> conf/zk_server_jaas.conf <<EOF
? ? Server {
? ? org.apache.kafka.common.security.plain.PlainLoginModule required? ? ##指定使用kafka的認(rèn)證機(jī)制為plain
? ? username="admin"
? ? password="admin-secret"
? ? user_kafka="kafka-sec"
? ? user_producer="prod-sec";
? ? };
? ? EOF
3竖席、聲明jaas位置---節(jié)點(diǎn)同步修改
[root@elastic41 zookeeper]# vim bin/zkEnv.sh
SERVER_JVMFLAGS=" -Djava.security.auth.login.config=/data/zookeeper/conf/zk_server_jaas.conf"? ? #將這個(gè)變量加入到zkEnv.sh腳本中耘纱,zkServer.sh和zkClient.sh啟動(dòng)會(huì)調(diào)用zkEnv.sh
4、拷貝kafka下認(rèn)證文件到zk/lib中----節(jié)點(diǎn)同步修改
[root@elastic41 zookeeper]# cp -a /root/lxt/kafka_2.11-2.3.0/libs/{kafka-clients-2.3.0.jar,lz4-java-1.6.0.jar,slf4j-api-1.7.26.jar,slf4j-log4j12-1.7.26.jar,snappy-java-1.1.7.3.jar} lib/
5毕荐、重新啟動(dòng)zk---添加開機(jī)啟動(dòng)項(xiàng)
[root@elastic41 zookeeper]# bin/zkServer.sh restart
[root@elastic41 zookeeper]# echo "/data/zookeeper/bin/zkServer.sh start" >> /etc/rc.local
#######################并沒有什么卵用的分割線######################
?安裝包下載:http://kafka.apache.org/downloads? 下載二進(jìn)制包解壓就行? ?#我使用的版本 Scala 2.11-?kafka_2.11-2.3.0.tgz
1束析、kafka在配置文件的config中創(chuàng)建兩個(gè)文件server_jaas和client_jaas文件---集群節(jié)點(diǎn)同步修改
[root@elastic41 kafka_2.11-2.3.0]#cat >> config/kafka_server_jaas.conf <<EOF
KafkaServer {
? ? org.apache.kafka.common.security.plain.PlainLoginModule required
? ? username="admin"
? ? password="admin-sec"
? ? user_admin="admin-sec"
? ? user_producer="prod-sec"
? ? user_consumer="cons-sec";
};
Client {
? ? org.apache.kafka.common.security.plain.PlainLoginModule required
? ? username="kafka"
? ? password="kafka-sec";
};
EOF
--------------------------------------------------分割線----------------------------------------------
[root@elastic42 kafka_2.11-2.3.0]# cat >> config/kafka_client_jaas.conf <<EOF
KafkaClient {
? ? org.apache.kafka.common.security.plain.PlainLoginModule required
? ? ? ? ? ? username="producer"
? ? ? ? ? ? password="prod-sec";
};
EOF
#######################并沒有什么卵用的分割線######################
2、配置 kafka中config/server.properties憎亚,分別在3個(gè)節(jié)點(diǎn)修改配置文件员寇,注意ip和broker.id號(hào)id號(hào)只要三個(gè)節(jié)點(diǎn)不一樣就可以隨意,id號(hào)和/tmp/kafka-logs/meta.properties下面的id號(hào)是對(duì)應(yīng)的第美,如果id號(hào)改變記得修改或者刪除meta文件讓他重新生成蝶锋,影響kafka啟動(dòng)!
[root@elastic42 kafka_2.11-2.3.0]# vim config/server.properties
broker.id=1? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?#其他節(jié)點(diǎn)記得改id號(hào)
listeners=SASL_PLAINTEXT://192.168.7.41:9092? ? ? ? #其他節(jié)點(diǎn)記得改ip
security.inter.broker.protocol=SASL_PLAINTEXT
sasl.enabled.mechanisms=PLAIN
sasl.mechanism.inter.broker.protocol=PLAIN
authorizer.class.name=kafka.security.auth.SimpleAclAuthorizer
super.users=User:admin;User:producer;User:consumer
allow.everyone.if.no.acl.found=true? ? ? ? ? ? ? ? ? ? ? ? ? ? ? #開啟acl拒絕除管理員外任何人啟動(dòng)kafka集群
log.dirs=/data/kafka_2.12-2.3.0/kafka-logs
zookeeper.connect=192.168.7.41:2181,192.168.7.42:2181,192.168.7.43:2181
#######################并沒有什么卵用的分割線######################
3什往、添加kafka-opts參數(shù)指定jaas文件位置---其他節(jié)點(diǎn)要同步扳缕!
#在bin/kafka-server-start.sh中指定server_jaas位置
#在 bin/kafka-console-consumer.sh 和 bin/kafka-console-producer.sh中指定client_jaas位置
[root@elastic41 kafka_2.11-2.3.0]# vim bin/kafka-server-start.sh? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? #位置在base_dir=$(dirname $0)下面就行
export KAFKA_OPTS=" -Djava.security.auth.login.config=/root/lxt/kafka_2.11-2.3.0/config/kafka_server_jaas.conf"
[root@elastic41 kafka_2.11-2.3.0]# vim bin/kafka-console-consumer.sh? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? #位置放到if上面? 指定client_jaas
export KAFKA_OPTS="-Djava.security.auth.login.config=/root/lxt/kafka_2.11-2.3.0/config/kafka_client_jaas.conf"
[root@elastic41 kafka_2.11-2.3.0]# vim bin/kafka-console-producer.sh? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?#位置放到if上面? 指定client_jaas
export KAFKA_OPTS="-Djava.security.auth.login.config=/root/lxt/kafka_2.11-2.3.0/config/kafka_client_jaas.conf"
4、啟動(dòng)kafka--添加開機(jī)啟動(dòng)
[root@elastic41 kafka_2.11-2.3.0]#bin/kafka-server-start.sh? config/server.properties? ? ? ?#前臺(tái)啟動(dòng)可查看報(bào)錯(cuò)之類信息别威、如果啟動(dòng)沒有問題可以加 -daemon直接后臺(tái)啟動(dòng)--或使用nohup? &的方式后臺(tái)啟動(dòng)
[root@elastic41 ~]# /root/lxt/kafka_2.11-2.3.0/bin/kafka-server-start.sh? -daemon? /root/lxt/kafka_2.11-2.3.0/config/server.properties
[root@elastic41 ~]#echo "/root/lxt/kafka_2.11-2.3.0/bin/kafka-server-start.sh?-daemon??/root/lxt/kafka_2.11-2.3.0/config/server.properties" >>/etc/rc.local? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?#這個(gè)方式并不太友好躯舔,因?yàn)樗麊?dòng)依賴zk,如果zk還沒起來就執(zhí)行了這個(gè)命令省古,服務(wù)是起不來的
#######################并沒有什么卵用的分割線######################
#創(chuàng)建topic
[root@elastic41 kafka_2.11-2.3.0] bin/kafka-topics.sh --create --topic testtopic --replication-factor 3 --partitions 1 --zookeeper localhost:2181
查看topic
[root@elastic41 kafka_2.11-2.3.0] bin/kafka-topics.sh --list --zookeeper localhost:2181
其他節(jié)點(diǎn) 產(chǎn)生數(shù)據(jù)測(cè)試
[root@elastic42 kafka_2.11-2.3.0] bin/kafka-console-producer.sh --broker-list 192.168.7.42:9092 --topic testtopic --producer-property security.protocol=SASL_PLAINTEXT --producer-property sasl.mechanism=PLAIN
另一個(gè)節(jié)點(diǎn)? 消費(fèi)者查看數(shù)據(jù)測(cè)試
[root@elastic43 kafka_2.11-2.3.0]# bin/kafka-console-consumer.sh --bootstrap-server 192.168.7.43:9092 --topic testtopic --consumer-property security.protocol=SASL_PLAINTEXT --consumer-property sasl.mechanism=PLAIN --from-beginning
#######################并沒有什么卵用的分割線######################
報(bào)錯(cuò)信息集合
https://blog.csdn.net/zsyoung/article/details/100102551
大屌哥文檔
https://blog.csdn.net/qq_31547771/article/details/100585535