Как решить kafka.errors. Нераспознанная брокерская версия: Нераспознанная брокерская версия? - PullRequest
0 голосов
/ 17 января 2020

Создание docker контейнеров из

https://github.com/wurstmeister/kafka-docker.git

docker -compose.yml

version: '3'
services:
  zookeeper:
    image: wurstmeister/zookeeper
    ports:
      - "2181:2181"
  kafka:
    image: wurstmeister/kafka
    ports:
      - "9092"
    environment:
      KAFKA_ADVERTISED_HOST_NAME: localhost
      KAFKA_ZOOKEEPER_CONNECT: zookeeper:2181
      KAFKA_CREATE_TOPICS: "test-topic:5:2"
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock

start docker контейнеры

$ docker ps -a
CONTAINER ID        IMAGE                    COMMAND                  CREATED             STATUS              PORTS                                                NAMES
1479a7dc96fa        wurstmeister/kafka       "start-kafka.sh"         42 minutes ago      Up 42 minutes       0.0.0.0:32785->9092/tcp                              kafka-docker_kafka_2
08e5017dae2b        wurstmeister/kafka       "start-kafka.sh"         42 minutes ago      Up 42 minutes       0.0.0.0:32786->9092/tcp                              kafka-docker_kafka_3
d4f3d17e81b2        wurstmeister/kafka       "start-kafka.sh"         44 minutes ago      Up 44 minutes       0.0.0.0:32784->9092/tcp                              kafka-docker_kafka_1
72b0fbe553b5        wurstmeister/zookeeper   "/bin/sh -c '/usr/sb…"   44 minutes ago      Up 44 minutes       22/tcp, 2888/tcp, 3888/tcp, 0.0.0.0:2181->2181/tcp   kafka-docker_zookeeper_1

проверенные темы

$ docker exec -it kafka-docker_kafka_3 bash
bash-4.4# /opt/kafka/bin/kafka-topics.sh --zookeeper 172.19.0.3:2181 --list
test-topic
bash-4.4# exit
exit

pip3.7 install kafka-python = 1.4.7

клиент, созданный python

import os
from kafka import KafkaConsumer
producer = KafkaConsumer(security_protocol="PLAINTEXT", bootstrap_servers=os.environ.get('KAFKA_HOST', 'localhost:2181'))

попытаться запустить возвращаемую ошибку

Traceback (most recent call last):
  File "/home/drno/IdeaProjects/prometheus_dirs_and_files_node_exporter/zookeeper_kafka.py", line 9, in <module>
    producer = KafkaConsumer(security_protocol="PLAINTEXT", bootstrap_servers=os.environ.get('KAFKA_HOST', 'localhost:2181'))
  File "/opt/python/python37/lib/python3.7/site-packages/kafka/consumer/group.py", line 354, in __init__
    self._client = KafkaClient(metrics=self._metrics, **self.config)
  File "/opt/python/python37/lib/python3.7/site-packages/kafka/client_async.py", line 240, in __init__
    self.config['api_version'] = self.check_version(timeout=check_timeout)
  File "/opt/python/python37/lib/python3.7/site-packages/kafka/client_async.py", line 908, in check_version
    version = conn.check_version(timeout=remaining, strict=strict, topics=list(self.config['bootstrap_topics_filter']))
  File "/opt/python/python37/lib/python3.7/site-packages/kafka/conn.py", line 1228, in check_version
    raise Errors.UnrecognizedBrokerVersion()
kafka.errors.UnrecognizedBrokerVersion: UnrecognizedBrokerVersion

Как решить эту проблему?

1 Ответ

0 голосов
/ 20 января 2020

В трассировке стека говорится, что вы подключаетесь к localhost:2181 (Zookeeper), а не к Кафке.

Предлагаю вам превратить ваш код Python в контейнер. Добавьте правильную строку подключения службы через переменную envirom enet

app:
  build: app  # where app is a folder containing your Python code + Dockerfile
  environment:
    KAFKA_HOST: kafka:9092

И, пожалуйста, удалите /var/run/docker.sock из креплений

В противном случае вам необходимо подключиться к localhost:32784,localhost:32785,localhost:32786 с вашего хоста машина

...