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

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

币学院 副船长 船龄 5.9年 来源 亨利笔记
 46596  3
( 注:部署过程中大量使用了 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 配置文件生成。

(未完待续)
  • 全部
  • 最佳
登录 账号发表你的看法,还没有账号?立即免费 注册
推荐教程
换一批