搭建多节点Fabric网络(Windows系统)

1.通过一台主机,使用Docker容器搭建多节点Fabric网络,实现6节点组成的Fabric网络(一个排序节点,组织1及其2个节点,组织2及其2个节点,cli命令交互节点)。

搭建多节点Fabric网络(Windows系统)_第1张图片

2.配置二进制文件:在使用fabric源码库的脚本下载相关编译产物时,其相关编译产物被存放在了fabric-sample/bin(但在Windows中相关编译产物不是在fabric-sample里的bin,而是跟fabric-sample同一级目录的bin目录)目录下,所以我们在系统环境的PATH变量中加入该目录,以确保在任何目录下都能使用这些编译好的二进制文件。

搭建多节点Fabric网络(Windows系统)_第2张图片
然后在任何地方都可以使用git bash终端调用相关的命令,如peer help:
搭建多节点Fabric网络(Windows系统)_第3张图片

3.选择一个工作目录(开始部署超级账本的网络,要选择一个工作目录来存放部署网络的配置文件,以及这个网络运行所产生的数据存储的一些路径)这个工作目录是随便选择的

(本人选择在hyperledger上创建fabric-test为工作目录,下同)

4.生成节点证书

(1)打开git bash终端进入工作目录:cd fabric-test
(2)通过配置文件来生成节点证书,生成配置文件模板命令:

cryptogen showtemplate > crypto-config.yaml

搭建多节点Fabric网络(Windows系统)_第4张图片
(3)在工作目录生成了配置文件crypto-config.yaml后,用VSCode打开修改里面的内容为:
1.因为这里是搭建6节点组成的Fabric网络,所以是这里的结构是三个组织的配置(排序节点:Orderer,组织1:Org1,组织1:Org2),且在组织1用户数量(Users.Count)比组织2多一个是为cli命令行交互节点准备的,放到组织2去也是一样的。
2.EnableNodeOUs用来决定生成的用户的类型:设为true,则会生成peer类型的用户证书设为false,则会生成client类型的用户证书
3.Template:模板
搭建多节点Fabric网络(Windows系统)_第5张图片
(4)生成证书文件:

cryptogen generate --config=crypto-config.yaml --output ./crypto-config

搭建多节点Fabric网络(Windows系统)_第6张图片

5.生成系统创世区块:创世区块主要提供给Orderer节点使用,也需要根据相关配置文件生成。

到fabric源码中拷贝配置文件模板(注意最后还有一个点表示复制到当前文件夹内,当前文件夹是指之前创建的工作目录(fabric-test)):

cp $GOPATH/src/github.com/hyperledger/fabric/sampleconfig/configtx.yaml .

在该配置文件中,主要包含了组织属性,能力属性,应用权限,通道属性,通道规则,共识算法等多种内容配置。
完成configtx.yaml文件的修改后(配置文件的单词很重要,也是导致错误的很重要原因),通过以下命令生成创世区块:
命令参数说明:
-profile:后面接通道名称,从configtx.yaml文件的profiles配置段中寻找相关通道配置名称载入
-channelID:自定义的通道ID,后面接通道名称,建议小写无特殊符号
-outputBlock:创世通道存储的位置,后面接创世区块输出的文件路径
-configPath:配置文件路径

configtxgen -profile TwoOrgsOrdererGenesis -channelID fabricnet02-sys-channel -outputBlock ./channel-artifacts/genesis.block -configPath .

6.生成节点channel配置文件(我这里将channelID命名为mychannel)

这里的channel是Peer间通信的通道,与前面Orderer的channel不同

configtxgen -profile TwoOrgsChannel -outputCreateChannelTx ./channel-artifacts/channel.tx -channelID mychannel -configPath .

7.生成组织的锚点(anchor)文件:

(1)生成组织1的锚点文件:

configtxgen -profile TwoOrgsChannel -outputAnchorPeersUpdate ./channel-artifacts/Org1MSPanchors.tx -channelID mychannel -asOrg Org1MSP -configPath .

(2)生成组织2的锚点文件:

configtxgen -profile TwoOrgsChannel -outputAnchorPeersUpdate ./channel-artifacts/Org2MSPanchors.tx -channelID mychannel -asOrg Org2MSP -configPath .

8.生成Docker配置文件:

前面已经把必要的证书,组织架构设定好,接下来就通过docker-compose对容器进行编排,(这里我们需要启动6个容器)在之前创建的工作目录(fabric-test)下创建docker-compose.yml配置文件(网上查找,或者自己写,再或者下次写一篇关于配置文件内容的博客分享给大家)

9.启动Docker容器

通过Docker-compose启动容器:
指令解释:up:启动容器;-d:使Docker相关进程可以在后台运行

docker-compose up -d

(关闭是:docker-compose down 其中down指令会关闭所有容器服务并清空容器)

你可能感兴趣的:(区块链学习,fabric,docker,运维)