Kafka Brokers для Hyperledger Fabric не удалось установить соединение - PullRequest
0 голосов
/ 11 мая 2018

Мне нужна помощь в настройке докер-контейнеров моего kafka brokers для структуры hyperledger. Моя установка будет кластером из 4 брокеров, и у меня возникнет проблема, когда я представлю второго брокера. Все брокеры в настоящее время работают на одной машине, и мне нужно, чтобы они объявили свой внешний адрес, чтобы мои заказчики на разных машинах могли их обнаружить.

Мой составной файл с 1 Zookeeper и 1 Broker:

version: '2'

services:
  zookeeper0.hyperfabric.xyz:
    image: hyperledger/fabric-zookeeper
    restart: always
    container_name: zookeeper0.hyperfabric.xyz
    environment:
      - ZOO_SERVERS=server.1=zookeeper0.hyperfabric.xyz:2888:3888
      - ZOO_MY_ID=1
    ports:
      - 2181:2181
      - 2888:2888
      - 3888:3888

  kafka0.hyperfabric.xyz:
    image: hyperledger/fabric-kafka
    restart: always
    container_name: kafka0.hyperfabric.xyz
    environment:
      - KAFKA_MESSAGE_MAX_BYTES=103809024
      - KAFKA_REPLICA_FETCH_MAX_BYTES=103809024
      - KAFKA_UNCLEAN_LEADER_ELECTION_ENABLE=false
      - KAFKA_MIN_INSYNC_REPLICAS=1
      - KAFKA_DEFAULT_REPLICATION_FACTOR=1
      - KAFKA_ZOOKEEPER_CONNECT=zookeeper0.hyperfabric.xyz:2181
      - KAFKA_BROKER_ID=0
      - KAFKA_ADVERTISED_LISTENERS=PLAINTEXT://kafka0.hyperfabric.xyz:9092
    ports:
      - 9092:9092
      - 9093:9093

Запуск это работает нормально.

Когда я представляю другого брокера, используя:

kafka1.hyperfabric.xyz:
  image: hyperledger/fabric-kafka
  restart: always
  container_name: kafka1.hyperfabric.xyz
  environment:
    - KAFKA_MESSAGE_MAX_BYTES=103809024
    - KAFKA_REPLICA_FETCH_MAX_BYTES=103809024
    - KAFKA_UNCLEAN_LEADER_ELECTION_ENABLE=false
    - KAFKA_MIN_INSYNC_REPLICAS=1
    - KAFKA_DEFAULT_REPLICATION_FACTOR=1
    - KAFKA_ZOOKEEPER_CONNECT=zookeeper0.hyperfabric.xyz:2181
    - KAFKA_BROKER_ID=1
    - KAFKA_ADVERTISED_LISTENERS=PLAINTEXT://kafka1.hyperfabric.xyz:10092
  ports:
    - 10092:9092
    - 10093:9093

Я получаю ошибку бесконечного зацикливания:

[2018-05-11 02:04:08,310] WARN [Controller id=0, targetBrokerId=1] Connection to node 1 could not be established. Broker may not be available. (org.apache.kafka.clients.NetworkClient)

Ошибка в некоторой степени связана с моей переменной среды KAFKA_ADVERTISED_LISTENERS (то же самое происходит с переменными среды KAFKA_ADVERTISED_HOST_NAME и KAFKA_ADVERTISED_PORT). Если я удалю его, он будет работать, но тогда мои заказчики не получат адрес брокера, и я потеряю связь между заказчиками и брокерами.

Как мне поддерживать внутреннюю связь между моими брокерами и внешнюю связь с моими заказчиками?

Ответы [ 2 ]

0 голосов
/ 11 мая 2018

Я смог соединить все, изменив контейнер kafka1 так:

kafka1.hyperfabric.xyz:
  image: hyperledger/fabric-kafka
  restart: always
  container_name: kafka1.hyperfabric.xyz
  environment:
    - KAFKA_PORT=10092
    - KAFKA_MESSAGE_MAX_BYTES=103809024
    - KAFKA_REPLICA_FETCH_MAX_BYTES=103809024
    - KAFKA_UNCLEAN_LEADER_ELECTION_ENABLE=false
    - KAFKA_MIN_INSYNC_REPLICAS=1
    - KAFKA_DEFAULT_REPLICATION_FACTOR=1
    - KAFKA_ZOOKEEPER_CONNECT=zookeeper0.hyperfabric.xyz:2181
    - KAFKA_BROKER_ID=1
    - KAFKA_ADVERTISED_LISTENERS=PLAINTEXT://kafka1.hyperfabric.xyz:10092
  ports:
    - 10092:10092
    - 10093:9093

Разница составляет - KAFKA_PORT=10092 и - 10092:10092

0 голосов
/ 11 мая 2018

Внутри контейнера находятся переменные вашего слушателя. 10092 - это порт вашего хоста , а не контейнер.

Следовательно, вы хотите это

PLAINTEXT://kafka1.hyperfabric.xyz:9092

Вместе с

ports:
    - 10092:9092

Или используйте 10092 для обоих портов слушателя и (плюс KAFKA_ADVERTISED_PORT)


В качестве альтернативы, если вы находитесь на хосте Unix, вы можете перейти в режим network_mode: host, потерять переадресацию портов, тогда вы можете использовать разные порты для объявленных слушателей.

...