一身转战三千里,一剑曾百万师。这篇文章主要讲述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 |
[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
推荐阅读
- CentOS7使用iptables搭建网关服务器
- 浅谈容器逃逸
- Prometheus监控步骤
- 王道Java网络编程实战详解三TCP完结
- Linux系统下 MYSQL数据库中的数据库文件在本机内迁移 (需暂停服务的方式)
- 客快物流大数据项目(六十八)(工作流调度)
- Linux 环境下 javac 编译错误( 编码UTF8的不可映射字符(编码UTF8/GBK的不可映射字符))
- coursera 视频总是缓冲或者无法观看的解决办法(Windows和Linux 系统环境)
- 移动应用的测试策略与测试架构