• 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已经创建好容器

  • 相关阅读:
    SpringBoot系统列 4
    SpringBoot系统列 3
    SpringBoot系统列 2
    SpringBoot系统列 1
    Nginx+Keepalived+Tomcat高可用负载均衡,Zookeeper集群配置,Mysql(MariaDB)搭建,Redis安装,FTP配置
    Java分布式集群,使用synchronized和Redis保证Job的原子性
    Linux 公网IP和内网IP,Dubbo提供者注册到了内网IP上怎么处理!
    SpringMvc自动任务调度之task实现项目源码,@Scheduled
    SFTP工具类
    Java代码实现文件添加数字签名、验证数字签名
  • 原文地址:https://www.cnblogs.com/dqh123/p/9413837.html
Copyright © 2020-2023  润新知