kafka 0.10.1.1的SASL入门配置教程

2024-01-07 07:38

本文主要是介绍kafka 0.10.1.1的SASL入门配置教程,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

刚测通的kafka的producer和consumer,下来准备搞一下kafka的认证,SSL比较复杂,而且影响性能,内部暂时不考虑,因此把目标定在了SASL上。本来以为按照网上的教程简单配置一下很快就能搞定的,结果没有一个能用的,走了好多弯路,花了一天多才搞定,因此记录一下,此次的配置针对的是kafka0.10.1.1的版本

配置分为3部分,zookeeper的配置、broker的配置和producer以及consumer的配置。

第一部分 zookeeper的配置

进入kafka目录执行 vi kafka_zoo_jaas.conf

Server {org.apache.kafka.common.security.plain.PlainLoginModule requiredusername="admin"password="admin-secret"user_admin="admin-secret";
};

vi bin/zookeeper-server-start.sh在文档的倒数第二行加入以下内容:

export KAFKA_OPTS=" -Djava.security.auth.login.config=/usr/local/kafka1011/kafka_zoo_jaas.conf"

然后执行vi config/zookeeper.properties添加zookeeper.properties中的配置如下:

authProvider.1=org.apache.zookeeper.server.auth.SASLAuthenticationProvider
requireClientAuthScheme=sasl
jaasLoginRenew=3600000

执行./bin/zookeeper-server-start.sh config/zookeeper.properties 启动zookeeper成功。

在zookeeper这里卡了很久,主要是一开始没有意识到是zookeeper的问题。

第二部分 broker的配置

vi kafka_server_jaas.conf

KafkaServer {org.apache.kafka.common.security.plain.PlainLoginModule requiredusername="admin"password="admin-secret"user_admin="admin-secret"user_producer="prod-sec"user_consumer="cons-sec";
};
Client {
org.apache.kafka.common.security.plain.PlainLoginModule requiredusername="admin"password="admin-secret";
};

不知道是不是跟kafka的版本有关系,我看别人这里配置的不是Client。

cp bin/kafka-server-start.sh bin/secured-kafka-server-start.sh
vi bin/secured-kafka-server-start.sh

在最后一行改为以下内容

exec $base_dir/kafka-run-class.sh $EXTRA_ARGS -Djava.security.auth.login.config=/usr/local/kafka1011/kafka_server_jaas.conf kafka.Kafka "$@"

然后vi $KAFKA_HOME/server.properties或者vi config/server.properties加入以下内容:

security.inter.broker.protocol=SASL_PLAINTEXT
sasl.enabled.mechanisms=PLAIN
sasl.mechanism.inter.broker.protocol=PLAIN
authorizer.class.name=kafka.security.auth.SimpleAclAuthorizer
allow.everyone.if.no.acl.found=true
super.users=User:admin
执行./bin/secured-kafka-server-start.sh ./config/server.properties观察日志,成功。

第三部分 producer以及consumer的配置

vi writer_jaas.conf

KafkaClient {
org.apache.kafka.common.security.plain.PlainLoginModule required
username="admin"
password="admin-secret";
};

vi producer.properties 和consumer.properties

security.protocol=SASL_PLAINTEXT
sasl.mechanism=PLAIN

cp bin/kafka-console-consumer.sh bin/reader-kafka-console-consumer.sh
vi bin/reader-kafka-console-consumer.sh

cp bin/kafka-console-producer.sh bin/writer-kafka-console-producer.sh
vi bin/writer-kafka-console-producer.sh

修改writer-kafka-console-producer.sh与reader-kafka-console-consumer.sh文件

最后一行改为

exec $(dirname $0)/kafka-run-class.sh -Djava.security.auth.login.config=/usr/local/kafka1011/writer_jaas.conf kafka.tools.ConsoleProducer "$@"

再用kafka-acls.sh对用户进行授权

./bin/kafka-acls.sh --authorizer-properties zookeeper.connect=10.1.8.16:2181,10.1.8.15:2181,10.1.8.14:2181 --add --allow-principal User:admin --operation Read --operation Write --topic replica


然后启动writer-kafka-console-producer.sh

./bin/writer-kafka-console-producer.sh --broker-list 10.1.8.16:9092,10.1.8.15:9092,10.1.8.14:9092 --topic replica --producer.config config/producer.properties


./bin/reader-kafka-console-consumer.sh --bootstrap-server 10.1.8.16:9092,10.1.8.15:9092,10.1.8.14:9092 --topic replica --from-beginning --consumer.config config/consumer.properties 


下面是一些错误的汇总


zookeeper配置不正确,zookeeper.properties中缺少了那三行配置


kafka_server_jaas.conf与对应的kafka_zoo_jaas.conf错误


kafka_server_jaas.conf中的应为Client而不是KafkaClient


这个错误是第一次配置时出来的,想了一下第一次的配置与最终版本的配置差异较大,出了这种问题的话建议重来吧


这个是kafka_zoo_jaas.conf中配置的问题,网上搜的资料是配置为zookeeper,但是实际上应该为Server。

压力测试命令

./bin/kafka-producer-perf-test.sh --topic test-pati3-rep2 --throughput 500000 --num-records 1500000 --record-size 1000 --producer.config config/producer.properties --producer-props bootstrap.servers=10.1.8.16:9092,10.1.8.15:9092,10.1.8.14:9092 acks=1

下周准备尝试下多用户的配置,到时候继续更新。

这篇关于kafka 0.10.1.1的SASL入门配置教程的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/579191

相关文章

Java Lettuce 客户端入门到生产的实现步骤

《JavaLettuce客户端入门到生产的实现步骤》本文主要介绍了JavaLettuce客户端入门到生产的实现步骤,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要... 目录1 安装依赖MavenGradle2 最小化连接示例3 核心特性速览4 生产环境配置建议5 常见问题

win10安装及配置Gradle全过程

《win10安装及配置Gradle全过程》本文详细介绍了Gradle的下载、安装、环境变量配置以及如何修改本地仓库位置,通过这些步骤,用户可以成功安装并配置Gradle,以便进行项目构建... 目录一、Gradle下载1.1、Gradle下载地址1.2、Gradle下载步骤二、Gradle安装步骤2.1、安

MySQL数据库双机热备的配置方法详解

《MySQL数据库双机热备的配置方法详解》在企业级应用中,数据库的高可用性和数据的安全性是至关重要的,MySQL作为最流行的开源关系型数据库管理系统之一,提供了多种方式来实现高可用性,其中双机热备(M... 目录1. 环境准备1.1 安装mysql1.2 配置MySQL1.2.1 主服务器配置1.2.2 从

Linux云服务器手动配置DNS的方法步骤

《Linux云服务器手动配置DNS的方法步骤》在Linux云服务器上手动配置DNS(域名系统)是确保服务器能够正常解析域名的重要步骤,以下是详细的配置方法,包括系统文件的修改和常见问题的解决方案,需要... 目录1. 为什么需要手动配置 DNS?2. 手动配置 DNS 的方法方法 1:修改 /etc/res

mysql8.0.43使用InnoDB Cluster配置主从复制

《mysql8.0.43使用InnoDBCluster配置主从复制》本文主要介绍了mysql8.0.43使用InnoDBCluster配置主从复制,文中通过示例代码介绍的非常详细,对大家的学习或者... 目录1、配置Hosts解析(所有服务器都要执行)2、安装mysql shell(所有服务器都要执行)3、

全网最全Tomcat完全卸载重装教程小结

《全网最全Tomcat完全卸载重装教程小结》windows系统卸载Tomcat重新通过ZIP方式安装Tomcat,优点是灵活可控,适合开发者自定义配置,手动配置环境变量后,可通过命令行快速启动和管理... 目录一、完全卸载Tomcat1. 停止Tomcat服务2. 通过控制面板卸载3. 手动删除残留文件4.

java程序远程debug原理与配置全过程

《java程序远程debug原理与配置全过程》文章介绍了Java远程调试的JPDA体系,包含JVMTI监控JVM、JDWP传输调试命令、JDI提供调试接口,通过-Xdebug、-Xrunjdwp参数配... 目录背景组成模块间联系IBM对三个模块的详细介绍编程使用总结背景日常工作中,每个程序员都会遇到bu

Python的pandas库基础知识超详细教程

《Python的pandas库基础知识超详细教程》Pandas是Python数据处理核心库,提供Series和DataFrame结构,支持CSV/Excel/SQL等数据源导入及清洗、合并、统计等功能... 目录一、配置环境二、序列和数据表2.1 初始化2.2  获取数值2.3 获取索引2.4 索引取内容2

python依赖管理工具UV的安装和使用教程

《python依赖管理工具UV的安装和使用教程》UV是一个用Rust编写的Python包安装和依赖管理工具,比传统工具(如pip)有着更快、更高效的体验,:本文主要介绍python依赖管理工具UV... 目录前言一、命令安装uv二、手动编译安装2.1在archlinux安装uv的依赖工具2.2从github

C#实现SHP文件读取与地图显示的完整教程

《C#实现SHP文件读取与地图显示的完整教程》在地理信息系统(GIS)开发中,SHP文件是一种常见的矢量数据格式,本文将详细介绍如何使用C#读取SHP文件并实现地图显示功能,包括坐标转换、图形渲染、平... 目录概述功能特点核心代码解析1. 文件读取与初始化2. 坐标转换3. 图形绘制4. 地图交互功能缩放