kafka sasl java_Kafka 集群配置SASL+ACL

article/2025/10/20 17:38:30

** Kafka 集群配置SASL+ACL

测试环境:**

系统: CentOS 6.5 x86_64

JDK : java version 1.8.0_121

kafka: kafka_2.11-1.0.0.tgz

zookeeper: 3.4.5

ip: 192.168.49.161 (我们这里在一台机上部署整套环境)

kafka 名词解析:

Broker: Kafka 集群包含一个或多个服务器,这种服务器被称为broker

Topic: 每条发布到Kafka 集群的消息都有一个类别,这个类别被称为Topic。(物理上不同Topic 的消息

分开存储,逻辑上一个Topic 的消息虽然保存于一个或多个broker 上但用户只需指定消息的Topic 即可生产或

消费数据而不必关心数据存于何处)

Partition: Parition 是物理上的概念,每个Topic 包含一个或多个Partition

Producer: 负责发布消息到Kafka broker 即生产者

Consumer: 消息消费者,向Kafka broker 读取消息的客户端即消费者

Consumer Group:每个Consumer 属于一个特定的Consumer Group(可为每个Consumer 指定group

name,若不指定group name 则属于默认的group)

Kafka 拓扑结构(借用别人的图)

210d6a797f1da7c785fddda40983466a.png

一个典型的Kafka 集群中包含若干Producer(可以是web 前端产生的Page View,或者是服务器日志,系统 CPU、Memory 等),若干broker(Kafka 支持水平扩展,一般broker 数量越多,集群吞吐率越高),若干Consumer Group,以及一个Zookeeper 集群。Kafka 通过Zookeeper 管理集群配置,选举leader,以及在Consumer Group 发生变化时进行rebalance。Producer 使用push 模式将消息发布到broker,Consumer 使用pull 模式从broker 订阅并消费消息

kafka 集群部署

一 Zookeeper 集群部署(这里部署的伪集群)

zookeeper 部署比较简单,解压修改配置文件后即可使用, 默认的配置文件为zoo_sample.cfg 这里我们直接新建一个zoo.cfg 的文件内容如下:

各参数意义这里不作详细解释,想了解可以自行参考官网

tickTime=2000

initLimit=5

syncLimit=2

dataDir=/opt/zook/zookeeper1/data //指定数据路径

dataLogDir=/opt/zook/zookeeper1/logs //指定日志路径

clientPort=2181 //监听端口

server.1=127.0.0.1:7771:7772

server.2=127.0.0.1:7771:7772

server.3=127.0.0.1:7771:7772

2. 在zookeeper/data 下创建一个名为myid 的文件,并在文件内输入数字1

3. 集群部署则将上述配置的单节点再复制两份,并将配置文件中

```

dataDir , dataLogDir 两个参数根据实际路径修改

clientPort 分别配为2182,2183

myid 分别配置为2 3

```

4. 启动集群

二 Kafka 集群部署

由于集群最终是对外部网络开放的,出于安全考虑本文采用的是SASL+ACL 控制和授权

1. broker 配置

1.1. 将配置server.properties 复制2 份并分别重命名成server-1.properties server-2.properties server-3.properties 修改server.properties 配置:(请根据实际环境填写)

broker.id = 1 //另外两个节点分别为2 3

host.name=192.168.49.161

log.dirs=/tmp/kafka-logs-1 //另外两个节点分别为kafka-logs-2 kafka-logs-3 可以不

放在/tmp 下,如果放在其他地方必须注意目录权限

zookeeper.connect=192.168.49.161:2181,192.168.49.161:2182,192.168.49.161:2183

port=9092 //另外两个节点分别为9093 9094 也可以自定义

listeners=SASL_PLAINTEXT://192.168.49.161:9092 //另外两个节点分别为9093 9094

1.2 要配置SASL 和ACL,需要在broker 端进行两个方面的设置。

首先是创建包含所有认证用户信息的JAAS 文件,本例中我们有admin qjld 两个用户,其中admin 为管理员用于broker 集群间的认证, qjld 为远程应用的认证用户, 新增认证信息文件

kafka_server_jaas.conf 内容为:

KafkaServer {

org.apache.kafka.common.security.plain.PlainLoginModule required

username="admin"

password="admin-mgr998778123"

user_admin="admin-mgr998778123"

user_qjld="123456";

};

本例中路径为: /opt/kafka_2.11-1.0.0/config/kafka_server_jaas.conf , 我们需要将配置文件中的内容传递给JVM,因此需要修改/opt/kafka_2.11-1.0.0/bin/kafka-server-start.sh 脚本文件如下:

在exec $base_dir/kafka-run-class.sh $EXTRA_ARGS kafka.Kafka "$@" 之前一行添加export KAFKA_OPTS="-Djava.security.auth.login.config=/opt/kafka_2.11-1.0.0/config/kafka_server_jaas.conf" 然后保存退出。

其次我们要在所有broker 配置文件(server-x.properties)中增加:

#ACL 入口类

authorizer.class.name=kafka.security.auth.SimpleAclAuthorizer

#SASL_PLAINTEXT

sasl.enabled.mechanisms=PLAIN

security.inter.broker.protocol=SASL_PLAINTEXT

sasl.mechanism.inter.broker.protocol=PLAIN

allow.everyone.if.no.acl.found=true

#设置admin 为超级用户

super.users=User:admin

现在我们可以启动broker 测试了

bin/kafka-server-start.sh config/server-1.properties &

bin/kafka-server-start.sh config/server-2.properties &

bin/kafka-server-start.sh config/server-3.properties &

启动成功,此时broker 可以接收已认证的客户端连接了,下面我们进行客户端配置

//创建一个topic 名为test

bin/kafka-topics.sh--create --zookeeper 192.168.49.161:2181,192.168.49.161:2182, 192.168.49.161:2183 --replication-factor 1 --partitions 1 --topic test

//查看topic 是否创建成功

bin/kafka-topics.sh --list --zookeeper 192.168.49.161:2181

2. Client 配置 (用于使用kafka命令连接)

2.1 新增一个配置文件如:/opt/kafka_2.11-1.0.0/config/kafka_client_jaas.conf,内容为:

KafkaClient {

org.apache.kafka.common.security.plain.PlainLoginModule required

username="qjld"

password="123456";

};

同理我们也要将配置文件内容传递给JVM, 因此需要修改

/opt/kafka_2.11-1.0.0/bin/kafka-console-producer.sh 脚本文件如下:在exec $base_dir/kafka-run-class.sh

$EXTRA_ARGS kafka.Kafka "$@" 之前一行添加export KAFKA_OPTS="-Djava.security.auth.login.config=/opt/kafka_2.11-1.0.0/config/kafka_client_jaas.conf"

同样的方法修改kafka-console-consumer.sh

2.2 需要在config/consumer.properties 和config/producer.properties 配置文件中追加:

security.protocol=SASL_PLAINTEXT

sasl.mechanism=PLAIN

这两行配置, 完成后再试运行:

bin/kafka-console-producer.sh --broker-list 192.168.49.161:9092 --topic test \

--producer.config config/producer.properties

bin/kafka-console-consumer.sh --bootstrap-server 192.168.49.161:9092 --topic test

--from-beginning --consumer.config config/consumer.properties

接下来测试消息的写入和读取, 开启两个终端分别输入下列

bin/kafka-console-producer.sh --broker-list 192.168.49.161:9092 --topic test //消息写入

bin/kafka-console-consumer.sh --bootstrap-server 192.168.49.161:9092 --topic test --from-beginning 消息读取

如果报错信息如下:

WARN Bootstrap broker 192.168.49.161:9092 disconnected (org.apache.kafka.clients.NetworkClient)

则说明配置的security 已生效, 要想普通用户能读写消息,需要配置ACL

2.3 配置ACL

bin/kafka-acls.sh --authorizer kafka.security.auth.SimpleAclAuthorizer --authorizer-properties

zookeeper.connect=192.168.49.161:2181,192.168.49.161:2182,192.168.49.161:2183 --add

--allow-principal User:qjld --operation All --topic test

```这是为qjld 这个用户配置所有权限,如果有更细的要求则可参考网上的,如:Read Write 等只需要将--operation all 改为--operation Read 多种则在其后面加一个-- operation write 即可

**三 测试**

这里我选用python2.7 编写的脚本进行测试

先安装pip27 install kafka-python

![](https://s4.51cto.com/images/blog/201801/15/5b755d258b838b83d79753ad5aad3d44.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=)


http://chatgpt.dhexx.cn/article/yp0GJH2I.shtml

相关文章

kafka sasl java_Kafka SASL 安全认证

java client 中添加 SASL 设置信息: Java client consumer properties配置.png 注意 sasl.jaas.config 配置中的分号必不可少。 package kafka; import java.time.Duration; import java.util.Arrays; import java.util.Properties; import org.apache.kafka.clients.consumer…

SASL讲解,以及在Spark中的应用

是什么? SASL全称Simple Authentication and Security Layer,是一种用来扩充C/S模式验证能力的机制。在Postfix可以利用SASL来判断用户是否有权使用转发服务,或是辨认谁在使用你的服务器。      SASL提供了一个通用的方法为基于连接的协议增加验证支持,而XMPP使用了一…

关于SASL的介绍文档

http://docs.sun.com/app/docs/doc/819-7056/6n91eac4q?lzh&aview 简单验证安全层 (Simple Authentication Security Layer, SASL) 介绍 SASL 为应用程序和共享库的开发者提供了用于验证、数据完整性检查和加密的机制。开发者可通过 SASL 对通用 API 进行编码。此方法避免…

文献管理与信息分析期末考试答案

可以在考试界面按ctrlf,对照着下图自己敲关键字搜索相应题目,感觉这样更方便点,也不会漏下题目。(仅供参考)

使用NoteExpress做文献管理

NoteExpress 是北京爱琴海软件公司开发的一款专业级别的文献检索与管理系统,具备文献信息检索与下载功能,可以用来管理参考文献的题录,以附件方式管理参考文献全文或者任何格式的文件、文档。 除此以为还有EndNote等其他文献管理软件&#x…

Zotero——一款文献管理工具

1.简介:Zotero是一款开源的文献管理工具,可以提供文献管理、浏览等众多服务,可以极大地为我们的科研和论文写作提供便利。 2.下载与安装 官方网站:Zotero | Your personal research assistant 我们可以直接在其官网上下载该软件…

使用 bibtex 进行参考文献管理

原  文:Bibliography management with bibtex 译  者:Xovee 翻译时间:2020年11月9日 使用 bibtex 进行参考文献管理 LaTeX 中直接支持参考文献的管理。本篇文章介绍如何使用thebibliography环境和BibTeX系统来管理参考文献。 注意&…

参考文献管理

一年以后latex和word都积累了一些经验再看这篇博客,发现有些小错误和语焉不详处,小修小改了一波。 处理参考文献真的是一件说复杂也很复杂,说简单也很简单的事,关键看能不能掌握门(tao)路,这里只…

Zotero文献管理软件入门使用方法:软件下载、文献导入、引文插入

本文介绍文献管理软件Zotero的基础使用方法,包括软件下载与安装、文献与PDF导入、在Word中插入参考文献等的方法。 在EndNote文献输出引用格式自定义修改与编辑界面解读(https://blog.csdn.net/zhebushibiaoshifu/article/details/115221112)…

学习笔记:MOOC 文献管理与信息分析

学习笔记:MOOC 文献管理与信息分析 文章目录 学习笔记:MOOC 文献管理与信息分析前言本科硕士博士的差异科研的特性读研的意义学习策略 学习与搜索两种类型的知识什么是需求?搜商基本检索及逻辑关系(AND OR NOT高级搜索命令检索图片…

今天【分享】一个好用的文献管理软件——Zetero

文章目录 一、下载与安装二、基础设置 一、下载与安装 首先去Zetero的官网下载即可,该软件不大,直接在百度搜索下载即可,这里不再放其网址。 下载之后,直接解压 点击安装即可。 下载完进去,是这种页面显示&#xff…

文献管理软件Zotero的安装和使用

文章目录 前言一、Zotero简介二、安装与使用1、账号注册2、软件安装3、插件安装4、关联账户设置5、坚果云扩充(WebDAV)6、保存路径设置7、与Connected Papers联动8、参考文献的引用 前言 随着阅读文献数量的增加,感觉一个好用的文献管理工具…

文献管理与信息分析

文献管理与信息分析_罗昭锋 一、搜索引擎使用1.谷歌百度的高级搜索功能2.命令搜索3.图片搜索4.语音搜索5.本地搜索工具Everything 二、RSS-同步世界最新资讯1.RSS的意义及使用2.订阅科技文献 三、为知笔记和思维导图1.为知笔记2.思维导图3.快速学习某个主题知识的步骤 四、十大…

Zotero参考文献管理

Zotero 参考文献管理 简介 Zotero 作为一个开源免费的优秀文献管理工具,在写论文中时进行参考文献插入也是非常方便的,本文介绍如何利用 Zotero 的 Word 插件高效进行参考文献管理。 准备工作 确保自己的电脑上安装了 Word、Zotero 以及 Zotero Word…

Endnote插入文献与文献管理

介绍如何使用endnote进行文献管理 一、导入Endnote 以这篇文章为例: M. Nasr, R. Shokri and A. Houmansadr, “Comprehensive Privacy Analysis of Deep Learning: Passive and Active White-box Inference Attacks against Centralized and Federated Learning,…

文献管理软件-Mendeley

文献管理软件的便利之处在于: 1.可以直接联网到不同的数据库进行检索,免去登录不同数据库的劳累之苦,提高效率; 2.可以非常方便地管理文献信息,包括文摘、全文、笔记、以及其它的附件材料等等;检索功能方…

基于JavaWeb的文献管理系统设计与实现

目 录 摘 要 I Abstract II 第1章 绪 论 1 1.1 课题研究背景和意义 1 1.2 国内外研究现状 1 1.2.1 国内研究现状 1 1.2.2 国外研究现状 2 1.3 论文研究内容 3 1.4 本文结构 3 第2章 相关技术 4 2.1 JSP技术简介 4 2.2 SQL Server数据库技术简介 5 2.3 JDBC 技术简介 6 2.4 B…

高校教师科研文献管理系统

摘 要 21世纪的今天,随着社会的不断发展与进步,人们对于信息科学化的认识,已由低层次向高层次发展,由原来的感性认识向理性认识提高,管理工作的重要性已逐渐被人们所认识,科学化的管理,使信息存…

【软件相关】文献管理工具——Zotero

文章目录 0 前期教程1 前言2 一些说明3 下载安装4 功能一:插入文献引用格式5 功能二:从网页下载文献pdf和题录6 功能三:数据多平台同步7 功能四:通过DOI添加条目及添加订阅8 安装xpi插件9 功能五:智能识别中英文文献10…

文献管理软件--zotero基本使用

文章目录 一、下载与安装1、下载插件(以火狐浏览器为例)2、注册账户3、下载桌面版 二、文献导入1、新建文件2、导入文献3、本地导入4、支持批量下载 三、文献管理1、添加标签2、添加子目录3、添加笔记 四、添加插件五、数据管理与同步六、文献引用1、引用…