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信息等。。。

kafkatool

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

Last updated