赠书 | 超级账本Fabric 1.0多节点集群的部署(2)

来源:互联网 发布:java gc机制 编辑:程序博客网 时间:2024/05/29 15:21

题图摄于台北淡水:渔人码头情人桥


上期文章阐述了超级账本 Fabric 1.0多节点部署的方法概述(可点击),得到广大读者的关注,笔者们连夜赶工,今天发布连载之二,介绍具体搭建 Fabric 1.0 集群的步骤,有需要的读者可下载PDF版本。文后有赠送《区块链技术指南》一书活动。


( 注:部署过程中大量使用了 docker 和 docker compose ,建议不熟悉 Docker 的读者先补充相关知识。)


二、操作步骤


1、  环境构建与测试


本文中用到的宿主机环境是 Ubuntu 14.04.5 LTS,通过 Docker 容器来运行 Fabric 的节点, 版本为 v1.0 beta。因此,启动 Fabric 网络中的节点需要先安装Docker 、 Docker-compose 和 Go 语言环境,然后在网上拉取相关的 Docker镜像,再通过配置 compose 文件来启动各个节点。


1.1、Docker 与 Docker-compose 安装

(由于篇幅关系,略去部分命令,可参考文后的完整PDF版本。)


当安装完成后,可通过 docker version 命令来查看 docker 的版本信息并确认安装成功。

 

接下来下载并安装 docker-compose 。安装完毕后可以通过 docker-compose version 来确认安装是否成功。

 

1.2、Go 1.8.3安装:

1). 通过以下命令下载go1.8.3:

curl -O https://storage.googleapis.com/golang/go1.8.3.linux-amd64.tar.gz

                 

2). 解压go1.8.3.linux-amd64.tar.gz到/usr/local:

tar -C /usr/local -xzf go1.8.3linux-adm64.tar.gz

 

3). 在~/.profile中添加$GOPATH环境变量,并把go加到$PATH环境变量,编辑~/.profile在最后添加两行­:

export PATH=$PATH:/usr/local/go/bin

export GOPATH=/opt/gopath

 

4). 在终端运行source  ~/.profile后用go version可查看go的版本,返回如下信息说明安装成功:

 go1.8.3 linux/amd64

 

1.3、下载Fabric源码:

下载Fabric源码是因为要用到源码中提供的例子和工具,工具的编译需要用到Go环境,因此需要把源码目录放到 $GOPATH 下。通过上面 Go 的安装配置, $GOPATH 设置为 /opt/gopath ,用以下命令创建并且进入到 hyperledger 目录中:

mkdir -p /opt/gopath/github.com/hyperledger/

cd /opt/gopath/github.com/hyperledger


从github上下载Fabric源码:

git clone https://github.com/hyperledger/fabric.git


因为镜像使用的是beta版本,因此需要把 Fabric 切换到 v1.0.0 beta 源码分支,以兼容 fabric/example/e2e 中的配置:

git checkout v1.0.0-beta

 

1.4、Docker镜像下载


Fabric 集群所需要用到的 Docker 镜像如下:


进入到 fabric/examples/e2e_cli 目录下,运行 ./download-dockerimages.sh 来下载必要镜像。镜像下载完成后,就可以通过 docker save 命令把镜像打包成压缩文件,传送到各个VM。当VM接收到压缩文件后,可以通过 docker load 来解压和导入镜像。如果有私有的容器镜像仓库registry,如Harbor 等,也可以把镜像推送到私有registry,再从各个机器中拉取。

 

通过以下命令来保存所有 tag 含有 beta 标识的镜像到名字为 images 的压缩文件中:

docker save $(docker images | grep beta | awk {‘print $1’} ) -o images


生成 images 文件后,就可以通过scp把它拷贝到还没有镜像的其他节点中,例如,地址为 10.112.122.6 的节点需要安装以上镜像,可以通过以下命令把images 远程拷贝到 10.112.122.6 的home目录下:


scp images root@10.112.122.6:~


然后在 10.112.112.6 这台主机的home目录上运行:

docker load -i images


等待一段时间后, 通过 docker images 命令就能查看到相关镜像的信息。

 

1.5、运行测试

进入到 fabric/example/e2e_cli 文件夹,文件结构如下:

network_setup.sh 是一键测试脚本,该脚本启动了6个 docker 容器,其中有4个容器运行 peer 节点和1个容器运行 orderer 节点,它们组成一个Fabric集群。另外, 还有一个 cli 容器用于执行创建 channel 、加入 channel 、安装和执行chaincode 等操作。测试用的 chaincode 定义了两个变量,在实例化的时候给这两个变量赋予了初值,通过invoke操作可以使两个变量的值发生变化。


通过以下命令执行测试:

bash network_setup.sh up


接下来会有许多的调试信息,具体可参考 e2e_cli 目录下的 script/script.sh 文件,当终端出现以下信息时说明测试通过,所有部件工作正常:


===All GOOD, End-2-End execution completed ===

 

至此,环境配置工作完毕,通过 docker ps -a 命令可以查看各容器的状态。 chaincode 会在独立的容器中运行,因此会出现3个以 dev 开头的容器,它们与各自的 peer 对应,记录了 peer 对 chaincode 的操作。

 

2、创建Fabric多节点集群


2.1 前期准备


我们将重现 Fabric 自带的 e2e_cli 示例中的集群,不同的是要把容器分配到不同的虚拟机上,彼此之间通过网络来进行通信,网络搭建完成后则进行相关的 channel 和 chaincode 操作。


先准备5台虚拟机(VM),所有虚拟机均按照上述环境构建与测试步骤配置,当然也可安装一个虚拟机模板,然后克隆出其他虚拟机。其中4台虚拟机运行 peer 节点,另外一台运行 orderer 节点,为其他的四个节点提供order服务。


2.2 生成证书和config.tx


在任意VM上运行 fabric/examples/e2e_cli 目录下的 generateArtifacts.sh 脚本,可生成两个目录,它们分别为 channel-artifacts/ 和 crypto-config/,两个目录的结构分别如下:

   -channel-artifacts 

       -channel.tx

      -genesis.block

       -Org1MSPanchors.tx

       -Org2MSPanchors.tx

上述目录里的文件用于 orderer 创建 channel , 它们根据 configtx.yaml 的配置生成。


  -crypto-config

   -ordererOrganizations

   -peerOrganizations 

上述目录里面有 orderer 和 peer 的证书、私钥和以及用于通信加密的tls证书等文件,它通过 configtx.yaml 配置文件生成。


(未完待续)


【注:下载本文PDF版本,可关注本公众号:亨利笔记,后台发送多节点” 或 DJD即可。】


《区块链技术指南》介绍


更多关于超级账本的信息,以及区块链的技术细节,包括比特币、以太坊、公有链、联盟链、侧链、闪电网络等等,请参考笔者和邹均博士等作者合著的新书《区块链技术指南》机械工业出版社:

京东购买链接:

http://item.jd.com/12007317.html


赠书活动

为感谢广大读者的支持以及庆祝《区块链技术指南》一书首发,现举办圣夏赠书活动,参与方法:


1. 在本文末留言,发表对本文内容或区块链技术的看法;

2. 邀请朋友对您的文后留言点赞,留言点赞数最多的读者胜出。


截止时间:2017年7月7日23点59分,留言点赞数最多的一位读者可获赠价值69元的区块链技术指南一本,并由笔者签名。获奖名单将于留言和公众号中公布,获奖者可在后台告知联系方式和邮寄地址,以往获奖的读者请把机会留给其他读者。



欢迎继续在文后留言交流,亨利笔记主要包含关于区块链、云计算的技术文章,欢迎关注: 

阅读全文
0 0