Подключение Kafka-Python с кластером с Kerberos

Я пытаюсь подключиться к Kafka с Kafka-Python, кластер Kafka имеет Kerberos, который нам нужно построить несколько команд, чтобы сделать несколько шагов.

Я создал одну тему в кластере и я сделала тест с ./kafka-console-producer.sh и ./kafka-console-consumer.sh и работает очень хорошо.

но когда я пытаюсь связаться с Кафкой-питоном, у меня возникла проблема. См. мой код ниже:

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:Usersmkafka-python-1.3.1kafka.zipkafkaproducerkafka.py", line 328, in __init__
File "C:Usersmkafka-python-1.3.1kafka.zipkafkaclient_async.py", line 202, in __init__
File "C:Usersmkafka-python-1.3.1kafka.zipkafkaclient_async.py", line 791, in check_version
kafka.errors.NoBrokersAvailable: NoBrokersAvailable

Я запуск на удаленной машине. И bootstrap_server я использовал имя хоста и порт Zookeeper, но не работал.

реализовала.

есть ли другой способ подключения?

2 ответов


Если задача состоит в том, чтобы решить эту проблему в python, другой альтернативой может быть использование слияние-Кафка-питон библиотека, которая внутренне использует librdkafka который написан на C и поддерживает SASL и использование файла keytab. Это не потребует наличия отдельного процесса Java для связи с Кафкой через SASL.

для получения инструкций также обратитесь к документации librdkafka библиотека:

https://github.com/edenhill/librdkafka/wiki/Using-SASL-with-librdkafka - общее вступление https://github.com/edenhill/librdkafka/blob/master/CONFIGURATION.md - свойства, которые могут быть переданы в конструктор confluent_kafka.Producer и confluent_kafka.Consumer в python