Hyperledger 2.0:当试图从不同的同行中获取丢失的项目时,出现对账错误。空成员资格

问题描述 投票:0回答:1

我有3个Org,目前每个Org有1个peer在运行,还有一个Orderer.我为2个Org定义了一个私有数据集合,但是当我作为Org1的成员添加数据时,这些数据并没有与Org2同步。

   "name": "privateOrg1-2",
   "policy": "OR('Org1MSP.member','Org2MSP.member')",
   "requiredPeerCount": 0,
   "maxPeerCount": 3,
   "blockToLive": 30000,
   "memberOnlyRead": true

然而,当我作为Org1的成员添加数据时,这些数据并没有与Org2同步。当我为Org2添加数据时,这些数据没有与Org1同步。在日志中看到以下错误。

2020-05-11 15:30:28.137 UTC [gossip.privdata] fetchPrivateData -> WARN 7a0a Do not know any peer in the channel( data-channel ) that matches the policies , aborting
2020-05-11 15:30:28.137 UTC [gossip.privdata] reconcile -> ERRO 7a0b reconciliation error when trying to fetch missing items from different peers: Empty membership
2020-05-11 15:30:28.137 UTC [gossip.privdata] run -> ERRO 7a0c Failed to reconcile missing private info, error:  Empty membership

非私有数据的同步没有问题。

问题可能出在哪里?

hyperledger-fabric hyperledger-chaincode hyperldger-fabric-peer
1个回答
0
投票

我解决了这个问题。但我相信一切工作方式都不是最佳的。

我模拟的是一个分布式网络。每个对等体都运行在一台单独的机器上。所有的docker容器都是独立运行的,而不是作为kubernetes或docker网络的一部分。

我做了以下步骤。

  1. 用configtxgen生成的Org1MSPanchors.tx,Org2MSPanchors.tx,Org3MSPanchors.tx更新每个对等体的配置。之前我没有这么做。

  2. 我分析了日志,发现每个peer都试图直接连接到另一个org的anchor peer。这个连接失败了。为了使其工作,我将所有org的锚点对等体添加到我的对等体docker_compose文件的extra_hosts中。

最初我认为订购服务知道每个锚点对等体,Org1的对等体应该从订购服务中获得Org2对等体的IP地址。这有点太天真了。

© www.soinside.com 2019 - 2024. All rights reserved.