zookeeper设置ACL后 kafka如何连接?

Posted 榕佩

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了zookeeper设置ACL后 kafka如何连接?相关的知识,希望对你有一定的参考价值。

因公司要求,需要在zookeeper配置ACL,但配置ACL后,kafka该如何连接zookeeper?

以下大概根据公司生产环境为zookeeper配置ACL

一、实验环境

ip

软件

安装路径

版本

192.168.6.136

kafka

/opt/kafka

kafka_2.13-3.1.0

zookeeper

/opt/zookeeper

apache-zookeeper-3.7.0

192.168.6.140

kafka

/opt/kafka

kafka_2.13-3.1.1

zookeeper

/opt/zookeeper

apache-zookeeper-3.7.1

192.168.6.141

kafka

/opt/kafka

kafka_2.13-3.1.2

zookeeper

/opt/zookeeper

apache-zookeeper-3.7.2

二、配置ACL(任意一个zookeeper节点,进入zookeeper安装目录的bin下)

[root@localhost bin]# ./zkCli.sh -server 192.168.6.141:2181

[zk: 192.168.6.141:2181(CONNECTED) 5] addauth digest kafka:123456     #增加一个认证用户(密码为明文,生产环境中建议使用复杂的密码)

[zk: 192.168.6.141:2181(CONNECTED) 6] setAcl / auth:kafka:cdrwa          #为路径设置ACL,这里是为根目录设置

当配置后,其他zookeeper节点登录访问后提示没有足够的许可,包括当前节点,退出重新登录也一样提示没有足够的许可

[root@localhost bin]# ./zkCli.sh -server 192.168.6.140:2181

[zk: 192.168.6.140:2181(CONNECTED) 1] ls /

Insufficient permission : /

[zk: 192.168.6.140:2181(CONNECTED) 2]

此时,需要登录可以访问的账号密码才行

[zk: 192.168.6.140:2181(CONNECTED) 2] addauth digest kafka:123456

[zk: 192.168.6.140:2181(CONNECTED) 3] ls /

[admin, brokers, cluster, config, consumers, controller_epoch, feature, isr_change_notification, latest_producer_id_block, log_dir_event_notification, zookeeper]

[zk: 192.168.6.140:2181(CONNECTED) 4] 

三、启动kafka,提示报错

zookeeper设置ACL后

原因是kafka没有的配置文件没有配置zookeeper的ACL账号密码,且本机也没有访问权限,因此可在zookeeper的ACL中为kafka的主机IP设置为白名单:

[zk: 192.168.6.141:2181(CONNECTED) 13] setAcl / ip:192.168.6.136:cdrwa,ip:192.168.6.140:cdrwa,ip:192.168.6.141:cdrwa,ip:127.0.0.1:cdrwa,auth:kafka:cdrwa

[zk: 192.168.6.141:2181(CONNECTED) 14] getAcl /

ip,192.168.6.136

: cdrwa

ip,192.168.6.140

: cdrwa

ip,192.168.6.141

: cdrwa

ip,127.0.0.1

: cdrwa

digest,kafka:AHviFxZyZ/iL8MsBeboZ4XZzv/M=

: cdrwa

[zk: 192.168.6.141:2181(CONNECTED) 15] 

注意** 1、在设置IP白名单时,将本机ip 127.0.0.1也加上,让本机也可以访问及修改,否则到时本机服务器都无法进行查看及修改,到时会很麻烦

     2、在第一次配置好ACL后(账号或IP),又想继续添加范围权限,则在设置的时候,以前的ip或账号也都是写在命令里,不然以前添加的都会被覆盖掉

配置完后,启动kafka

zookeeper设置ACL后

至此,3台kafka启动成功


附:如果要恢复所有ip皆可访问,则执行

setAcl / world:anyone:cdrwa


以上是关于zookeeper设置ACL后 kafka如何连接?的主要内容,如果未能解决你的问题,请参考以下文章

kafka ACL常用权限操作

zookeeper ACL

对zookeeper设置ACL属性

kafkaKafka 集群配置SASL+ACL

zookeeperzookeeper的ACL权限控制

如何使用python 连接kafka 并获取数据