python - 使用 Kerberos 将 Kafka-Python 与集群连接

标签 python apache-kafka

我正在尝试使用 Kafka-Python 连接到 Kafka,Kafka 集群具有 Kerberos,我们需要构建一些命令来执行几个步骤。

我在集群上创建了一个 Topic,并使用 ./kafka-console-producer.sh./kafka-console-consumer.sh 进行了测试并且效果很好。

但是当我尝试连接 Kafka-Python 时遇到了问题。请参阅下面的代码:

def produce():
    print ('Producer')
    k_producer = KafkaProducer(bootstrap_servers='hostname:6667', 
                               security_protocol='SASL_PLAINTEXT',
                               sasl_plain_username='machine_usr',
                               sasl_plain_password='machine_pwd',
                               sasl_mechanism='PLAIN')
    for i in range(10):
        print ('Before send')
        k_producer.send('myTopic', 'Testing My Topic  ' + str(i))
        print ('After send')

好吧,运行这个东西我在 30 秒后收到了这个错误消息:

File "C:\Users\m\kafka-python-1.3.1\kafka.zip\kafka\producer\kafka.py", line 328, in __init__
File "C:\Users\m\kafka-python-1.3.1\kafka.zip\kafka\client_async.py", line 202, in __init__
File "C:\Users\m\kafka-python-1.3.1\kafka.zip\kafka\client_async.py", line 791, in check_version
kafka.errors.NoBrokersAvailable: NoBrokersAvailable

我在远程机器上运行它。 bootstrap_server 我使用了 Zookeeper 主机名和端口,但效果不佳。

我发现了一些关于它的东西,在 Kafka-Python 的 git 中我发现他们有 implemented .

还有其他连接方式吗?

最佳答案

如果任务是在 python 中解决这个问题,另一种选择是使用 confluent-kafka-python内部使用的库 librdkafka它是用 C 编写的,支持 SASL,并使用 keytab 文件。这不需要单独的 Java 进程来通过 SASL 与 kafka 进行通信。

有关说明,另请参阅 librdkafka 的文档图书馆:

https://github.com/edenhill/librdkafka/wiki/Using-SASL-with-librdkafka - 一般介绍 https://github.com/edenhill/librdkafka/blob/master/CONFIGURATION.md - 可以传递给 confluent_kafka.Producerconfluent_kafka.Consumer in python 构造函数的属性

关于python - 使用 Kerberos 将 Kafka-Python 与集群连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39351046/

相关文章:

elasticsearch - logstash kafka 输入不工作

apache-kafka - 在Kubernetes中运行Kafka时如何管理页面缓存资源

python - 逻辑回归在Python中不起作用

python - 为什么我不能将 char 附加到 Python 中的空列表?

python - 将两个文件中的数字相加(逐行)

python - 我应该在哪里检查状态/抛出异常?

scala - KTable 应该发出的事件

python - 不断添加路径到sys.path

java - 如果 kafka 代理宕机,生产者需要更长的时间来抛出异常

java - 从 Kafka 中间主题中删除消息