Hyperledger Fabric 的 Kafka 代理无法建立连接
Kafka Brokers for Hyperledger Fabric could not establish a connection
我需要一些帮助来为 hyperledger fabric 配置我的 kafka 代理 docker 容器。我的设置将是一个由 4 个代理组成的集群,我在引入第二个代理时遇到了问题。所有经纪人目前都坐在一台机器上,我需要他们公布他们的外部地址,以便我在不同机器上的订购者可以发现他们。
我用 1 个 Zookeeper 和 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
模式,失去端口转发,然后您可以 use different ports 用于通告的侦听器。
通过将我的 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
我需要一些帮助来为 hyperledger fabric 配置我的 kafka 代理 docker 容器。我的设置将是一个由 4 个代理组成的集群,我在引入第二个代理时遇到了问题。所有经纪人目前都坐在一台机器上,我需要他们公布他们的外部地址,以便我在不同机器上的订购者可以发现他们。
我用 1 个 Zookeeper 和 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
模式,失去端口转发,然后您可以 use different ports 用于通告的侦听器。
通过将我的 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