zookeeper 和 kafka Sasl认证登录(服务端)

本文介绍如何配置Kafka和Zookeeper的安全认证,包括应用版本选择、配置步骤及重启服务等内容。适用于希望增强消息传递安全性场景。

目录

一、应用版本: 

一、zookeeper的安全认证配置

二、kafka的安全认证配置(如果需要开启Kafka的安全认证则配置该项)

三、重启zookeeper和kafka


一、应用版本: 

应用版本
应用名称下载链接

apache_zookeeper-3.7.0-bin.tar.gz

点击进入官网

https://dlcdn.apache.org/zookeeper/zookeeper-3.7.0/apache-zookeeper-3.7.0-bin.tar.gz
https://downloads.apache.org/zookeeper/zookeeper-3.7.0/apache-zookeeper-3.7.0-bin.tar.gz
下载链接哪个快用哪个,我用的是第二个

kafka_2.12-2.8.1.tgz

点击进入官网

https://archive.apache.org/dist/kafka/2.8.1/kafka_2.13-2.8.1.tgz

Ubuntu18.04 (其他linux也可以)

点击进入官网)

https://mirrors.hit.edu.cn/ubuntu-releases/18.04.6/ubuntu-18.04.6-live-server-amd64.iso

1.应用下载、解压、目录重命名(也可以提前下载好以后上传到 /opt 目录下)

cd /opt &&  \
wget https://downloads.apache.org/zookeeper/zookeeper-3.7.0/apache-zookeeper-3.7.0-bin.tar.gz && \
wget https://archive.apache.org/dist/kafka/2.8.1/kafka_2.13-2.8.1.tgz && \
tar -zxvf apache-zookeeper-3.7.0-bin.tar.gz && \
tar -zxvf kafka_2.13-2.8.1.tgz && \
mv apache-zookeeper-3.7.0-bin zookeeper && \
mv kafka_2.13-2.8.1 kafka &&\
cp /opt/zookeeper/conf/zoo_sample.cfg /opt/zookeeper/conf/zoo.cfg

一、zookeeper的安全认证配置

说明:这里的kafka和zookeeper的目录是你(解压/重命名)的那个目录。

1、将 ” /op/kafka/libs “ 目录下的相关jar包,复制到 “ /opt/zookeeper/libs ” 目录下。相关包如下:

kafka-clients-2.8.1.jar
lz4-java-1.7.1.jar
slf4j-api-1.7.30.jar
slf4j-log4j12-1.7.30.jar
snappy-java-1.1.8.1.jar

 也可直接执行下面命令

cd /opt/kafka/libs && cp -r kafka-clients-2.8.1.jar lz4-java-1.7.1.jar slf4j-api-1.7.30.jar slf4j-log4j12-1.7.30.jar snappy-java-1.1.8.1.jar /opt/zookeeper/lib

2、zoo.cfg文件配置

在/opt/zookeeper/conf目录下,在配置文件zoo.cfg中添加如下配置

authProvider.1=org.apache.zookeeper.server.auth.SASLAuthenticationProvider  #开启认证功能
requireClientAuthScheme=sasl   #认证方式为sasl
jaasLoginRenew=3600000
zookeeper.sasl.client=true

3、在/opt/zookeeper目录下创建文件“zk_server_jaas.conf”,内容如下

Server {
org.apache.kafka.common.security.plain.PlainLoginModule required 
    username="testadmin" 
    password="testadmin-2021" 
    user_kafka="testkafka-2021" 
    user_producer="testprod-2021";
};

4、修改/opt/zookeeper/bin 目录下的 zkEnv.sh 配置文件,在原参数上添加如下内容

#export SERVER_JVMFLAGS="-Xmx${ZK_SERVER_HEAP}m $SERVER_JVMFLAGS"
 export SERVER_JVMFLAGS="-Xmx${ZK_SERVER_HEAP}m $SERVER_JVMFLAGS -Djava.security.auth.login.config=/opt/zookeeper/zk_server_jaas.conf"

 

5、在/opt/kafka目录下创建文件“kafka_server_jaas.conf”,内容如下

KafkaServer {
	org.apache.kafka.common.security.plain.PlainLoginModule required
	username="testadmin"
	password="testadmin-2021"
	user_admin="testadmin-2021"
	user_producer="testprod-2021"
	user_consumer="testcons-2021";
};

Client {
org.apache.kafka.common.security.plain.PlainLoginModule required
	username="kafka"
	password="testkafka-2021";
};

6、配置/opt/kafka/config目录下的server.properties配置文件,内容如下

listeners=PLAINTEXT://0.0.0.0:9092
advertised.listeners=PLAINTEXT://:9092
security.inter.broker.protocol=PLAINTEXT  
sasl.enabled.mechanisms=PLAIN  
sasl.mechanism.inter.broker.protocol=PLAIN

7、修改目录/opt/kafka/bin下的“kafka-server-start.sh”脚本,内容如下

#   export KAFKA_HEAP_OPTS="-Xmx1G -Xms1G"
    export KAFKA_HEAP_OPTS="-Xmx1G -Xms1G -Djava.security.auth.login.config=/opt/kafka/kafka_server_jaas.conf"

 

二、kafka的安全认证配置(如果需要开启Kafka的安全认证则配置该项

配置/opt/kafka/config目录下的server.properties配置文件,内容如下

listeners=SASL_PLAINTEXT://0.0.0.0:9092
advertised.listeners=SASL_PLAINTEXT://:9092
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

三、重启zookeeper和kafka

zookeeper启动,进入/opt/zookeeper/bin目录执行 ./zkServer.sh start

kafka启动,进入/opt/kafka/bin目录执行 ./kafka-server-start.sh -daemon ../config/server.properties

<think>嗯,用户的问题是关于在Kafka启用SASL认证时,如何配置ZooKeeper连接不使用SASL。我需要先理解他们的问题场景。可能的情况是,用户已经为Kafka配置了SASL认证,但希望ZooKeeper保持不启用SASL,或者两者使用不同的认证机制。这个时候需要确保KafkaZooKeeper之间的连接不需要SASL。 首先,我需要回忆一下KafkaZooKeeper的配置关系。Kafka作为分布式系统,通常依赖ZooKeeper来进行元数据管理协调。在配置Kafka的安全机制时,ZooKeeper的安全配置通常是独立的,也就是说,KafkaSASL配置不一定影响ZooKeeper的连接。但用户可能遇到了问题,比如Kafka尝试用SASL连接ZooKeeper,而ZooKeeper并没有配置SASL,导致连接失败。 接下来,我需要查阅相关的配置参数。Kafka的配置文件中,特别是server.properties,有关于ZooKeeper连接的参数,比如zookeeper.connect。如果用户希望禁用SASL,可能需要检查是否有与安全相关的参数被错误地应用到了ZooKeeper连接上。例如,是否在Kafka的配置中设置了ZooKeeperSASL相关属性,如zookeeper.client.secure或者security相关的参数。 根据引用内容,引用[2]中提到了ZooKeeperKafkaSASL认证配置,其中Kafka的server.properties配置了SASL_PLAINTEXT监听器,但并没有提到ZooKeeper的配置是否需要同步修改。可能用户在这里误解了,认为KafkaSASL配置会自动应用到ZooKeeper,但实际上两者是分开的。 正确的做法应该是确保Kafka连接ZooKeeper时使用的是普通连接,而不是SASL。这时候需要检查Kafka的配置中是否有与ZooKeeper安全相关的参数被设置。例如,zookeeper.client.config参数指定了ZooKeeper客户端的配置文件,如果这个文件中有SASL配置,就需要将其移除或设置为不使用SASL。 另外,KafkaZooKeeper客户端默认是不使用SASL的,除非显式配置。所以用户可能的问题是,在配置KafkaSASL时,错误地配置了ZooKeeperSASL参数,导致连接失败。解决方法就是检查这些配置,并确保ZooKeeper连接使用的是普通的无认证方式。 同时,需要提醒用户,如果ZooKeeper本身启用了SASL,那么Kafka必须配置相应的参数来连接。但用户的问题正好相反,希望ZooKeeper不启用SASL,所以只需确保Kafka的配置中没有为ZooKeeper启用SASL即可。 总结下来,步骤应该是:检查Kafka配置中的ZooKeeper相关参数,移除任何SASL设置,确保ZooKeeper连接使用普通协议,如PLAINTEXT,并且不需要SASL认证。同时,可能需要验证ZooKeeper本身的配置是否确实没有启用SASL,避免因为ZooKeeper服务端的问题导致连接失败。</think>在Kafka启用SASL认证时,若需要配置ZooKeeper连接不使用SASL,需通过以下步骤实现: ### 一、核心原理 KafkaZooKeeper认证配置相互独立。KafkaSASL认证通过`server.properties`实现,而ZooKeeper连接的安全性需通过**独立的客户端配置**控制。默认情况下,若未显式配置ZooKeeperSASL参数,Kafka将以普通明文协议连接ZooKeeper[^3]。 ### 二、具体配置步骤 1. **保持ZooKeeper未启用SASL** - 确保ZooKeeper的`zoo.cfg`配置文件中未添加SASL相关参数(如`authProvider.*`或`requireClientAuthScheme`) 2. **修改KafkaZooKeeper客户端配置** 在Kafka的`server.properties`中**显式指定非SASL协议**: ```properties zookeeper.connect=plaintext://zk_host1:2181,plaintext://zk_host2:2181 ``` 3. **隔离ZooKeeper客户端配置** 创建独立的ZooKeeper客户端配置文件(如`zookeeper-client.properties`),内容为: ```properties zookeeper.sasl.client=false zookeeper.client.secure=false ``` 4. **启动Kafka时指定配置文件** ```bash KAFKA_OPTS="-Dzookeeper.client.config=/path/to/zookeeper-client.properties" ./bin/kafka-server-start.sh config/server.properties ``` ### 三、验证方法 通过ZooKeeper四字命令验证连接类型: ```bash echo stat | nc localhost 2181 | grep Mode ``` 若输出显示`Mode: standalone`且无SASL相关字段,说明连接未使用SASL[^2]。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

kknacl

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值