zookeeper设置ACL后 kafka如何连接()

一身转战三千里,一剑曾百万师。这篇文章主要讲述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,提示报错

原因是kafka没有的配置文件没有配置zookeeper的ACL账号密码,且本机也没有访问权限,因此可在zookeeper的ACL中为kafka的主机IP设置为白名单:
【zookeeper设置ACL后 kafka如何连接()】[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

至此,3台kafka启动成功
附:如果要恢复所有ip皆可访问,则执行
setAcl / world:anyone:cdrwa



    推荐阅读