之前说过python confluent kafka客户端做kerberos认证的过程,如果使用kafka python客户端的话同样也可以进行kerberos的认证,具体的认证机制这里不再描述,主要叙述配置认证的过程

需要的模块有下面这些:

kafka-python:https://pypi.org/project/kafka-python/

gssapi:https://pypi.org/project/gssapi/

decorator:https://pypi.org/project/decorator/

six:https://pypi.org/project/six/

kerberos环境

kafka python开启GSSAPI需要模块gssapi的支持,而gssapi模块需要依赖于decorator模块和six模块,但是安装时不会校验和提示,如果不安装的话kafka python运行是会提示找不到gssapi lib,真正的原因还是因为decorator或者six没有安装,这里要注意.

首先安装decorator和six这两个模块.

然后安装gssapi模块,安装的时候要确保decorator和six模块正常安装并且kerberos需要的开发包正常安装,否则gssapi会编译失败,安装kerberos库可以使用yum命令如下:

yum install krb5-server krb5-libs krb5-auth-dialog

然后编译并安装gssapi,这里是gssapi-1.6.1.tar.gz,安装如下:

tar -xvzf gssapi-1.6..tar.gz
cd gssapi-1.6.
python3 setup.py build
python3 setup.py install
cd ..

完成之后要退出源码目录,因为导入模块可能会出现冲突,然后进入python解释器,测试一下模块的安装情况:

from gssapi.raw.misc import GSSError

如果导入模块没问题,则说明gssapi安装成功.

最后直接安装kafka-python模块即可.

然后可以开始测试python脚本认证是否正常,注意执行之前要先kinit保证klist有对应的用户,然后再使用下面的代码调试:

#!/usr/bin/env python3
# coding=utf-8
import time from kafka import KafkaProducer
from kafka import KafkaConsumer def kafka_python_producer_main():
producer = KafkaProducer(bootstrap_servers='192.168.0.3:9092,192.168.0.4:9092,192.168.0.5:9092',
security_protocol='SASL_PLAINTEXT',
sasl_mechanism='GSSAPI',
sasl_kerberos_service_name='kafka',
sasl_kerberos_domain_name='hadoop.hadoop.com',
sasl_plain_username='kafkaclient')
producer.send('testTopic', 'kafka python test'.encode('utf-8'))
producer.flush()
producer.close()
print('done') def kafka_python_consumer_main():
consumer = KafkaConsumer('testTopic',
bootstrap_servers='192.168.0.3:9092,192.168.0.4:9092,192.168.0.5:9092',
group_id='kafka-test-20191014',
auto_offset_reset='earliest',
security_protocol='SASL_PLAINTEXT',
sasl_mechanism='GSSAPI',
sasl_kerberos_service_name='kafka',
sasl_kerberos_domain_name='hadoop.hadoop.com',
sasl_plain_username='kafkaclient')
for msg in consumer:
print(msg.value)
print(msg.partition) if __name__ == '__main__':
kafka_python_producer_main()
time.sleep(1)
kafka_python_consumer_main()

然后执行脚本测试,如果生产和消费消息都正常,说明kafka kerberos认证成功.

使用kafka-python客户端进行kafka kerberos认证的更多相关文章

  1. kafka可视化客户端工具Kafka Tool

    1.下载 下载地址:http://www.kafkatool.com/download.html 2.安装 根据不同的系统下载对应的版本,我这里kafka版本是1.1.0,下载kafka tool 2 ...

  2. Cloudera Hadoop启用Kerberos认证

    一.Kerberos 二.安装 node01服务器安装Kerberos的核心服务master KDC,node02和node03安装Kerberos client cm也安装在node01上了 1.m ...

  3. python confluent kafka客户端配置kerberos认证

    kafka的认证方式一般有如下3种: 1. SASL/GSSAPI  从版本0.9.0.0开始支持 2. SASL/PLAIN   从版本0.10.0.0开始支持 3. SASL/SCRAM-SHA- ...

  4. Java Api Consumer 连接启用Kerberos认证的Kafka

    java程序连接到一个需要Kerberos认证的kafka集群上,消费生产者生产的信息,kafka版本是2.10-0.10.0.1: Java程序以maven构建,(怎么构建maven工程,可去问下度 ...

  5. 我们使用 Kafka 生产者在发消息的时候我们关注什么(Python 客户端 1.01 broker)

    之前使用 Kafka 的客户端消费者比较多一点,而且也是无脑订阅使用也没有深入了解过具体的参数.总的来说使用不够细节. 这次公司项目活动期间暴露非常多的问题,于是有了这篇文章. 首先我们来拆解一下 K ...

  6. Kafka监控系统Kafka Eagle:支持kerberos认证

    在线文档:https://ke.smartloli.org/ 作者博客:https://www.cnblogs.com/smartloli/p/9371904.html 源码地址:https://gi ...

  7. kafka消费者客户端(0.9.0.1API)

    转自:http://orchome.com/203 kafka客户端从kafka集群消费消息(记录).它会透明地处理kafka集群中服务器的故障.它获取集群内数据的分区,也和服务器进行交互,允许消费者 ...

  8. kafka C客户端librdkafka producer源码分析

    from:http://www.cnblogs.com/xhcqwl/p/3905412.html kafka C客户端librdkafka producer源码分析 简介 kafka网站上提供了C语 ...

  9. kafka Windows客户端Linux服务器---转

    原文:http://blog.csdn.net/jingshuigg/article/details/25001979 一.对于服务器端的搭建可以参考上一篇文章:kafka单机版环境搭建与测试 服务器 ...

随机推荐

  1. ES10(2019)有哪些更新和新特性?

    ES10新特性(2019) 行分隔符(U + 2028)和段分隔符(U + 2029)符号现在允许在字符串文字中,与JSON匹配 更加友好的 JSON.stringify 新增了Array的flat( ...

  2. React 之 Redux 的使用

    Redux可以简单概况为:将需要修改的state都存入到store里,发起一个action用来描述发生了什么,用reducers描述action如何改变state tree .创建store的时候需要 ...

  3. linux基础命令学习

    一 su命令 1. [yunwei@elymedia ~]$ yunwei   表示当前用户名 @elymedia   表示主机名 - 表示当前路径,涉及到当前用户的主目录(家目录) $  表示普通用 ...

  4. RxJS——Operators

    RxJS 的操作符(operators)是最有用的,尽管 Observable 是最基本的.操作符最基本的部分(pieces)就是以申明的方式允许复杂的异步代码组合简化. 什么是操作符? 操作符是函数 ...

  5. 【MySql】Update批量更新与批量更新多条记录的不同值实现方法

    mysql更新语句很简单,更新一条数据的某个字段,一般这样写: UPDATE mytable SET myfield = 'value' WHERE other_field = 'other_valu ...

  6. Vim 中进行文件目录操作

    Vim 中进行文件目录操作 当前文件名 我们知道Vim有48个寄存器,其中%只读寄存器中保存着当前文件路径. 例如在/home/harttle/下打开src/main.cpp,我们打印%的值: :ec ...

  7. filter - date 日期插件

    为什么要用date插件: 我们希望日志展示的时间就是日志生成的时间,一般日志中都会附加时间,这样方便根据时间查找问题.但在logstash中,默认使用@timestamp时间值来表示日志的时间,@ti ...

  8. httprunner学习5-参数化与数据驱动

    前言 参数化是自动化测试离不开的话题,httprunner里面只要把上一篇声明变量学会了,参数化也就自然会了. 不同的地方在于声明变量时对应值只有一个,参数化是多个值,存放在list里面. httpr ...

  9. HtmlAgilityPack - 详细简介和使用

    HtmlAgilityPack - 简介 HtmlAgilityPack是.net下的一个HTML解析类库.支持用XPath来解析HTML.这个意义不小,为什么呢?因为对于页面上的元素的xpath某些 ...

  10. 项目Alpha冲刺随笔集合

    班级:软件工程1916|W 作业:项目Alpha冲刺 团队名称:SkyReach 目标:完成项目Alpha版本 项目Github地址 评审表 团队博客汇总 队员学号 队员姓名 个人博客地址 备注 22 ...