Hyperledger Fabric GOSSIP_BOOTSTRAP & GOSSIP_EXTERNALENDPOINTS
Posted
技术标签:
【中文标题】Hyperledger Fabric GOSSIP_BOOTSTRAP & GOSSIP_EXTERNALENDPOINTS【英文标题】: 【发布时间】:2018-12-24 22:12:05 【问题描述】:查看docker
配置文件,发现peer环境中有两个参数如下图:
environment:
- CORE_PEER_ID=peer0.org1.example.com
- CORE_PEER_ADDRESS=peer0.org1.example.com:7051
- CORE_PEER_GOSSIP_BOOTSTRAP=peer1.org1.example.com:7051
- CORE_PEER_GOSSIP_EXTERNALENDPOINT=peer0.org1.example.com:7051
- CORE_PEER_LOCALMSPID=Org1MSP
谁能解释两个变量 CORE_PEER_GOSSIP_BOOTSTRAP 和 CORE_PEER_GOSSIP_EXTERNALENDPOINT 的作用。在奇数对等点的情况下如何配置它们。
非常感谢详细的解释。
【问题讨论】:
【参考方案1】:Gossip 可以只在同一组织的同行之间使用,也可以在不同组织的同行之间使用。它始终适用于特定渠道。
1) 单个组织中的对等方之间的通信
一个节点可能是领导者并连接到排序服务并将块交付给自己组织中的其他节点
一个对等点可以连接到其组织中的其他对等点以获取丢失的块
2) 不同组织中同行之间的交流
在 v1.2 中使用私有数据功能时,gossip 用于在背书时将私有数据分发给组织中的其他节点
对等点可以从其他组织的对等点处获取已提交的缺失块
节点可能会在提交时从其他组织的节点中获取丢失的私有数据
为了让 gossip 真正发挥作用,它需要能够获取自己组织中的对等点以及其他组织中的对等点的端点信息。
CORE_PEER_GOSSIP_BOOTSTRAP 用于引导组织内的八卦。如果您使用 gossip,您通常会将组织中的所有对等点配置为指向初始对等点集以进行引导(您可以指定以空格分隔的对等点列表)。当然,对等点也可以从不同的对等点引导,但在这种情况下,您只需要确保所有对等点都有引导路径。组织内的对等点通常会在其内部端点上进行通信(这意味着您不必公开组织中的所有对等点)。当 peer 联系 bootstrap peer 时,它会传递它的端点信息,然后使用 gossip 将组织中所有 peer 的信息分发给组织中的 peer。
为了让对等方能够跨组织进行通信,同样需要某种类型的引导信息。初始跨组织引导信息是通过通道配置中的“锚点对等点”设置提供的。这允许加入通道的对等点也可以发现通道上的其他对等点。但很明显,最初组织中的对等点只会知道那里组织的锚点对等点。如果您想让其他组织知道您组织中的其他对等点,则需要设置 CORE_PEER_GOSSIP_EXTERNALENDPOINT 属性。如果未设置,则有关对等点的端点信息将不会广播给其他组织中的对等点,事实上 - 该对等点只会被其自己的组织知道。
【讨论】:
感谢 Gari 提供如此详细的答案。我需要在 GOSSIP_BOOTSTRAP 中指定一个对等点的地址吗?或者我可以提供一组其他对等方的地址吗? 您实际上可以指定一个逗号分隔的引导节点列表。上面也编辑了我的答案 @GariSingh 这是我的 docker compose 基本配置hastebin.com/inomihopek.cs,但没有运气出现错误hastebin.com/axosecuzuj.rb 任何帮助表示赞赏。我正在运行 2 个组织,每 3 个同行。 @GariSingh 告诉我应该用逗号分隔。让我试试空格 在多主机网络中,CORE_PEER_GOSSIP_EXTERNALENDPOINT 的值应该是 IP: port ?以上是关于Hyperledger Fabric GOSSIP_BOOTSTRAP & GOSSIP_EXTERNALENDPOINTS的主要内容,如果未能解决你的问题,请参考以下文章
HyperLedger Fabric中fabric-samples 安装