kafka--集群安裝 使用SASL/PLAIN加密認(rèn)證

2020-10-22
官方配置:http://kafka.apache.org/documentation/#security_sasl_plain

kafka:類(lèi)似于一個(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.itdecent.cn/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---添加開(kāi)機(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

#######################并沒(méi)有什么卵用的分割線######################

?安裝包下載: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

#######################并沒(méi)有什么卵用的分割線######################

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? ? ? ? ? ? ? ? ? ? ? ? ? ? ? #開(kāi)啟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

#######################并沒(méi)有什么卵用的分割線######################

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--添加開(kāi)機(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ò)之類(lèi)信息、如果啟動(dòng)沒(méi)有問(wèn)題可以加 -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)依賴(lài)zk,如果zk還沒(méi)起來(lái)就執(zhí)行了這個(gè)命令,服務(wù)是起不來(lái)的

#######################并沒(méi)有什么卵用的分割線######################

#創(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

#######################并沒(méi)有什么卵用的分割線######################

報(bào)錯(cuò)信息集合

https://blog.csdn.net/zsyoung/article/details/100102551

大屌哥文檔
https://blog.csdn.net/qq_31547771/article/details/100585535

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容