本笔记为python操作kerberos认证的kafka的操作方法,此仅记录作为使用者,连接客户提供的kafka并进行操作的流程。
1、依赖安装:
python相关依赖库:
pip3 install kafka-python
pip3 install gssapi
系统(镜像):需要安装kerberos的客户端进行验证
对于mac:brew install krb5
对于Debian或Ubuntu:apt-get install -y -q krb5-config krb5-user libkrb5-dev
2、进行kerberos认证:
此时需要客户方提供认证信息,核心为:
1、krb5.conf文件(需放到/etc/krb5.conf或手动指定该文件的位置)
2、xx.keytab文件
3、用户名,USER_PRINCIPAL
执行认证在系统或者镜像中执行认证命令:
kinit -kt xx.keytab文件路径 USER_PRINCIPAL
执行成功则无任何返回
3、使用python进行kafka操作
此时需要客户提供相关的连接信息,加密方式等参数,如:group_id,security_protocol,sasl_kerberos_domain_name等
product.py
from kafka import KafkaProducer
producer = KafkaProducer(bootstrap_servers=["xx.xx.xx.xx:9092"], # (根据实际情况修改)
security_protocol="SASL_PLAINTEXT", # (根据实际情况修改)
sasl_mechanism="GSSAPI", # (根据实际情况修改)
sasl_kerberos_domain_name='hadoop.hadoop.com', # (根据实际情况修改)
sasl_kerberos_service_name="test") # (根据实际情况修改)
print("starting Kafka producer")
response = producer.send("test-topic", b"testmessage")
result = response.get(timeout=50)
print(result)
consumer.py
from kafka import KafkaConsumer
consumer = KafkaConsumer("test-topic",
bootstrap_servers=["xx.xx.xx.xx:9092"], # (根据实际情况修改)
group_id="xxxx", # (根据实际情况修改)
enable_auto_commit="true", # (根据实际情况修改)
security_protocol="SASL_PLAINTEXT", # (根据实际情况修改)
sasl_mechanism="GSSAPI", # (根据实际情况修改)
sasl_kerberos_domain_name='hadoop.hadoop.com', # (根据实际情况修改)
sasl_kerberos_service_name="test") # (根据实际情况修改)
for message in consumer:
print("start consumer")
print(f"{message}")
标签:Python,kerberos,kafka,修改,xx,sasl,实际
From: https://www.cnblogs.com/chiyun/p/17777097.html