最近在学习hyperledger fabric,应公司要求,需要测试一下fabric的多机部署环境,于是在本地安装了三个虚拟机进行测试。使用的软件是virtualbox,虚拟机版本是Ubuntu17.0.4,虚拟机采用的是NAT+host only的模式。三个虚拟机的IP地址和作用如下表:
192.168.56.105 | orderer节点,peer0.org1.example.com节点,peer1.org1.example.com节点 |
192.168.56.102 | peer0.org2.example.com节点,peer1.org2.example.com节点 |
192.168.56.104 | peer0.org3.example.com节点,peer1.org3.example.com节点 |
1、下载docker和docker-compose
用下面的命令去下载docker和docker-compose:
# apt install docker.io
# apt install docker-compose
下载完成后可以检查docker和docker-compose的版本
# docker --version
# docker-compose --version
2、下载go programming language
在官网下载go1.8.3.linux-amd64.tar.gz压缩文件,并且上传到三个虚拟机,创建目录/home/fabric-1,传到这个目录下,然后进行解压缩:
# tar -C /home/fabric-1 -xzf go1.8.3.linux-amd64.tar.gz
之后修改系统环境变量,在/etc/profile文件夹下:
export GOROOT=/home/fabric-1/go
export GOBIN=$GOROOT/bin
export GOPATH=/home/workspacego
export PATH=.:$PATH:$GOBIN
记得要使用命令source /etc/profile使环境变量生效,在设置环境变量之前先创建/home/workspacego文件夹,在命令行输入go,如果出现如下命令,说明安装成功。
二、生成keys,certificates,artifacts文件
1、首先从github上下载fabric的源码
# go get github.com/hyperledger/fabric
下载完成之后,可以在/home/workspacego文件夹下看到最新的源码,我们需要fabric v1.0.1版本的源码,所以使用下面命令切换到v1.0.1的版本:
# cd /home/workspacego/src/github.com/hyperledger/fabric
# git checkout v1.0.1
2、下载fabric docker images
# cd /home/workspacego/src/github.com/hyperledger/fabric/examples/e2e_cli/
# source download-dockerimages.sh -c x86_64-1.0.1 -f x86_64-1.0.1
然后就将下载docker images,这个过程需要一段时间,请耐心等待。
3、下载好镜像之后,我们就来设置fabric多机的网络环境。
首先,我们要修改configtx.yaml,crypto-config.yaml和generateArtifacts.sh文件,在configtx.yaml文件中,默认有两个组织,我们需要增加一个组织Org3,如下图:
并且修改Organizations tag,增加Org3组织:
在crypto-config.yaml文件中,改变PeerOrgs tag:
在generateArtifacts.sh,改变函数replacePrivateKey(),增加下面一行:
改变函数generateChannelArtifacts(),增加下面一行:
修改这些文件之后,我们运行脚本来生成一些必要的文件:
# ./generateArtifacts.sh mychannel
这个脚本将生成channel-artifacts文件夹和crypto-config文件夹,channel-artifacts文件夹包含了channel的相关信息,crypto-config文件夹包含了所有节点的公钥,私钥和证书信息。这两个文件夹我们只在一个机器上生成就行了,然后拷贝到其他两个机器上就可以了。
三、配置节点文件
首先,创建docker-compose-peer.yaml文件基于docker-compose-cli.yaml文件:
# cp docker-compose-cli.yaml docker-compose-peer.yaml
修改docker-compose-peer.yaml文件,如下:(在192.168.56.105机器上)
在192.168.56.102机器上:
在192.168.56.104机器上:
在192.168.56.105机器上,增加docker-compose-orderer.yaml文件,增加如下内容:
此外,在每个节点还需要修改对应的docker-compose-base.yaml文件,分别增加对应节点的配置信息,注意,因为我是在一台电脑上搭建的环境,所以每个节点都应该给配置不同的端口。
192.168.56.105:
192.168.56.102:
192.168.56.104:
这些都配置完成之后,我们就在每个机器上启动peer节点,使用如下命令:
# docker-compose -f docker-compose-orderer.yaml up -d
这个命令在192,168,56,105节点上启动,启动排序节点
# docker-compose -f docker-compose-peer.yaml up -d
这个命令在三个节点上都启动。
然后在192。168.56.105节点上进入容器,进行测试:
# docker exec -it cli bash
# ./scripts/scripts.sh mychannel
scripts.sh脚本,包含了创建通道,将节点加入通道,下载chaincode,初始化chaincode,还有invoke,query方法等。如果执行脚本成功的话,说明我们的整个多机部署的网络已经起来了。