Hyperledger fablic 1.0 在centos7环境下的安装与部署和动态增加节点

Hyperledger fablic 1.0 在centos7环境下的安装与部署和动态增加节点


一、安装docker

  • 执行代码如下:
curl -sSL https://get.daocloud.io/docker | sh
  • 1
  • 安装完成后,查看安装情况:
docker -v
  • 1

这里写图片描述

二、安装docker-compose

先安装python-pip,具体安装步奏如下:

  • 1.首先安装epel扩展源:
sudo yum -y install epel-release
  • 1
  • 2.然后安装python-pip
sudo yum -y install python-pip
  • 1
  • 3.安装完成后,清除以下缓存 cache
sudo yum clean all
  • 1

下面开始安装docker-compose

  • 1.安装docker-compose:
curl -L https://get.daocloud.io/docker/compose/releases/download/1.9.0/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose
  • 1
  • 2.为docker-compose添加执行权限:
chmod +x /usr/local/bin/docker-compose
  • 1
  • 3.查看安装情况:

这里写图片描述

下面配置一下docker镜像加速,目的是下载镜像速度更快:

curl -sSL https://get.daocloud.io/daotools/set_mirror.sh | sh -s http://860eaa91.m.daocloud.io
  • 1

最后重启一下docker服务:

sudo service docker restart
  • 1

三、安装git

1.安装依赖包:

sudo yum install curl-devel expat-devel gettext-devel openssl-devel zlib-devel gcc perl-ExtUtils-MakeMaker
  • 1

2.下载git源码并解压:

$ wget https://github.com/git/git/archive/v2.3.0.zip
$ unzip v2.3.0.zip
$ cd git-2.3.0
  • 1
  • 2
  • 3

3.编译安装:

make prefix=/usr/local/git all
sudo make prefix=/usr/local/git install
  • 1
  • 2

4.修改环境变量:

sudo vim /etc/profile
然后在文件的最后一行,添加下面的内容,然后保存退出。
export PATH=/usr/local/git/bin:$PATH
  • 1
  • 2
  • 3

5.使用source命令立即保存:

source /etc/profile
  • 1

6.查看版本

git version 
  • 1

这里写图片描述

四、下载镜像

  • 下载镜像命令如下:
docker pull yeasy/hyperledger-fabric-base:latest 
  && docker pull yeasy/hyperledger-fabric-peer:latest 
  && docker pull yeasy/hyperledger-fabric-orderer:latest 
  && docker pull yeasy/hyperledger-fabric-ca:latest 
  && docker pull yeasy/blockchain-explorer:latest 
  && docker tag yeasy/hyperledger-fabric-peer hyperledger/fabric-peer 
  && docker tag yeasy/hyperledger-fabric-orderer hyperledger/fabric-orderer 
  && docker tag yeasy/hyperledger-fabric-ca hyperledger/fabric-ca 
  && docker tag yeasy/hyperledger-fabric-base hyperledger/fabric-baseimage 
  && docker tag yeasy/hyperledger-fabric-base hyperledger/fabric-ccenv:x86_64-1.0.0-preview
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 下载完成后,查看下载镜像
docker images
  • 1

这里写图片描述

五、设置网络

创建2个docker网络,如下:

docker network create fabric_noops
  • 1
docker network create fabric_pbft
  • 1

六、启动集群

  • 1.首先,下载 Compose 模板文件。
git clone https://github.com/yeasy/docker-compose-files
  • 1
  • 2.查看下载情况:

这里写图片描述

  • 3.进入 hyperledger/1.0 目录,查看包括若干模板文件

这里写图片描述

  • 4.快速 启动一个 MVE fabric 集群:
docker-compose up
  • 1
  • 5.查看 启动后的容器镜像:
docker ps -a
  • 1

容器如下:

c10f128ab8f5        hyperledger/fabric-peer                                                                                                                              "peer node start"        16 hours ago        Up 16 hours         7050/tcp, 7052-7059/tcp, 0.0.0.0:7051->7051/tcp   fabric-vp0
443083f3b2b9        hyperledger/fabric-orderer                                                                                                                           "orderer"                16 hours ago        Up 16 hours         0.0.0.0:7050->7050/tcp                            fabric-orderer
08330f858c6f        hyperledger/fabric-cop                                                                                                                               "cop server start ..."   16 hours ago        Up 16 hours         0.0.0.0:8888->8888/tcp                            fabric-cop
  • 1
  • 2
  • 3

容器如图:

这里写图片描述

七、开始部署chaincode

  • 集群启动后,进入 VP 节点,节点名称为 fabric-vp0
docker exec -it fabric-vp0 bash
  • 1

这里写图片描述

  • 部署example02
peer chaincode deploy -n test_cc -p github.com/hyperledger/fabric/examples/chaincode/go/chaincode_example02 -c '{"Args":["init","a","100","b","200"]}'
  • 1

这里写图片描述

  • 查询
peer chaincode invoke -n test_cc -c '{"Args":["query","a"]}'
  • 1

a的值如下:

这里写图片描述

peer chaincode invoke -n test_cc -c '{"Args":["query","b"]}'
  • 1

b的值如下:

这里写图片描述

  • 这时查询容器,会生成一个新的链码的容器,除了原先的3个。

这里写图片描述

  • 转账

交易,a向b转账10元,如下:

peer chaincode invoke -n test_cc -c '{"Args":["invoke","a","b","10"]}'
  • 1

这里写图片描述

  • 转账后,再次查询 
    查询a的值,结果如下:
peer chaincode invoke -n test_cc -c '{"Args":["query","a"]}'
  • 1

这时“a”的值为:**90** ![这里写图片描述](https://img-blog.csdn.net/20170124115510812?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvemhhb2xpYW5nMTEzMQ==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)

再次查询b的值,结果如下:

peer chaincode invoke -n test_cc -c '{"Args":["query","b"]}'
  • 1

这时“b”的值为:**210** ![这里写图片描述](https://img-blog.csdn.net/20170124115633646?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvemhhb2xpYW5nMTEzMQ==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast) 已经完成超级账本的 转账的实例,每转一次,都会记录一个块。

八、动态增加节点

  • 新建一个增加节点的文件,文件名为:add-peer.yml

文件的内容如下:

# This compose file will start a cluster with 1 hyperledger peer nodes
#  vp1: validating node as peer
# https://github.com/yeasy/docker-compose-files

version: '2.0'

services:
  vp1:
    extends:
      file: peer.yml
      service: peer
    container_name: fabric-vp1
    hostname: vp1
    environment:
      - CORE_PEER_ID=vp1
      - CORE_PEER_DISCOVERY_ROOTNODE=172.17.0.2:7051
      - CORE_PEER_COMMITTER_LEDGER_ORDERER=172.17.0.2:7050

#networks:
#  default:
#    external:
#      name: fabric_pbft
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22

这里写图片描述

  • 执行动态增加节点
docker-compose -f add-peer.yml up
  • 1

这里写图片描述

  • 查询现在的容器
b67e34917f38        hyperledger/fabric-peer                                                                                                                              "peer node start"        4 hours ago         Up 4 hours          7050-7059/tcp                                     fabric-vp1
b826ea7b9260        hyperledger/fabric-peer                                                                                                                              "peer node start"        4 hours ago         Up 4 hours          7050/tcp, 7052-7059/tcp, 0.0.0.0:7051->7051/tcp   fabric-vp0
a35046f53af3        hyperledger/fabric-orderer                                                                                                                           "orderer"                4 hours ago         Up 4 hours          0.0.0.0:7050->7050/tcp                            fabric-orderer
78acca35125b        hyperledger/fabric-ca                                                                                                                                "fabric-ca server ..."   4 hours ago         Up 4 hours          7054/tcp, 0.0.0.0:8888->8888/tcp                  fabric-ca
  • 1
  • 2
  • 3
  • 4
  • 5

这里写图片描述

说明动态创建已经成功。下面验证一下这些节点是否关联一块。

  • 进入动态创建的”fabric-vp1”容器里
docker exec -it fabric-vp1 bash
  • 1

这里写图片描述

  • 执行查询

查询a的值为:

peer chaincode invoke -n test_cc -c '{"Args":["query","a"]}'
  • 1

这时“a”的值为:90

这里写图片描述

查询b的值为:

peer chaincode invoke -n test_cc -c '{"Args":["query","b"]}'
  • 1

这时“b”的值为:210

这里写图片描述

  • 执行转账

在 fabric-vp1容器里 ,执行交易,a再向b转账10元,如下:

peer chaincode invoke -n test_cc -c '{"Args":["invoke","a","b","10"]}'
  • 1

这里写图片描述

  • 转账后,再次查询 
    “fabric-vp1”容器里,查询a的值,结果如下:
peer chaincode invoke -n test_cc -c '{"Args":["query","a"]}'
  • 1

这时“a”的值为:**80** ![这里写图片描述](https://img-blog.csdn.net/20170206192205707?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvemhhb2xpYW5nMTEzMQ==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)

再次查询b的值,结果如下:

peer chaincode invoke -n test_cc -c '{"Args":["query","b"]}'
  • 1

这时“b”的值为:**220** ![这里写图片描述](https://img-blog.csdn.net/20170206192328771?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvemhhb2xpYW5nMTEzMQ==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)

我们进入 “fabric-vp0”执行查询看看数值是否变化,在vp0容器里查询a的值应该为“80”,b的值应该为“220”。下面我们来验证下:

  • 进入”fabric-vp0”容器里
docker exec -it fabric-vp0 bash
  • 1

这里写图片描述

 

  • 执行查询 

 

查询a的值为:
peer chaincode invoke -n test_cc -c '{"Args":["query","a"]}'
  • 1

这时“a”的值为:80,说明已经关联在一起

这里写图片描述

查询b的值为:

peer chaincode invoke -n test_cc -c '{"Args":["query","b"]}'
  • 1

这时“b”的值为:220,说明节点是关联在一起的。

这里写图片描述

 

Hyperledger fablic 1.0 在centos7环境下的安装与部署和动态增加节点


一、安装docker

  • 执行代码如下:
curl -sSL https://get.daocloud.io/docker | sh
  • 1
  • 安装完成后,查看安装情况:
docker -v
  • 1

这里写图片描述

二、安装docker-compose

先安装python-pip,具体安装步奏如下:

  • 1.首先安装epel扩展源:
sudo yum -y install epel-release
  • 1
  • 2.然后安装python-pip
sudo yum -y install python-pip
  • 1
  • 3.安装完成后,清除以下缓存 cache
sudo yum clean all
  • 1

下面开始安装docker-compose

  • 1.安装docker-compose:
curl -L https://get.daocloud.io/docker/compose/releases/download/1.9.0/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose
  • 1
  • 2.为docker-compose添加执行权限:
chmod +x /usr/local/bin/docker-compose
  • 1
  • 3.查看安装情况:

这里写图片描述

下面配置一下docker镜像加速,目的是下载镜像速度更快:

curl -sSL https://get.daocloud.io/daotools/set_mirror.sh | sh -s http://860eaa91.m.daocloud.io
  • 1

最后重启一下docker服务:

sudo service docker restart
  • 1

三、安装git

1.安装依赖包:

sudo yum install curl-devel expat-devel gettext-devel openssl-devel zlib-devel gcc perl-ExtUtils-MakeMaker
  • 1

2.下载git源码并解压:

$ wget https://github.com/git/git/archive/v2.3.0.zip
$ unzip v2.3.0.zip
$ cd git-2.3.0
  • 1
  • 2
  • 3

3.编译安装:

make prefix=/usr/local/git all
sudo make prefix=/usr/local/git install
  • 1
  • 2

4.修改环境变量:

sudo vim /etc/profile
然后在文件的最后一行,添加下面的内容,然后保存退出。
export PATH=/usr/local/git/bin:$PATH
  • 1
  • 2
  • 3

5.使用source命令立即保存:

source /etc/profile
  • 1

6.查看版本

git version 
  • 1

这里写图片描述

四、下载镜像

  • 下载镜像命令如下:
docker pull yeasy/hyperledger-fabric-base:latest 
  && docker pull yeasy/hyperledger-fabric-peer:latest 
  && docker pull yeasy/hyperledger-fabric-orderer:latest 
  && docker pull yeasy/hyperledger-fabric-ca:latest 
  && docker pull yeasy/blockchain-explorer:latest 
  && docker tag yeasy/hyperledger-fabric-peer hyperledger/fabric-peer 
  && docker tag yeasy/hyperledger-fabric-orderer hyperledger/fabric-orderer 
  && docker tag yeasy/hyperledger-fabric-ca hyperledger/fabric-ca 
  && docker tag yeasy/hyperledger-fabric-base hyperledger/fabric-baseimage 
  && docker tag yeasy/hyperledger-fabric-base hyperledger/fabric-ccenv:x86_64-1.0.0-preview
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 下载完成后,查看下载镜像
docker images
  • 1

这里写图片描述

五、设置网络

创建2个docker网络,如下:

docker network create fabric_noops
  • 1
docker network create fabric_pbft
  • 1

六、启动集群

  • 1.首先,下载 Compose 模板文件。
git clone https://github.com/yeasy/docker-compose-files
  • 1
  • 2.查看下载情况:

这里写图片描述

  • 3.进入 hyperledger/1.0 目录,查看包括若干模板文件

这里写图片描述

  • 4.快速 启动一个 MVE fabric 集群:
docker-compose up
  • 1
  • 5.查看 启动后的容器镜像:
docker ps -a
  • 1

容器如下:

c10f128ab8f5        hyperledger/fabric-peer                                                                                                                              "peer node start"        16 hours ago        Up 16 hours         7050/tcp, 7052-7059/tcp, 0.0.0.0:7051->7051/tcp   fabric-vp0
443083f3b2b9        hyperledger/fabric-orderer                                                                                                                           "orderer"                16 hours ago        Up 16 hours         0.0.0.0:7050->7050/tcp                            fabric-orderer
08330f858c6f        hyperledger/fabric-cop                                                                                                                               "cop server start ..."   16 hours ago        Up 16 hours         0.0.0.0:8888->8888/tcp                            fabric-cop
  • 1
  • 2
  • 3

容器如图:

这里写图片描述

七、开始部署chaincode

  • 集群启动后,进入 VP 节点,节点名称为 fabric-vp0
docker exec -it fabric-vp0 bash
  • 1

这里写图片描述

  • 部署example02
peer chaincode deploy -n test_cc -p github.com/hyperledger/fabric/examples/chaincode/go/chaincode_example02 -c '{"Args":["init","a","100","b","200"]}'
  • 1

这里写图片描述

  • 查询
peer chaincode invoke -n test_cc -c '{"Args":["query","a"]}'
  • 1

a的值如下:

这里写图片描述

peer chaincode invoke -n test_cc -c '{"Args":["query","b"]}'
  • 1

b的值如下:

这里写图片描述

  • 这时查询容器,会生成一个新的链码的容器,除了原先的3个。

这里写图片描述

  • 转账

交易,a向b转账10元,如下:

peer chaincode invoke -n test_cc -c '{"Args":["invoke","a","b","10"]}'
  • 1

这里写图片描述

  • 转账后,再次查询 
    查询a的值,结果如下:
peer chaincode invoke -n test_cc -c '{"Args":["query","a"]}'
  • 1

这时“a”的值为:**90** ![这里写图片描述](https://img-blog.csdn.net/20170124115510812?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvemhhb2xpYW5nMTEzMQ==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)

再次查询b的值,结果如下:

peer chaincode invoke -n test_cc -c '{"Args":["query","b"]}'
  • 1

这时“b”的值为:**210** ![这里写图片描述](https://img-blog.csdn.net/20170124115633646?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvemhhb2xpYW5nMTEzMQ==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast) 已经完成超级账本的 转账的实例,每转一次,都会记录一个块。

八、动态增加节点

  • 新建一个增加节点的文件,文件名为:add-peer.yml

文件的内容如下:

# This compose file will start a cluster with 1 hyperledger peer nodes
#  vp1: validating node as peer
# https://github.com/yeasy/docker-compose-files

version: '2.0'

services:
  vp1:
    extends:
      file: peer.yml
      service: peer
    container_name: fabric-vp1
    hostname: vp1
    environment:
      - CORE_PEER_ID=vp1
      - CORE_PEER_DISCOVERY_ROOTNODE=172.17.0.2:7051
      - CORE_PEER_COMMITTER_LEDGER_ORDERER=172.17.0.2:7050

#networks:
#  default:
#    external:
#      name: fabric_pbft
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22

这里写图片描述

  • 执行动态增加节点
docker-compose -f add-peer.yml up
  • 1

这里写图片描述

  • 查询现在的容器
b67e34917f38        hyperledger/fabric-peer                                                                                                                              "peer node start"        4 hours ago         Up 4 hours          7050-7059/tcp                                     fabric-vp1
b826ea7b9260        hyperledger/fabric-peer                                                                                                                              "peer node start"        4 hours ago         Up 4 hours          7050/tcp, 7052-7059/tcp, 0.0.0.0:7051->7051/tcp   fabric-vp0
a35046f53af3        hyperledger/fabric-orderer                                                                                                                           "orderer"                4 hours ago         Up 4 hours          0.0.0.0:7050->7050/tcp                            fabric-orderer
78acca35125b        hyperledger/fabric-ca                                                                                                                                "fabric-ca server ..."   4 hours ago         Up 4 hours          7054/tcp, 0.0.0.0:8888->8888/tcp                  fabric-ca
  • 1
  • 2
  • 3
  • 4
  • 5

这里写图片描述

说明动态创建已经成功。下面验证一下这些节点是否关联一块。

  • 进入动态创建的”fabric-vp1”容器里
docker exec -it fabric-vp1 bash
  • 1

这里写图片描述

  • 执行查询

查询a的值为:

peer chaincode invoke -n test_cc -c '{"Args":["query","a"]}'
  • 1

这时“a”的值为:90

这里写图片描述

查询b的值为:

peer chaincode invoke -n test_cc -c '{"Args":["query","b"]}'
  • 1

这时“b”的值为:210

这里写图片描述

  • 执行转账

在 fabric-vp1容器里 ,执行交易,a再向b转账10元,如下:

peer chaincode invoke -n test_cc -c '{"Args":["invoke","a","b","10"]}'
  • 1

这里写图片描述

  • 转账后,再次查询 
    “fabric-vp1”容器里,查询a的值,结果如下:
peer chaincode invoke -n test_cc -c '{"Args":["query","a"]}'
  • 1

这时“a”的值为:**80** ![这里写图片描述](https://img-blog.csdn.net/20170206192205707?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvemhhb2xpYW5nMTEzMQ==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)

再次查询b的值,结果如下:

peer chaincode invoke -n test_cc -c '{"Args":["query","b"]}'
  • 1

这时“b”的值为:**220** ![这里写图片描述](https://img-blog.csdn.net/20170206192328771?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvemhhb2xpYW5nMTEzMQ==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)

我们进入 “fabric-vp0”执行查询看看数值是否变化,在vp0容器里查询a的值应该为“80”,b的值应该为“220”。下面我们来验证下:

  • 进入”fabric-vp0”容器里
docker exec -it fabric-vp0 bash
  • 1

这里写图片描述

 

  • 执行查询 

 

查询a的值为:
peer chaincode invoke -n test_cc -c '{"Args":["query","a"]}'
  • 1

这时“a”的值为:80,说明已经关联在一起

这里写图片描述

查询b的值为:

peer chaincode invoke -n test_cc -c '{"Args":["query","b"]}'
  • 1

这时“b”的值为:220,说明节点是关联在一起的。

这里写图片描述

 

  • 最后查看下镜像和容器 

 

查看镜像:

docker images
  • 1

可以看到vp1也有一个镜像,说明vp1已经创建好容器

原文地址:https://www.cnblogs.com/dqh123/p/9413837.html