您的位置:新葡亰496net > 奥门新萄京娱乐场 > 区块链多机集群框架搭建实战记录,运转测验e

区块链多机集群框架搭建实战记录,运转测验e

发布时间:2019-07-28 22:39编辑:奥门新萄京娱乐场浏览(90)

    3:运行测试e2e

    最近开始学习Fabric1.0,当搭建软件环境的时候遇到了各种坑,通过网上教程和QQ群热心人的解答终于把环境搭建好了,在此感谢那些帮助过我并为普及区块链技术无私奉献过的爱好者们。以下是我搭建环境的全过程,使用的系统是ubuntu16.04.4版本。

    fabric多机部署——4 1模式5台虚拟机部署

    Hyperledger Fabric 1.0 安装过程:

    3.1、运行fabric-samples的问题说明

    该问题说明能够解决6.1、平台特定使用的二进制文件配置第一步的问题。可以选择继续阅读该说明,或者等参考到6.1小节时再反向阅读本说明,具体在6.1中会重新指向本步骤。

    一般情况下,我们会参照官网来完成第一个网络测试,在该在线文档中会让我们去下载一个fabric-samples,下载地址在github上,我们需要将其下载至本地是一个fabric-samples-release文件夹,将其更名为fabric-samples随后上传至opt/gopath/src目录下。

    按照官网提示执行的命令是无法运行起first-network这个项目,该demo需要先下载 Platform-specific Binaries(特定的二进制文件),按照官方文档中的描述,需要先执行如下命令:

    curl -sSL https://goo.gl/iX9dek | bash
    

    上述命令会下载自动化部署脚本,同时也会下载平台特定使用的二进制文件才cryptogen、configtxgen、configtxlator以及peer,把他们放到上述仓库的bin目录下。

    通常执行上述命令并不能下载,即便是能下载,速度也奇慢无比,故此,我们离线下载相关二进制文件来执行上述操作。

    可以在

    在官网给出的执行命令中并没有给出离线下载地址,且官网也没有离线部署说明,我们可以在1.4.2中下载的fabric源码中找到下载地址,在/opt/gopath/src/github.com/hyperledger/fabric/scripts目录下有一个bootstrap-1.0.0.sh脚本文件,事实上如果外网访问条件优越的情况下,直接运行该脚本即可下载所有所需的fabric镜像文件及官方指定所需的二进制文件。

    打开bootstrap-1.0.0.sh(目前最新版为1.0.0,以实际为准),找到其中对“Downloading platform binaries”的输出行,目前所见是“echo "===> Downloading platform binaries"”,查看其指向的下载地址,可以得到一个官网提供的离线下载网址,根据上下文意思及当前我们所使用的版本信息,可以得到最终的离线下载文件地址,下载该文件到本地。

    根据官网的介绍,解压后会得到一个bin文件夹,将其解压至/opt/gopath/src/github.com/hyperledger/fabric-samples目录下即可运行first-network等项目。

     

    一、 安装GO语言环境

    1. 下载GO1.10压缩文件(在 ~/ 目录下)

    wget https://storage.googleapis.com/golang/go1.10.linux-amd64.tar.gz

    但是总会不时的出现网络不可达的错误,如果出现了这个错误,

    新葡亰496net 1

    可以用下面我下载好的压缩包:

    链接: https://pan.baidu.com/s/1RxISpz8WamHS3l6yYmfSlA 密码: 8pnm

    就复制到当前文件夹中就行。
    2. 解压并移动到/usr/local文件夹下

    sudo tar -C /usr/local -xzf go1.10.linux-amd64.tar.gz

    3. 设置GOPATH环境变量
    ① 打开环境变量配置文件:

    vi ~/.profile

    ②在文件后面增加下面代码:

    export PATH=$PATH:/usr/local/go/bin
    export GOROOT=/usr/local/go
    export GOPATH=$HOME/go
    export PATH=$PATH:$HOME/go/bin

    然后保存并退出
    ③重新载入环境文件

    source ~/.profile

    4. 测试GO是否配置好
    在命令行中输入

    go version

    如果输出:
    go version go1.10 linux/amd64
    则表示GO配置成功。

    一、首先准备5台虚拟机:

    (如下安装基于设备可以连接外网)

    3.2、运行e2e_cli项目

    进入到/opt/gopath/src/github.com/hyperledger/fabric/examples/e2e_cli目录下,文件结构如下图所示:

    新葡亰496net 2

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

    通过以下命令执行测试:

    bash network_setup.sh up
    

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

    新葡亰496net 3

    这个命令可以在本机启动4 1的Fabric网络并且进行测试,跑Example02这个ChainCode。我们可以看到每一步的操作,最后确认单机没有问题。确认我们的镜像和脚本都是正常的,我们就可以关闭Fabric网络,继续我们的多机Fabric网络设置工作。关闭Fabric命令:

    bash network_setup.sh down
    

     

    二、安装docker

    1. 用官方提供的脚本安装docker:

    curl -sSL https://get.docker.com | sh

    2. 把用户加入到docker组:

    sudo usermod -aG docker XXX(你的用户名)

    3. 注销并重新登录,然后添加阿里云的Docker Hub镜像:

    ① sudo mkdir -p /etc/docker
    ② sudo tee /etc/docker/daemon.json <<-'EOF'
    {
    "registry-mirrors": ["https://obou6wyb.mirror.aliyuncs.com"]
    }
    EOF
    ③ sudo systemctl daemon-reload
    ④ sudo systemctl restart docker

    4. 检查:
    输入:

    docker version

    如果出现如下面的则表示成功:

    新葡亰496net 4

    新葡亰496net 5

    (基于ubuntu)

    3.3、e2e_cli与Linux内核bug

    该Fabric网络集群测试环境在Linux内核低版本上可能会出现问题,这是旧版内核的bug,比如在执行bash network_setup.sh up的时候会出现如下错误:

    新葡亰496net 6

    即执行chaincode初始化的时候报错,导致集群单机无法启动。

    解决方案,使用最新版稳定版的docker(笔者写文档时的最新稳定版为:17.06.0-ce),将Linux内核升级到最新版,笔者原先使用的Linux内核是3.10,出现了上述问题,目前笔者使用的内核版本是4.12.5-1.e17,能够完美运行Fabric集群环境。

    具体可以参考Can´t specify memory limit in docker run and docker compose

     

    三、安装docker-compose

    1. 安装Python-pip

    sudo apt-get install python-pip

    2. 安装docker-compose

    curl -L https://get.daocloud.io/docker/compose/releases/download/1.12.0/docker-compose-`uname -s`-`uname -m` > ~/docker-compose

    3. 移动路径:

    sudo mv ~/docker-compose /usr/local/bin/docker-compose

    4. 添加权限:

    chmod x /usr/local/bin/docker-compose

    5. 检查:
    在命令行输入检查版本信息命令:

    docker-compose -version

    当出现类似下面的版本信息则表示安装成功:

    新葡亰496net 7

    下面的前几步都是在单机(peer0.org1.com节点的服务器上)上配置文件,配置好后会将文件依次复制到其他各自的节点上。

    一、安装Docker、docker-compose等基础

    四、Fabric源码下载

    1. 创建安装路径并进入创建的路径:

    ① mkdir –p ~/go/src/github.com/hyperledger
    ② cd ~/go/src/github.com/hyperledger

    2. 下载源码:

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

    3. 切换到v1.0.0版本的源码:

    ① cd ~/go/src/github.com/hyperledger/fabric
    ② git checkout v1.0.0

    在进行下面第二步之前,先要执行./network_setup.sh down关掉之前的单机部署。

    1、Docker建议直接使用官网指引进行最新版本的安装,链接:

    *五、下载Docker镜像文件

    1. 进入fabric/scripts目录,并修改权限:

    ① cd ~/go/src/github.com/hyperledger/fabric/scripts/
    ② chmod x bootstrap-1.0.0.sh

    2. 运行脚本下载Docker镜像文件:

    ./bootstrap-1.0.0.sh

    3. 检查:
    用查看镜像源指令:

    docker images

    如果出现下面类似的情况则表示成功:

    新葡亰496net 8

    二、生成公私钥、证书、创世区块等

    https://docs.docker.com/engine/installation/linux/docker-ce/ubuntu/#upgrade-docker-ce

    **六、测试网络

    1. 更换当前位置文件夹:

    cd ~/go/src/github.com/hyperledger/fabric/examples/e2e_cli/

    2. 脚本down

    sudo ./network_setup.sh down

    (在配置环境时遇到很多次错误,就是在下面的操作up脚本后出现的,其实先用down命令执行后这个问题能解决,这个步骤不是必要的)
    3. up脚本

    sudo ./network_setup.sh up

    当出现下面的结果时则表示成功了:

    新葡亰496net 9

    image.png

    4. 模拟交易测试
    我们重新打开一个终端窗口
    ①首先进入CLI

    docker exec -it cli bash

    ②查询a账户的余额

    peer chaincode query -C mychannel -n mycc -c '{"Args":["query","a"]}'

    ③把a账户的余额再转20元给b账户

    peer chaincode invoke -o orderer.example.com:7050 --tls true --cafile /opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/ordererOrganizations/example.com/orderers/orderer.example.com/msp/tlscacerts/tlsca.example.com-cert.pem -C mychannel -n mycc -c '{"Args":["invoke","a","b","20"]}'

    如果出现下面的情况 则表示成功:

    新葡亰496net 10

    ④退出模拟
    exit

    cd ~/go/src/github.com/hyperledger/fabric/examples/e2e_cli/

    ./network_setup.sh down

    公私钥和证书是用于Server和Server之间的安全通信,另外要创建Channel并让其他节点加入Channel就需要创世区块,这些必备文件都可以一个命令生成,官方已经给出了脚本:

    2、docker-compose也建议直接使用官网进行最新版本的安装,链接:

    七、问题

    如果上面那些过程都能成功,则恭喜fabric环境配置好了,但是我在ubuntu中一直会出现一个问题,就是提示:

    新葡亰496net 11

    通过好心人的帮助我终于解决了这个问题:
    该问题其实就是没有cryptogen文件引起的,这个问题到底是哪儿出错到现在都不知,在这里提供能够解决这个问题办法,就是把别人有用的该文件放在正确的位置。
    该文件我提供下面的百度云链接:

    链接: https://pan.baidu.com/s/1wJ0zG_FH2poyhfFW4jqXHw 密码: 2u9j

    把该文件解压到~/go/src/github.com/hyperledger/fabric/release/ 路径下面,然后从上面的六、测试网络开始重新执行一遍,我就是这样解决这个问题的。

    ./generateArtifacts.sh mychannel

    https://docs.docker.com/compose/install/#install-compose

    运行结果如下:

    如果链接失效之类的,可以直接从GITHUB的这个链接下载二进制文件:

    新葡亰496net 12

    https://github.com/docker/compose/releases

    运行这个命令后,系统会创建channel-artifacts文件夹,里面包含了mychannel这个通道相关的文件,另外还有一个crypto-config文件夹,里面包含了各个节点的公私钥和证书的信息。

    直接安装命令:

    三、设置peer节点的docker-compose文件

    sudo curl -L -s`-`uname -m` -o /usr/local/bin/docker-compose

    e2e_cli中提供了多个yaml文件,我们可以基于docker-compose-cli.yaml文件创建(注意,这里的peer节点文件有4个,分别是peer0.org1, peer1.org1, peer0.org2, peer1.org2。后面会依次表明所有这4个节点的peer文件配置内容 ):

    或者直接下载二进制文件进行安装。

    cp docker-compose-cli.yaml docker-compose-peer.yaml

    3、安装go环境

    新葡亰496net 13

    wget

    然后修改docker-compose-peer.yaml,去掉orderer的配置,只保留peer和cli,因为我们要多机部署,节点与节点之前又是通过主机名通讯,所以需要修改容器中的host文件,也就是extra_hosts设置,修改后的peer(准确的来说,这里的peer是peer0.org1节点,剩余的其他3个peer节点会在这个peer0.org1节点的配置文件上再修改)配置如下:

    sudo tar -C /usr/local -xzf go1.9.linux-amd64.tar.gz

    peer0.org1.example.com:

    但如果链接不了,那么就自行上网下载相关软件,直接解压即可。

    container_name: peer0.org1.example.com

    然后设定相关的环境变量:

    extends:

    PATH、GOROOT、GOPATH

    file: base/docker-compose-base.yaml

    相关用户重新登录

    service: peer0.org1.example.com

    二、下载和安装Hyperledger/Fabric

    extra_hosts:

    1、下载Hyperledger/Fabric的源码

    - "orderer.example.com:192.168.121.141"

    先建立用户。

    cli:

    mkdir –p ~/go/src/github.com/hyperledger

    container_name: cli

    cd ~/go/src/github.com/hyperledger

    image: hyperledger/fabric-tools

    git clonehttps://github.com/hyperledger/fabric.git

    tty: true

    git checkout v1.0.4 (不要使用最新代码,使用稳定版本即可,否则可能会导致后面步骤出错)

    environment:

    2、下载Hyperledger/Fabric的镜像

    - GOPATH=/opt/gopath

    cd ~/go/src/github.com/hyperledger/fabric/examples/e2e_cli/

    - CORE_VM_ENDPOINT=unix:///host/var/run/docker.sock

    source download-dockerimages.sh -c x86_64-1.0.0 -f x86_64-1.0.0

    - CORE_LOGGING_LEVEL=DEBUG

    镜像的tag可以直接到docker的官网上查看,比如peer的:

    - CORE_PEER_ID=cli

    https://store.docker.com/communityhyperledger/fabric-peer/tags

    - CORE_PEER_ADDRESS=peer0.org1.example.com:7051

    默认镜像在docker的官网上,因此这个操作经常断开或者卡顿,出现时ctrl c端掉shellscript,然后重连直到镜像拉完整即可。或者直接从国内的各种网盘进行下载。

    - CORE_PEER_LOCALMSPID=Org1MSP

    一共8个镜像,分别是:peer、orderer、couchdb、ccenv、javaenv、kafka、tools、zookeeper

    - CORE_PEER_TLS_ENABLED=true

    镜像下载完毕后,docker images命令的输出如下:

    - CORE_PEER_TLS_CERT_FILE=/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/tls/server.crt

    REPOSITORY                    TAG                IMAGE ID            CREATED            SIZE

    - CORE_PEER_TLS_KEY_FILE=/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/tls/server.key

    hyperledger/fabric-ca          latest              8e691b3509bf        2 weeks ago        238MB

    - CORE_PEER_TLS_ROOTCERT_FILE=/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/tls/ca.crt

    hyperledger/fabric-ca          x86_64-1.0.4        8e691b3509bf        2 weeks ago        238MB

    - CORE_PEER_MSPCONFIGPATH=/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org1.example.com/users/Admin@org1.example.com/msp

    hyperledger/fabric-tools      latest              6051774928a6        2 weeks ago        1.33GB

    working_dir: /opt/gopath/src/github.com/hyperledger/fabric/peer

    hyperledger/fabric-tools      x86_64-1.0.4        6051774928a6        2 weeks ago        1.33GB

    volumes:

    hyperledger/fabric-couchdb    latest              cf24b91dfeb1        2 weeks ago        1.5GB

    - /var/run/:/host/var/run/

    hyperledger/fabric-couchdb    x86_64-1.0.4        cf24b91dfeb1        2 weeks ago        1.5GB

    - ../chaincode/go/:/opt/gopath/src/github.com/hyperledger/fabric/examples/chaincode/go

    hyperledger/fabric-kafka      latest              7a9d6f3c4a7c        2 weeks ago        1.29GB

    - ./crypto-config:/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/

    hyperledger/fabric-kafka      x86_64-1.0.4        7a9d6f3c4a7c        2 weeks ago        1.29GB

    - ./scripts:/opt/gopath/src/github.com/hyperledger/fabric/peer/scripts/

    新葡亰496net,hyperledger/fabric-zookeeper  latest              53c4a0d95fd4        2 weeks ago        1.3GB

    - ./channel-artifacts:/opt/gopath/src/github.com/hyperledger/fabric/peer/channel-artifacts

    hyperledger/fabric-zookeeper  x86_64-1.0.4        53c4a0d95fd4        2 weeks ago        1.3GB

    depends_on:

    hyperledger/fabric-orderer    latest              b17741e7b036        2 weeks ago        151MB

    - peer0.org1.example.com

    hyperledger/fabric-orderer    x86_64-1.0.4        b17741e7b036        2 weeks ago        151MB

    extra_hosts:

    hyperledger/fabric-peer        latest              1ce935adc397        2 weeks ago        154MB

    - "orderer.example.com:192.168.121.141"

    hyperledger/fabric-peer        x86_64-1.0.4        1ce935adc397        2 weeks ago        154MB

    - "peer0.org1.example.com:192.168.121.142"

    hyperledger/fabric-javaenv    latest              a517b70135c7        2 weeks ago        1.41GB

    - "peer1.org1.example.com:192.168.121.143"

    hyperledger/fabric-javaenv    x86_64-1.0.4        a517b70135c7        2 weeks ago        1.41GB

    - "peer0.org2.example.com:192.168.121.144"

    hyperledger/fabric-ccenv      latest              856061b1fed7        2 weeks ago        1.28GB

    - "peer1.org2.example.com:192.168.121.145"

    hyperledger/fabric-ccenv      x86_64-1.0.4        856061b1fed7        2 weeks ago        1.28GB

    在单击模式下,4个peer会映射主机不同的端口,但是我们在多机部署的时候是不需要映射不同端口的,所以需要修改base/docker-compose-base.yaml文件,将所有peer的端口映射都改为相同的:

    三、基本测试

    ports:

    1、先下载额外的镜像并做好tag

    - 7051:7051

    docker pull hyperledger/fabric-baseos:x86_64-0.4.2

    - 7052:7052

    docker tag hyperledger/fabric-baseos:x86_64-0.4.2 hyperledger/fabric-baseos:latest

    - 7053:7053

    (实际测试脚本中需要这个镜像,记得下载。)

    四、设置orderer节点的docker-compose文件

    2、使用源码的基本脚本启动和测试。

    与创建peer的配置文件类似,我们也复制一个yaml文件出来进行修改:

    cd ~/go/src/github.com/hyperledger/fabric/examples/e2e_cli/

    cp docker-compose-cli.yaml docker-compose-orderer.yaml

    ./network_setup.sh up

    orderer服务器上我们只需要保留order设置,其他peer和cli设置都可以删除。orderer可以不设置extra_hosts。配置文件结果如下:

    命令完成后最后显示:

    新葡亰496net 14

    新葡亰496net 15

    五、分发配置文件

    这时可以ctrl c结束,运行docker ps可以看到启动的镜像如下:

    前面4步的操作,我们都是在peer0.org1.com上完成的,接下来我们需要将这些文件分发到另外4台服务器上。Linux之间的文件传输,我们可以使用scp命令。

    新葡亰496net 16

    先登录orderer.example.com,将本地的e2e_cli文件夹删除:

    四、额外的手工测试

    rm e2e_cli –R

    (在上述./network_setup up成果的基础上测试,不要运行./network_setup down等关闭命令。)

    然后再登录到peer0.org1.com服务器上,退回到examples文件夹,因为这样可以方便的把其下的e2e_cli文件夹整个传到orderer服务器上。

    (官方默认的channel名称为mychannel,链码名为mycc)

    scp -r e2e_cli fabric@10.51.120.220:/home/fabric/go/src/github.com/hyperledger/fabric/examples/

    1、进入cli镜像

    以上对于orderer.examples.com配置文件复制完毕。下面依次再次运行scp命令,复制到peer1.org1.example.com上,然后我们需要对docker-compose-peer.yaml做一个小小的修改,将启动的容器改为peer1.org1.example.com,并且添加peer0.org1.example.com的IP映射,对应的cli中也改成对peer1.org1.example.com的依赖。这是修改后的peer1.org1.example.com上的配置文件:

    docker exec -it cli bash

    version: '2'

    2、查询a账户的余额

    services:

    peer chaincode query -C mychannel -n mycc -c '{"Args":["query","a"]}'

    peer1.org1.example.com:

    新葡亰496net 17

    container_name: peer1.org1.example.com

    3、从a账户转账20元到b账户

    extends:

    peer chaincode invoke -o orderer.example.com:7050  --tls true --cafile /opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/ordererOrganizations/example.com/orderers/orderer.example.com/msp/tlscacerts/tlsca.example.com-cert.pem  -C mychannel -n mycc -c '{"Args":["invoke","a","b","20"]}'

    file: base/docker-compose-base.yaml

    新葡亰496net 18

    service: peer1.org1.example.com

    4、确认a账户的余额

    extra_hosts:

    新葡亰496net 19

    - "orderer.example.com:192.168.121.141"

    至此Hyperledger Fabric 1.0的环境构建完毕,剩下的就是自行根据业务开发智能合约了。

    - "peer0.org1.example.com:192.168.121.142"

    cli:

    container_name: cli

    image: hyperledger/fabric-tools

    tty: true

    environment:

    - GOPATH=/opt/gopath

    - CORE_VM_ENDPOINT=unix:///host/var/run/docker.sock

    - CORE_LOGGING_LEVEL=DEBUG

    - CORE_PEER_ID=cli

    - CORE_PEER_ADDRESS=peer1.org1.example.com:7051

    - CORE_PEER_LOCALMSPID=Org1MSP

    - CORE_PEER_TLS_ENABLED=true

    -区块链多机集群框架搭建实战记录,运转测验e2e。 CORE_PEER_TLS_CERT_FILE=/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org1.example.com/peers/peer1.org1.example.com/tls/server.crt

    - CORE_PEER_TLS_KEY_FILE=/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org1.example.com/peers/peer1.org1.example.com/tls/server.key

    - CORE_PEER_TLS_ROOTCERT_FILE=/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org1.example.com/peers/peer1.org1.example.com/tls/ca.crt

    - CORE_PEER_MSPCONFIGPATH=/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org1.example.com/users/Admin@org1.example.com/msp

    working_dir: /opt/gopath/src/github.com/hyperledger/fabric/peer

    volumes:

    - /var/run/:/host/var/run/

    - ../chaincode/go/:/opt/gopath/src/github.com/hyperledger/fabric/examples/chaincode/go

    - ./crypto-config:/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/

    - ./scripts:/opt/gopath/src/github.com/hyperledger/fabric/peer/scripts/

    - ./channel-artifacts:/opt/gopath/src/github.com/hyperledger/fabric/peer/channel-artifacts

    depends_on:

    - peer1.org1.example.com

    extra_hosts:

    - "orderer.example.com:192.168.121.141"

    - "peer0.org1.example.com:192.168.121.142"

    - "peer1.org1.example.com:192.168.121.143"

    - "peer0.org2.example.com:192.168.121.144"

    - "peer1.org2.example.com:192.168.121.145"

    接下来继续使用scp命令将peer0.org1.com上的文件夹传送给peer0.org2.example.com和peer1.org2.example.com,然后也是修改一下docker-compose-peer.yaml文件,使得其启动对应的peer节点。

    peer0.org2.example.com的docker-compose-peer.yaml配置文件:

    version: '2'

    services:

    peer0.org2.example.com:

    container_name: peer0.org2.example.com

    extends:

    file: base/docker-compose-base.yaml

    service: peer0.org2.example.com

    extra_hosts:

    - "orderer.example.com:192.168.121.141"

    - "peer0.org1.example.com:192.168.121.142"

    cli:

    container_name: cli

    image: hyperledger/fabric-tools

    tty: true

    environment:

    - GOPATH=/opt/gopath

    - CORE_VM_ENDPOINT=unix:///host/var/run/docker.sock

    - CORE_LOGGING_LEVEL=DEBUG

    - CORE_PEER_ID=cli

    - CORE_PEER_ADDRESS=peer0.org2.example.com:7051

    - CORE_PEER_LOCALMSPID=Org2MSP

    - CORE_PEER_TLS_ENABLED=true

    - CORE_PEER_TLS_CERT_FILE=/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org2.example.com/peers/peer0.org2.example.com/tls/server.crt

    - CORE_PEER_TLS_KEY_FILE=/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org2.example.com/peers/peer0.org2.example.com/tls/server.key

    - CORE_PEER_TLS_ROOTCERT_FILE=/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org2.example.com/peers/peer0.org2.example.com/tls/ca.crt

    - CORE_PEER_MSPCONFIGPATH=/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org2.example.com/users/Admin@org2.example.com/msp

    working_dir: /opt/gopath/src/github.com/hyperledger/fabric/peer

    volumes:

    - /var/run/:/host/var/run/

    - ../chaincode/go/:/opt/gopath/src/github.com/hyperledger/fabric/examples/chaincode/go

    -区块链多机集群框架搭建实战记录,运转测验e2e。 ./crypto-config:/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/

    - ./scripts:/opt/gopath/src/github.com/hyperledger/fabric/peer/scripts/

    - ./channel-artifacts:/opt/gopath/src/github.com/hyperledger/fabric/peer/channel-artifacts

    depends_on:

    - peer0.org2.example.com

    extra_hosts:

    - "orderer.example.com:192.168.121.141"

    - "peer0.org1.example.com:192.168.121.142"

    - "peer1.org1.example.com:192.168.121.143"

    - "peer0.org2.example.com:192.168.121.144"

    - "peer1.org2.example.com:192.168.121.145"

    peer0.org2.example.com的docker-compose-peer.yaml配置文件:

    version: '2'

    services:

    peer1.org2.example.com:

    container_name: peer1.org2.example.com

    extends:

    file: base/docker-compose-base.yaml

    service: peer1.org2.example.com

    extra_hosts:

    - "orderer.example.com:192.168.121.141"

    - "peer0.org1.example.com:192.168.121.142"

    cli:

    container_name: cli

    image: hyperledger/fabric-tools

    tty: true

    environment:

    - GOPATH=/opt/gopath

    - CORE_VM_ENDPOINT=unix:///host/var/run/docker.sock

    - CORE_LOGGING_LEVEL=DEBUG

    - CORE_PEER_ID=cli

    - CORE_PEER_ADDRESS=peer1.org2.example.com:7051

    - CORE_PEER_LOCALMSPID=Org2MSP

    - CORE_PEER_TLS_ENABLED=true

    - CORE_PEER_TLS_CERT_FILE=/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org2.example.com/peers/peer1.org2.example.com/tls/server.crt

    - CORE_PEER_TLS_KEY_FILE=/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org2.example.com/peers/peer1.org2.example.com/tls/server.key

    - CORE_PEER_TLS_ROOTCERT_FILE=/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org2.example.com/peers/peer1.org2.example.com/tls/ca.crt

    - CORE_PEER_MSPCONFIGPATH=/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org2.example.com/users/Admin@org2.example.com/msp

    working_dir: /opt/gopath/src/github.com/hyperledger/fabric/peer

    volumes:

    - /var/run/:/host/var/run/

    - ../chaincode/go/:/opt/gopath/src/github.com/hyperledger/fabric/examples/chaincode/go

    - ./crypto-config:/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/

    - ./scripts:/opt/gopath/src/github.com/hyperledger/fabric/peer/scripts/

    - ./channel-artifacts:/opt/gopath/src/github.com/hyperledger/fabric/peer/channel-artifacts

    depends_on:

    - peer1.org2.example.com

    extra_hosts:

    - "orderer.example.com:192.168.121.141"

    - "peer0.org1.example.com:192.168.121.142"

    - "peer1.org1.example.com:192.168.121.143"

    - "peer0.org2.example.com:192.168.121.144"

    - "peer1.org2.example.com:192.168.121.145"

    六、启动fabric

    现在所有文件都已经准备完毕,可以启动Fabric网络了。

    6.1启动orderer

    让我们首先来启动orderer节点,在orderer服务器上运行:docker-compose -f docker-compose-orderer.yaml up -d

    运行完毕后我们可以使用docker ps看到运行了一个名字为orderer.example.com的节点。类似以下:

    新葡亰496net 20

    6.2启动peer

    然后我们切换到peer0.org1.example.com服务器,启动本服务器的peer节点和cli,命令为:

    docker-compose -f docker-compose-peer.yaml up -d

    运行完毕后我们使用docker ps应该可以看到4个正在运行的容器。

    现在我们整个Fabric4 1服务器网络已经成型,接下来是创建channel和运行ChainCode。

    6.3创建Channel测试ChainCode

    我们切换到peer0.org1.example.com服务器上,使用该服务器上的cli来运行创建Channel和运行ChainCode的操作。首先进入cli容器:

    docker exec -it cli bash

    进入容器后我们可以看到命令提示变为:

    root@b41e67d40583:/opt/gopath/src/github.com/hyperledger/fabric/peer#

    说明我们已经以root的身份进入到cli容器内部。官方已经提供了完整的创建Channel和测试ChainCode的脚本,并且已经映射到cli容器内部,所以我们只需要在cli内运行如下命令:

    ./scripts/script.sh mychannel

    那么该脚本就可以一步一步的完成创建通道,将其他节点加入通道,更新锚节点,创建ChainCode,初始化账户,查询,转账,再次查询等链上代码的各个操作都可以自动化实现。直到最

    后,系统提示:

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

    说明我们的4 1的Fabric多级部署成功了。我们现在是 peer0.org1.example.com的cli容器内,我们也可以切换到peer0.org2.example.com服务器,运行docker ps命令,可以看到本来是2个容器的,现在已经变成了3个容器,因为ChainCode会创建一个容器。

    以上为fabric4 1多机部署所有步骤。

    完。

    本文由新葡亰496net发布于奥门新萄京娱乐场,转载请注明出处:区块链多机集群框架搭建实战记录,运转测验e

    关键词: