0

我有 3 个组织,每个组织当前有 1 个同行在运行,还有一个排序者。我为 2 个组织定义了一个私有数据集合。

   "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

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

可能是什么问题呢?

4

1 回答 1

0

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

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

我做了以下步骤:

  1. 使用 configtxgen 生成的 Org1MSPanchors.tx、Org2MSPanchors.tx、Org3MSPanchors.tx 更新每个对等点的配置。早些时候我没有这样做。

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

最初我认为排序服务知道每个锚点和 Org1 的对等点应该从排序服务获取 Org2 对等点的 IP 地址。这有点天真。

于 2020-05-12T18:36:49.877 回答