hyperledger结构的kafka代理无法建立连接

htzpubme  于 2021-06-06  发布在  Kafka
关注(0)|答案(2)|浏览(408)

我需要一些帮助配置我的Kafka经纪人码头集装箱hyperledger面料。我的设置将是一个集群的4个经纪人,我有一个问题,当我介绍第二个经纪人。所有的经纪人目前都坐在一台机器上,我需要他们公布他们的外部地址,以便我的订购者在不同的机器上可以发现他们。
我的一个zookeeper和一个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\u advanced\u侦听器(kafka\u advanced\u host\u name和kafka\u advanced\u port)环境变量有关。如果我删除它,它的工作,但然后我的订购者将不会收到经纪人的地址,我将失去订购者和经纪人之间的沟通。
如何保持我的代理之间的内部连接和与订购者的外部连接?

qqrboqgw

qqrboqgw1#

通过将我的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

3yhwsihp

3yhwsihp2#

容器中是侦听器变量的配置位置。10092是主机上的端口,而不是容器。
因此,你想要这个

PLAINTEXT://kafka1.hyperfabric.xyz:9092

随着

ports:
    - 10092:9092

或使用 10092 对于侦听器和端口(以及 KAFKA_ADVERTISED_PORT )
或者,如果您在unix主机上,也可以这样做 network_mode: host 模式下,丢失端口转发,则可以为播发的侦听器使用不同的端口。

相关问题