Python通過kerberos安全認(rèn)證操作kafka方式
如何通過Kerberos認(rèn)證.
1.安裝Kerberos客戶端
CentOS:
yum install krb5-workstation
使用which kinit查看是否安裝成功;
2.拷貝Kerberos配置文件
conf目錄下krb5.conf和kafka.keytab和jaas.conf拷貝到客戶端機器的etc目錄, 同時,krb5.conf中的kdc集群主機名和IP配置到客戶端機器hosts配置文件中
3.Kinit客戶端通過kerberos認(rèn)證
獲取Principal
klist -kt kafka.keytab
4.安裝python-gssapi
pip install gssapi
遇到的問題,如下:
a.在linux中執(zhí)行wget命令提示 -bash: wget: command not found 解決方法
yum -y install wget
b.報錯:bash: pip: command not found
wget https://bootstrap.pypa.io/get-pip.py python get-pip.py pip -V #查看pip版本
python -m pip install --upgrade --force pip easy_install -U setuptools pip install --upgrade setuptools
3.pip安裝出現(xiàn)Command “python setup.py egg_info” failed with error code 1 的解決方法
Traceback (most recent call last): File “”, line 1, in File “/tmp/pip-install-6HfDE3/gssapi/setup.py”, line 109, in raise Exception("Could not find main GSSAPI shared library. Please " Exception: Could not find main GSSAPI shared library. Please try setting GSSAPI_MAIN_LIB yourself or setting ENABLE_SUPPORT_DETECTION to ‘false'
Command “python setup.py egg_info” failed with error code 1 in /tmp/pip-install-6HfDE3/gssapi/
yum install -y krb5-devel.x86_64
4.關(guān)于error: command ‘gcc' failed with exit status 1錯誤的解決方法
yum install gcc python-devel
安裝kafka-python
pip install kafka-python
初始化環(huán)境變量
export KAFKA_OPTS="-Djava.security.auth.login.config=/etc/conf/jaas.conf -Djava.security.krb5.conf=/etc/krb5.conf"
Python操作kafka樣例
from kafka import KafkaProducer
from kafka.errors import KafkaError
import os
class Kafka_Producer():
def __init__(self, kafkahost, kafkaport, kafkatopic):
self.kafkaHost = kafkahost
self.kafkaPort = kafkaport
self.kafkatopic = kafkatopic
self.producer = KafkaProducer(
bootstrap_servers = '{kafka_host}:{kafka_port}'.format(kafka_host=self.kafkaHost,kafka_port=self.kafkaPort),
security_protocol="SASL_PLAINTEXT",
sasl_mechanism="GSSAPI",
sasl_kerberos_service_name="kafka",
compression_type='gzip' #壓縮方式
)
def sendFileData(self, params):
try:
f = open(params,'rb')
parmasMessage = f.read(-1).strip()
producer = self.producer
producer.send(self.kafkatopic, parmasMessage)
producer.flush()
except KafkaError as e:
print (e)
def main():
filePath = "/home/public/data/"
topic = "demo"
producer = Kafka_Producer("xxx.xx.xx.xx","9092",topic)
dirList = os.listdir(filePath)
for fileName in dirList:
producer.sendFileData(filePath+fileName)
print('send success!!!')
if __name__=='__main__':
main()
以上這篇Python通過kerberos安全認(rèn)證操作kafka方式就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
pycharm恢復(fù)默認(rèn)設(shè)置或者是替換pycharm的解釋器實例
今天小編就為大家分享一篇pycharm恢復(fù)默認(rèn)設(shè)置或者是替換pycharm的解釋器實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-10-10
Django中傳遞參數(shù)到URLconf的視圖函數(shù)中的方法
這篇文章主要介紹了Django中傳遞參數(shù)到URLconf的視圖函數(shù)中的方法,Django是最具人氣的Python開發(fā)框架,需要的朋友可以參考下2015-07-07
Python編程快速上手——strip()函數(shù)的正則表達式實現(xiàn)方法分析
這篇文章主要介紹了Python strip()函數(shù)的正則表達式實現(xiàn)方法,結(jié)合實例形式分析了Python基于正則表達式實現(xiàn)strip()函數(shù)的方法,需要的朋友可以參考下2020-02-02

