2020-03-30-kafka的安装与开启ACL权限控制
Kafka是一个分布式、分区的、多副本的、多订阅者,基于zookeeper协调的分布式日志系统(也可以当做MQ系统),常见可以用于web/nginx日志、访问日志,消息服务等。
主要应用场景是:日志收集系统和消息系统。
本篇记录测试环境的kafka安装步骤并开启ACL认证。
环境与文件准备
kafka 版本信息: v1.1.1(版本由于环境需要不是采用最新版)
环境信息: Centos7.5 192.168.4.139(内网地址)
安装包: jdk-8u221-linux-x64.rpm kafka_2.11-1.1.1.tgz
安装步骤
Kafka 使用Zookeeper 来保存相关配置信息,Kafka及Zookeeper 依赖Java 运行环境。
Kafka 安装包里带了zookeeper。
安装jdk
[root@localhost ~]# rpm -ivh jdk-8u221-linux-x64.rpm
[root@localhost ~]# java -version
java version "1.8.0_221"
Java(TM) SE Runtime Environment (build 1.8.0_221-b11)
Java HotSpot(TM) 64-Bit Server VM (build 25.221-b11, mixed mode)安装kafka
kafka 开启 ACL
ACL 用于控制对kafka的读写操作权限。
Broker 端
创建 JAAS 文件,注意结尾两个分号,保存为 kafka_server_jaas.conf
要配置SASL和ACL,我们需要在broker端进行两个方面的设置。首先是创建包含所有认证用户信息的JAAS文件。本例中,我们假设有3个用户:admin, reader和writer,其中admin是管理员,reader用户读取Kafka集群中topic数据,而writer用户则负责向Kafka集群写入消息。我们假设这3个用户的密码分别与用户名相同(在实际场景中,管理员需要单独把密码发给各自的用户),因此编写JAAS文件就是上面的内容
由于 kafka-server-start.sh 只接收 server.properties 的位置,故需要修改启动脚本,cp 一份修改最后一行
修改 broker 启动所需的 server.properties 文件 并且要把之前的 listeners 和 advertised.listeners 那两行参数注释掉,或者把PLAINTEXT改成SASL_PLAINTEXT
重启broker
console-producer 脚本
创建 kafka-prod-jaas.conf 认证文件
cp 一份脚本,修改最后一行
使用 ACL 配置 producer 写入授权
使用修改后的 console-producer 脚本发送消息
如果失败,请将localhost更改成brokerIP
console-cosnumer 脚本
创建 kafka-cons-jaas.conf 认证文件
cp 一份脚本,修改最后一行
使用 ACL 配置 consumer 读取授权
使用修改后的 console-consumer 脚本接收消息
仍然会报错
消费者组制授权
这样就可以接受消息了
使用 kafkatool 图形工具连接测试
社区版的 Kafka 没有图形化的管理工具,很多实际生产中的需求满足不了,比如创建删除 topic、查看消息生产速率,查看消费 lag 等等。 kafkatool可以方便的安装在桌面系统 http://www.kafkatool.com/download.html
参数配置: Properties 菜单: Cluster name: 自己定义 Kafka Cluster Version: 1.1 Zookeeper Host: 192.168.4.139 Zookeeper Port: 2181 chroot path: /
Security 菜单: Type: SASL Plaintext
Advanced 菜单: Bootstrap server: 192.168.4.139:9092 SASL Mechanism: PLAIN Offset Topoc: 勾选 Usebackground ...
JAAS Config: Value:
然后就可以连接了,可以看到topic信息等。。。

也可以使用yahoo的kafka-manager 来连接,开源的,github有
Last updated