[Hyperledger Fabric] 4. 在 Ubuntu16.04 64位环境下手动启动Fabric网络

一、 前期准备

版本

更新或下载URL

Ubuntu

16.04 64位

Hyperledger Fabric

1.0.3

依据官方提供的网址:

http://hyperledger-fabric.readthedocs.io/en/latest/samples.html

依赖项(不分先后顺序)

docker

17.05.0-ce

yes|cp -f ./docker.repo /etc/yum.repos.d/docker.repo

sudo apt-get install –y docker-engine

systemctl start docker.service

 

docker.repo内容见下教程

docker-compose

1.9.0 build 2585387

pip install docker-compose

go

1.7.5

sudo apt-get install –y golang

python

2.7.5

sudo apt-get install –y python

python-pip

9.0.1

sudo apt-get install -y python-pip

pip install --upgrade pip backports.ssl_match_hostname

git

1.8.3.1

sudo apt-get install –y git

nodejs

6.11.3

sudo apt-get install –y nodejs

npm

3.10.10

nodejs已集成

 

说明:

1.     相关工具的安装均为64位,版本不同可能将导致无法正常启动IDE或无法完成某些配置,请务必注意版本信息。

2.     后续安装过程中有部分工具,仅仅需要解压即可完成安装,建议将解压出的问题统一安装至相同目录便于管理。

 

 

 

二、 配置步骤

环境搭建详见我个人博客:https://blog.csdn.net/mimica/article/details/78412038

 

1.     网络拓扑

 

2.     准备自己手动生成相关配置文件

添加bootstrap-*.sh下载的签名、生成证书等工具——configtxgen、configtxlator、cryptogen、orderer、peer

 

方法一:添加路径至环境变量,永久生效。环境变量路径:

vim/etc/environment

 

方法二:直接拷贝工具至/usr/bin,类似方法一,需要root权限(使用切换至root)。命令:

sudo yes|cp –f  [你的fabric例子代码存放路径]/fabric-samples/script/bin/configtxlator /usr/bin/
sudo yes|cp –f  [你的fabric例子代码存放路径]/fabric-samples/script/bin/configtxgen /usr/bin/
sudo yes|cp –f  [你的fabric例子代码存放路径]/fabric-samples/script/bin/cryptogen /usr/bin/
sudo yes|cp –f  [你的fabric例子代码存放路径]/fabric-samples/script/bin/orderer /usr/bin/
sudo yes|cp –f  [你的fabric例子代码存放路径]/fabric-samples/script/bin/peer /usr/bin/

 

添加文件的可执行权限

chmod –R a+x configtxlator configtxgen cryptogen orderer peer

 

方法三:使用官方提供的源码重新编译生成工具,命令:

文件所在:~/go/src/github.com/hyperledger/fabric

执行命令:

make cryptogen
make configtxgen
make configtxlator

2.1.   生成组织关系和身份证书

通过以下命令可以为Fabric网络生成指定拓扑结构的组织和身份文件,并存放到crypto-config目录

命令:

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

 

通过crypto-config.yaml配置文件生成组织关系和身份证书,执行成功结果如下:

 

通过以下命令可查看crypto-config目录结构,命令:

tree –L 4 crypto-config

2.2.   生成Ordering服务启动初始区块

本地使用简单solo模式,生产环境请使用kafka集群服务。

1)   生成Ordering服务系统通道的初始区块文件

FABRIC_CFG_PATH=. configtxgen -profile TwoOrgsOrdererGenesis –outputBlock ./orderer.genesis.block

 

成功生成Ordering服务初始区块,如下所示:

[Hyperledger Fabric] 4. 在 Ubuntu16.04 64位环境下手动启动Fabric网络_第1张图片

 

说明:

非solo模式下,所生成的orderer.genesis.block需要复制到Orderer节点上(与Orderer配置中ORDERER_GENERAL_GENESISFILE指定的文件路径一致,默认路径为:/etc/hyperledger/fabric路径下),在启动Ordering服务时进行使用。

 

2.3.   生成新建应用通道的配置交易文件

新建应用通道是,需要事先准备好配置交易文件,包括属于该通道的组织结构信息。这些信息会写入该应用通道的初始区块中。而且生成的配置交易信息文件会在后续步骤被客户端使用,因此可以放在客户端节点上。

1)   使用configtx.yaml配置文件中的TwoOrgsChannel模板指定Org1和Org2都属于随后新建的应用通道。

执行命令:

CHANNEL_NAME=businesschannel
 
FABRIC_CFG_PATH=. configtxgen -profile TwoOrgsChannel -outputCreateChannelTx ./businesschannel.tx -channelID ${CHANNEL_NAME}

 

成功新建应用通道的配置交易文件,如下所示:

[Hyperledger Fabric] 4. 在 Ubuntu16.04 64位环境下手动启动Fabric网络_第2张图片

 

2.4.   生成锚节点配置更新文件

锚节点配置更新文件可以用来对组织的锚节点进行配置,但需要分别指定对应的组织名称。

具体生成步骤:

1)    生成组织1:Org1MSP

FABRIC_CFG_PATH=. configtxgen -profile TwoOrgsChannel -outputAnchorPeersUpdate ./Org1MSPanchors.tx -channelID ${CHANNEL_NAME} -asOrg Org1MSP

 

2)    生成组织2:Org2MSP

FABRIC_CFG_PATH=. configtxgen -profile TwoOrgsChannel -outputAnchorPeersUpdate ./Org2MSPanchors.tx -channelID ${CHANNEL_NAME} -asOrg Org2MSP

 

成功生成锚节点配置更新文件,如下所示:

[Hyperledger Fabric] 4. 在 Ubuntu16.04 64位环境下手动启动Fabric网络_第3张图片

 

说明:

1)    所生成的锚节点配置更新文件仍会在后续步骤被客户端使用,因此也可以放在客户端节点上。

2)    所有用于启动的配置文件生成并部署到对应节点后,可以进行服务的启动操作。

a)    启动Order节点

b)    启动Peer节点

 

3.     启动Orderer节点

检查启动节点的所有配置是否就绪:

1)   在/etc/hyperledger/fabric下放置有编写好的orderer.yaml。

该文件可参考官方sampleconfig/orderer.yaml文件编写。(具体yaml文件语法请自行搜索了解)

2)   在/etc/hyperledger/fabric下放置生成的msp、tls文件目录。

3)   在/etc/hyperledger/fabric下放置初始区块文件orderer.genesis.block。

 

注:请自行拷贝相关文件至:/etc/hyperledger/fabric下,以便启动orderer节点。

 [Hyperledger Fabric] 4. 在 Ubuntu16.04 64位环境下手动启动Fabric网络_第4张图片

 

Orderer节点的默认配置文件中指定简单Orderer节点功能。通常来说,在使用时需依据需求对一些关键配置进行指定。

环境变量配置入口:to be add

启动本地Orderer节点:

orderer start

 

4.     启动Peer节点

5.     操作网络

6.     基于容器方式

 

 

 

三、 FAQ

1.     使用cryptogen无法生成文件

症状:

[Hyperledger Fabric] 4. 在 Ubuntu16.04 64位环境下手动启动Fabric网络_第5张图片

 

可能原因:

1)    与操作版本不对应

2)    文件损坏

3)    无可执行权限

 

解决方法:

1)    重新下载对应版本

2)    赋予可执行权限

 

重新下载工具(configtxgen、configtxlator、cryptogen):

[Hyperledger Fabric] 4. 在 Ubuntu16.04 64位环境下手动启动Fabric网络_第6张图片

 

2.     生成Ordering服务系统通道的初始文件失败

症状:

[Hyperledger Fabric] 4. 在 Ubuntu16.04 64位环境下手动启动Fabric网络_第7张图片

 

原因:

未确认FABRIC_CFG_PATH该变量路径,可预先设置该路径为当前路径。

 

解决方法:

在控制台执行以下命令:

FABRIC_CFG_PATH=.

 

解决后:

[Hyperledger Fabric] 4. 在 Ubuntu16.04 64位环境下手动启动Fabric网络_第8张图片

 

额外说明:无

 

3.     orderer start启动失败

症状:

[Hyperledger Fabric] 4. 在 Ubuntu16.04 64位环境下手动启动Fabric网络_第9张图片

原因:

 

解决方法:

 

相关命令:

 

解决后:

 

额外说明:

 

 

4.     注释compose-compose-cli.yaml的script.sh后通过命令行方式手动启动fabric网络失败

启动命令:

CHANNEL_NAME=businesschannel TIMEOUT=300 docker-compose –f docker-compose-cli.yaml up -d

 [Hyperledger Fabric] 4. 在 Ubuntu16.04 64位环境下手动启动Fabric网络_第10张图片

 

原因:

docker守护进程启动时无法正确选择sock文件的URL位置。

 

解决方法:

将docker服务添加自系统自启动,重启Ubuntu即可。

 

相关命令:

1.     切换至root用户:su
2.     设置docker为开机自启动:systemctl enable docker
3.     未马上手动重启服务器的情况下,手动启动docker服务:
               systemctl start docker
               systemctl restart docker
4.     退出root后,查看docker容器启动情况:sudo docker ps

 

解决后:

[Hyperledger Fabric] 4. 在 Ubuntu16.04 64位环境下手动启动Fabric网络_第11张图片

[Hyperledger Fabric] 4. 在 Ubuntu16.04 64位环境下手动启动Fabric网络_第12张图片

额外说明:

 

5.     连接peer节点

 

原因:

[Hyperledger Fabric] 4. 在 Ubuntu16.04 64位环境下手动启动Fabric网络_第13张图片

依据上图提示得知连接orderer.example.com:7050错误,具体的错误描述为:认证握手失败,x509证书签名未被授权。

 

解决方法:

给证书签名

 

相关命令:

 

解决后:

 

额外说明:

 

6.     进入docker-compose-cli.yaml配置文件指定的cli容器无法生成通道的创世区块

[Hyperledger Fabric] 4. 在 Ubuntu16.04 64位环境下手动启动Fabric网络_第14张图片

原因:

存在同名的channel,因为同样的channel已经在之前被建立,命名冲突。

 

解决方法:

移除docker,重新启动。

 

相关命令:

1)     删除一个指定容器:sudo docker rm [container id]
2)     强制删除一个指定容器:sudo docker rm –f [container id]
3)     强制删除全部容器:sudo docker rm –f $(sudo docker ps -aq)

解决后:

生成通道的创世区块:mychannel.block

[Hyperledger Fabric] 4. 在 Ubuntu16.04 64位环境下手动启动Fabric网络_第15张图片

额外说明:

1)    检查是否已经创建同名channel;

2)    清理之前的搭建环境,如果是在虚拟机中搭建或创建快照,建议重新恢复至快照状态再重新下载容器,按步骤逐一测试。

你可能感兴趣的:(Hyperledger,Fabric)