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,提示报错
原因是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
至此,3台kafka启动成功
附:如果要恢复所有ip皆可访问,则执行
setAcl / world:anyone:cdrwa
以上是关于zookeeper设置ACL后 kafka如何连接?的主要内容,如果未能解决你的问题,请参考以下文章