Hyperledger Fabric 的 Kafka Brokers 无法建立连接



我需要一些帮助来为hyperledger fabric配置我的kafka代理docker容器。我的设置将是 4 个代理的集群,当我引入第二个代理时我遇到了问题。所有经纪人目前都坐在一台机器上,我需要他们通告他们的外部地址,以便我在不同机器上的订购者可以发现它们。

我用 1 个动物园管理员和 1 个代理撰写文件:

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发生同样的事情(环境变量有关。如果我删除它,它可以工作,但是我的订购者将不会收到经纪人地址,我将失去订购者和经纪人之间的通信。

如何保持经纪商之间的内部连接和与订单的外部连接?

容器内是配置侦听器变量的位置。 10092 是主机上的端口,而不是容器。

因此,你想要这个

PLAINTEXT://kafka1.hyperfabric.xyz:9092

以及

ports:
- 10092:9092

或者对侦听器和端口都使用10092(加上KAFKA_ADVERTISED_PORT(


或者,如果您在 unix 主机上,则可以执行network_mode: host模式,丢失端口转发,然后您可以对播发的侦听器使用不同的端口。

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

相关内容

最新更新