多个主机节点上的Hyperledger Fabric

Hyperledger Fabric是由Linux Foundation托管的业务区块链项目。它是一个“分布式总账解决方案平台,以模块化架构为基础,提供高度机密性,弹性好,灵活性和可扩展性。它旨在支持不同组件的可插拔实现,并适应整个经济生态系统中存在的复杂性和复杂性。“

我开始研究这项技术,作为探索区块链解决方案的PoC的一部分。Hyperledger Fabric有很好的文档,并有详细的入门教程。但是,它错过了分布式系统实现(在多个主机上部署)的最重要指南,这是分布式系统的本质。

是的,没有教程或指南可以帮助你跨多个主机部署网络。许多人在同一问题上围绕不同的论坛挣扎。我决定首先研究现有的样本,以了解超级分类网络的不同组件如何能够在单个主机上进行通信。

先决条件

本教程要求你首先从Hyperledger教程中关注Build You First Network。这是了解它如何连接并在单一主机模式下工作的重要步骤。此外,它还安装了对本教程非常重要的所有必要的先决条件和依赖项。

如果你想跳过上述教程并想要尝试这一点,则必须安装以下所述的所有先决条件:

在我们开始之前,如果你还没有这样做,你可能希望检查你是否已在将要开发区块链应用程序和/或运行Hyperledger Fabric的平台上安装了所有先决条件。

你还需要下载并安装Hyperledger Fabric Samples。你会注意到fabric-samples存储库中包含了许多样本。我们将使用第一个网络样本。我们现在打开那个子目录。

在安装了上述先决条件之后,在继续之前,让我们了解网络如何在单个主机上运行…

它如何在单个主机上运行…

Hyperledger Fabric依赖于基于docker的架构,超级分类网络的所有组件都在单独的容器中运行,而不能看到相邻的容器。为了使它们彼此通信,它们创建了一个网络,每个容器都附加到它上面。你可以在fabric-samples repo中“First Network”下的docker-compose-cli.yml中找到它。你会发现在docker-compse-cli.yml文件的开头,创建了网络byfn,然后所有容器都将自己附加到刚刚创建的网络上。

默认情况下,Compose为你的应用设置单个网络。服务的每个容器都加入默认网络,并且该网络上的其他容器都可以访问它们,并且它们可以在与容器名称相同的主机名上发现。

它将如何适用于多主机…

但是当我们跨多个主机工作时,容器无法相互通信。简而言之,我们需要找到一种方法来跨多个主机(PC)共享此网络(所有容器连接到的网络)。我猜测它可以通过使用docker swarm来实现。我找到了:

覆盖网络驱动程序在多个Docker守护程序主机之间创建分布式网络。该网络位于(覆盖)顶部,特定于主机的网络允许连接到它的容器(包括群服务容器)安全地通信。Docker透明地处理每个数据包与正确的Docker守护程序主机和正确的目标容器的路由。然后我的着眼点落在这里

我开始合并这些碎片并经过一些反复试验,我能够把它拉下来。要做到这一点,你需要

  • 首先初始化docker swarm模式(假设在PC 1上)。
  • 并使所有其他主机加入该群体作为manager(让我们说PC 2,PC3 …)。
  • 创建一个超级网络,以便它可以在所有其他主机上共享。(其他主机可以看到网络的原因是它们是群组的一部分)

由于这是一个分布式系统,因此你需要多个主机(在我们的示例中为两台计算机)来验证该技术的分布式特性。假设你有两台PC,即PC1和PC2。

本教程仅适用于Linux,为什么?

目前,你无法单独使用Docker for Mac或Docker for Windows来测试多节点群。

网络拓扑结构

因此,我们要构建的网络将具有以下组件。对于这个例子,我们使用两台PC(PC1和PC2):

    1. 证书颁发机构(CA)—— PC1
    1. Orderer —— PC1
    1. 1 PEER(peer0)on —— PC1
    1. 1 PEER(peer1)on —— PC2
    1. CLI on —— PC2

在拓扑图里:

在你开始之前

  • 初始化一个群:( docker swarm文档获取更多信息)
$ docker swarm init
  • 加入swarm与其他主机作为经理(PC1将创建swarm,PC2将加入它)

PC1:

$ docker swarm join-token manager

它会输出这样的内容:

docker swarm join — token SWMTKN-1–3as8cvf3yxk8e7zj98954jhjza3w75mngmxh543llgpo0c8k7z-61zyibtaqjjimkqj8p6t9lwgu 172.16.0.153:2377

我们将复制它(终端上的那个,而不是上面的那个)并在PC2终端上执行它以使其加入PC1

在PC2上使用上一个命令的输出命令

  • 创建一个网络(在我的情况下为my-net)——PC1
$ docker network create --attachable --driver overlay my-net
  • 在两台PC上克隆这个repo,即PC1和PC2。
$ git clone https://github.com/wahabjawed/Build-Multi-Host-Network-Hyperledger.git
  • 生成网络工件(加密资源)——PC1
$ cd Build-Multi-Host-Network-Hyperledger/

$ ./bmhn.sh

这将在crypto-configchannel-artifacts文件夹中为你生成网络工件。你必须在PC2上复制这些文件夹,以便两个项目都具有相同的加密资源。重要的是,

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值