美文网首页
Fabric多台服务器的部署(二)

Fabric多台服务器的部署(二)

作者: 深不可测xy | 来源:发表于2018-12-14 11:51 被阅读33次

    3、下载Fabric镜像

    3.1.1 下载Fabric 源码

    1、在后面的例子中,有些地方需要用到源码中提到的工具来编译和生成证书等,这里需要下载一下Fabric的源码,在本地下载Fabric官方提供的源码

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

    需要注意的时候,需要把下载好的源码放在$GOPATH里,这个环境变量是最初安装GO的设置的,如

    echo $GOPATH
    /Users/xuyao/go
    

    那么fabric的源码地址路径应该是

    /Users/xuyao/go/src/github.com/hyperledger/fabric/
    
    3.1.2 下载Fabric镜像

     如果你看过Fabric官方的快速入门文档https://hyperledgercn.github.io/hyperledgerDocs/getting_started/,应该会对Fabric的镜像文件有个了解,在fabric/examples/e2e_cli文件夹下有个download-dockerimages.sh的脚本文件,他会帮你一键下载所需的镜像文件。

    # 使脚本可执行
    chmod +x download-dockerimages.sh
    # 执行脚本
    ./download-dockerimages.sh
    

    当然也可以使用下面命令下载镜像(需要翻墙)

    curl -sSL http://bit.ly/2ysbOFE | bash -s 1.2.0 
    #此处是下载fabric-samples,如果想快速使用byfn可以参考此脚本,后面1.2.0是对应的版本号
    

    也可以根据自己项目需求下载不同的版本

    curl -sSL http://bit.ly/2ysbOFE | bash -s <fabric> <fabric-ca> <thirdparth>
    curl -sSL http://bit.ly/2ysbOFE | bash -s 1.2.0 1.2.0 0.4.10
    #后面三个参数分别代表Fabric, Fabric-ca和第三方平台镜像版本号
    

    无法翻墙,可以用下面命令

    curl -sSL https://raw.githubusercontent.com/hyperledger/fabric/master/scripts/bootstrap.sh | bash -s 1.2.0 1.2.0 0.4.10
    

    下载完成后使用docker images可以看到下载的镜像文件

    docker images #查看所以镜像文件
    hyperledger/fabric-ca          latest               35311d8617b4        7 days ago          240 MB
    hyperledger/fabric-ca          x86_64-1.0.0-alpha   35311d8617b4        7 days ago          240 MB
    hyperledger/fabric-couchdb     latest               f3ce31e25872        7 days ago          1.51 GB
    hyperledger/fabric-couchdb     x86_64-1.0.0-alpha   f3ce31e25872        7 days ago          1.51 GB
    hyperledger/fabric-kafka       latest               589dad0b93fc        7 days ago          1.3 GB
    hyperledger/fabric-kafka       x86_64-1.0.0-alpha   589dad0b93fc        7 days ago          1.3 GB
    hyperledger/fabric-zookeeper   latest               9a51f5be29c1        7 days ago          1.31 GB
    hyperledger/fabric-zookeeper   x86_64-1.0.0-alpha   9a51f5be29c1        7 days ago          1.31 GB
    hyperledger/fabric-orderer     latest               5685fd77ab7c        7 days ago          182 MB
    hyperledger/fabric-orderer     x86_64-1.0.0-alpha   5685fd77ab7c        7 days ago          182 MB
    hyperledger/fabric-peer        latest               784c5d41ac1d        7 days ago          184 MB
    hyperledger/fabric-peer        x86_64-1.0.0-alpha   784c5d41ac1d        7 days ago          184 MB
    hyperledger/fabric-javaenv     latest               a08f85d8f0a9        7 days ago          1.42 GB
    hyperledger/fabric-javaenv     x86_64-1.0.0-alpha   a08f85d8f0a9        7 days ago          1.42 GB
    hyperledger/fabric-ccenv       latest               91792014b61f        7 days ago          1.29 GB
    hyperledger/fabric-ccenv       x86_64-1.0.0-alpha   91792014b61f        7 days ago          1.29 GB
    
    3.1.3 常用的Docker 命令
    #停止正在运行的所有网络
    docker stop -f $(docker ps -aq)
    
    #删除正在运行的所有网络
    docker rm -f $(docker ps -aq)
    
    #删除某个镜像
    docker rmi <IMAGE ID>
    
    #查看某个容器的日志
    docker logs -f  < container-id >
    
    #进入某个容器内部
    docker exec -it < container-id > bash
    
    #查看docker 运行状态
    service docker status
    
    # 启动/关闭docker
    sudo service docker start|stop
    

    4、下载 Fabric-sample 源码

    1、fabric-sample里有很多快速启动fabric的例子,官方文档给了一个快速启动first-network的例子 https://hyperledgercn.github.io/hyperledgerDocs/build_network_zh/,在first-network里面,每个组织持有2个peer节点,以及一个“solo”排序服务,这里一个比较简单的fabric网络,如果只是想跑一下fabric网络,试下手感的话,可以按照官方的文档来跑一篇。
      这里我们用的是官网提供的另一个例子,balance-transfer,它是一个集成了nodejs sdk的一个node.js的简单例子。

    #下载fabric-sample
    git clone git@github.com:hyperledger/fabric-samples.git
    

    2、后期我们的项目都是用nodejs来做的,所以很多基础的东西可以复用balance-transfer里的,现在我们可以自己建了项目仓库叫trace_redwine,把fabric-samples/balance-transfer/里的文件全部copy到我们的trace_redwine里,删除一些不必要的文件,这里一个自己的fabric项目雏形就出来了。

    5、修改配置脚本

    5.1.1 修改crypto-config.yaml文件

      crypto-config.yaml文件是配置节点信息的,你可以配置你的orderer,peer数量,以及域名的设置,主要配置的是OrdererOrgs和PeerOrgs
    OrdererOrgs的配置

    OrdererOrgs:
      - Name: Orderer
        Domain: xuyao.com
        Specs:
          - Hostname: orderer1
          - Hostname: orderer2
    

    PeerOrgs的配置信息

    PeerOrgs:
      - Name: Org1 #组织1
        Domain: org1.xuyao.com
        EnableNodeOUs: true
        Template:
          Count: 2
        Users:
          Count: 1
      - Name: Org2 #组织2
        Domain: org2.xuyao.com
        EnableNodeOUs: true
        Template:
          Count: 2
        Users:
          Count: 1
    
    5.1.2 使用generateArtifacts.sh脚本生成证书文件

      现在我们需要生成一些证书和启动这个fabric网络,生成证书的话我们可以使用官网提供的generateArtifacts.sh脚本来生成,文件路径在/gopath/src/github.com/hyperledger/fabric/examples/e2e_cli/下,稍微修改,因为我只需要生成证书,创世纪块,和channel.tx,具体脚本如下,需要说明的是如果你只是运行官方的first-network,可以忽略这些配置,因为first-network已经帮你生成好了这些东西

    #!/usr/bin/env bash
    CRYPTOGEN=$PWD/bin/cryptogen
    CONFIGTXGEN=$PWD/bin/configtxgen
    CHANNEL_NAME=$1
    : ${CHANNEL_NAME:="mychannel"}
    function buildCryptogenTools(){
        if [ -f "$CONFIGTXGEN" ]; then
            echo
        else
            echo "configtxgen not found"
            exit 1
        fi
    }
    
    function createPeerTemplate() {
        cp ../docker-composer-peer-template.yaml ../docker-composer
    }
    
    ## Generates Org certs using cryptogen tool
    function generateCerts (){
        echo
        echo "##########################################################"
        echo "##### Generate certificates using cryptogen tool #########"
        echo "##########################################################"
        if [ -d "crypto-config" ]; then
          rm -Rf crypto-config
        fi
        ${CRYPTOGEN} generate --config=./crypto-config.yaml
        echo
    }
    
    ## Generate orderer genesis block , channel configuration transaction and anchor peer update transactions
    function generateChannelArtifacts() {
        echo "##########################################################"
        echo "#########  Generating Orderer Genesis block ##############"
        echo "##########################################################"
        ${CONFIGTXGEN} -profile TwoOrgsOrdererGenesis -outputBlock ./genesis.block
    
        echo
        echo "#################################################################"
        echo "### Generating channel configuration transaction 'channel.tx' ###"
        echo "#################################################################"
        ${CONFIGTXGEN} -profile TwoOrgsChannel -outputCreateChannelTx ./mychannel.tx -channelID ${CHANNEL_NAME} 
    }
    
    buildCryptogenTools
    generateCerts
    generateChannelArtifacts
    

    generateCerts是生成证书的方法,它会加载crypto-config.yaml里的配置信息,并根据你的配置信息来生成相应的证书。
    generateChannelArtifacts是生成orderer的创世纪块(genesis.block)和channel.tx文件。
    上面的脚本运行之后,整个Fabric网络需要的一些证书就完成了,以本地例子为例,生成如下的一些文件数据

    ├── crypto-config
    │   ├── ordererOrganizations
    │   │   └── mbasechain.com
    │   │       ├── ca
    │   │       │   ├── 2ae1db347d3137d66fda66f59fb33cd2c3c22a4aadf7f97f800491fb91a20c32_sk
    │   │       │   └── ca.mbasechain.com-cert.pem
    │   │       ├── msp
    │   │       │   ├── admincerts
    │   │       │   │   └── Admin@mbasechain.com-cert.pem
    │   │       │   ├── cacerts
    │   │       │   │   └── ca.mbasechain.com-cert.pem
    │   │       │   └── tlscacerts
    │   │       │       └── tlsca.mbasechain.com-cert.pem
    │   │       ├── orderers
    │   │       │   ├── orderer.mbasechain.com
    │   │       │   │   └── msp
    │   │       │   │       └── keystore
    │   │       │   ├── orderer1.mbasechain.com
    │   │       │   │   ├── msp
    │   │       │   │   │   ├── admincerts
    │   │       │   │   │   │   └── Admin@mbasechain.com-cert.pem
    │   │       │   │   │   ├── cacerts
    │   │       │   │   │   │   └── ca.mbasechain.com-cert.pem
    │   │       │   │   │   ├── keystore
    │   │       │   │   │   │   └── 9af18a6c9dd8f34db73a70c1d066e6948216db534af9e4f89029158089d56cf1_sk
    │   │       │   │   │   ├── signcerts
    │   │       │   │   │   │   └── orderer1.mbasechain.com-cert.pem
    │   │       │   │   │   └── tlscacerts
    │   │       │   │   │       └── tlsca.mbasechain.com-cert.pem
    │   │       │   │   └── tls
    │   │       │   │       ├── ca.crt
    │   │       │   │       ├── server.crt
    │   │       │   │       └── server.key
    │   │       │   └── orderer2.mbasechain.com
    │   │       │       ├── msp
    │   │       │       │   ├── admincerts
    │   │       │       │   │   └── Admin@mbasechain.com-cert.pem
    │   │       │       │   ├── cacerts
    │   │       │       │   │   └── ca.mbasechain.com-cert.pem
    │   │       │       │   ├── keystore
    │   │       │       │   │   └── fb54a7774228bf31311b5aa0ab58b4c0d3f9aa0e83bb1906cb6926c033445976_sk
    │   │       │       │   ├── signcerts
    │   │       │       │   │   └── orderer2.mbasechain.com-cert.pem
    │   │       │       │   └── tlscacerts
    │   │       │       │       └── tlsca.mbasechain.com-cert.pem
    │   │       │       └── tls
    │   │       │           ├── ca.crt
    │   │       │           ├── server.crt
    │   │       │           └── server.key
    │   │       ├── tlsca
    │   │       │   ├── 9ceda704a49805f19c0f3cde2c1d42096d8e14da697567b0a02b051656f735de_sk
    │   │       │   └── tlsca.mbasechain.com-cert.pem
    │   │       └── users
    │   │           └── Admin@mbasechain.com
    │   │               ├── msp
    │   │               │   ├── admincerts
    │   │               │   │   └── Admin@mbasechain.com-cert.pem
    │   │               │   ├── cacerts
    │   │               │   │   └── ca.mbasechain.com-cert.pem
    │   │               │   ├── keystore
    │   │               │   │   └── 1c7c1a76c08e30990192ed0f6eb24c2efd7492b684f92ebf844591fb38d8b020_sk
    │   │               │   ├── signcerts
    │   │               │   │   └── Admin@mbasechain.com-cert.pem
    │   │               │   └── tlscacerts
    │   │               │       └── tlsca.mbasechain.com-cert.pem
    │   │               └── tls
    │   │                   ├── ca.crt
    │   │                   ├── client.crt
    │   │                   └── client.key
    │   └── peerOrganizations
    │       ├── org1.mbasechain.com
    │       │   ├── ca
    │       │   │   ├── 6cb226be4aec981541e6cbdd66742139c1157e88afe06edfb16f12ecc3056bf5_sk
    │       │   │   └── ca.org1.mbasechain.com-cert.pem
    │       │   ├── msp
    │       │   │   ├── admincerts
    │       │   │   │   └── Admin@org1.mbasechain.com-cert.pem
    │       │   │   ├── cacerts
    │       │   │   │   └── ca.org1.mbasechain.com-cert.pem
    │       │   │   ├── config.yaml
    │       │   │   └── tlscacerts
    │       │   │       └── tlsca.org1.mbasechain.com-cert.pem
    │       │   ├── peers
    │       │   │   ├── peer0.org1.mbasechain.com
    │       │   │   │   ├── msp
    │       │   │   │   │   ├── admincerts
    │       │   │   │   │   │   └── Admin@org1.mbasechain.com-cert.pem
    │       │   │   │   │   ├── cacerts
    │       │   │   │   │   │   └── ca.org1.mbasechain.com-cert.pem
    │       │   │   │   │   ├── config.yaml
    │       │   │   │   │   ├── keystore
    │       │   │   │   │   │   └── b9d2875104a103f635c8ec21757710455eec0fbfb2c59f7b33a09461b4138267_sk
    │       │   │   │   │   ├── signcerts
    │       │   │   │   │   │   └── peer0.org1.mbasechain.com-cert.pem
    │       │   │   │   │   └── tlscacerts
    │       │   │   │   │       └── tlsca.org1.mbasechain.com-cert.pem
    │       │   │   │   └── tls
    │       │   │   │       ├── ca.crt
    │       │   │   │       ├── server.crt
    │       │   │   │       └── server.key
    │       │   │   └── peer1.org1.mbasechain.com
    │       │   │       ├── msp
    │       │   │       │   ├── admincerts
    │       │   │       │   │   └── Admin@org1.mbasechain.com-cert.pem
    │       │   │       │   ├── cacerts
    │       │   │       │   │   └── ca.org1.mbasechain.com-cert.pem
    │       │   │       │   ├── config.yaml
    │       │   │       │   ├── keystore
    │       │   │       │   │   └── 68da53988aa0b3e50b6a90ac90495b4021fdb3456bbca375aca13cf206d18b0c_sk
    │       │   │       │   ├── signcerts
    │       │   │       │   │   └── peer1.org1.mbasechain.com-cert.pem
    │       │   │       │   └── tlscacerts
    │       │   │       │       └── tlsca.org1.mbasechain.com-cert.pem
    │       │   │       └── tls
    │       │   │           ├── ca.crt
    │       │   │           ├── server.crt
    │       │   │           └── server.key
    │       │   ├── tlsca
    │       │   │   ├── b2ef19d2488129396546090955ddf2d1ec267cd699dc2218516df72f5ea235f4_sk
    │       │   │   └── tlsca.org1.mbasechain.com-cert.pem
    │       │   └── users
    │       │       ├── Admin@org1.mbasechain.com
    │       │       │   ├── msp
    │       │       │   │   ├── admincerts
    │       │       │   │   │   └── Admin@org1.mbasechain.com-cert.pem
    │       │       │   │   ├── cacerts
    │       │       │   │   │   └── ca.org1.mbasechain.com-cert.pem
    │       │       │   │   ├── keystore
    │       │       │   │   │   └── 12f72b7332170a7b8e4214eb268c419053a2386f34b149f3e7c5820f767a2d30_sk
    │       │       │   │   ├── signcerts
    │       │       │   │   │   └── Admin@org1.mbasechain.com-cert.pem
    │       │       │   │   └── tlscacerts
    │       │       │   │       └── tlsca.org1.mbasechain.com-cert.pem
    │       │       │   └── tls
    │       │       │       ├── ca.crt
    │       │       │       ├── client.crt
    │       │       │       └── client.key
    │       │       └── User1@org1.mbasechain.com
    │       │           ├── msp
    │       │           │   ├── admincerts
    │       │           │   │   └── User1@org1.mbasechain.com-cert.pem
    │       │           │   ├── cacerts
    │       │           │   │   └── ca.org1.mbasechain.com-cert.pem
    │       │           │   ├── keystore
    │       │           │   │   └── 610899489aa3d881dcc6e9f3d421981003b1504e5b15c00426edd69505ef3519_sk
    │       │           │   ├── signcerts
    │       │           │   │   └── User1@org1.mbasechain.com-cert.pem
    │       │           │   └── tlscacerts
    │       │           │       └── tlsca.org1.mbasechain.com-cert.pem
    │       │           └── tls
    │       │               ├── ca.crt
    │       │               ├── client.crt
    │       │               └── client.key
    │       ├── org2.mbasechain.com
    │       │   ├── ca
    │       │   │   ├── 018041cad6bac4a43ab80e736ba333a759a14ee6e88226944ec904dfcba633ab_sk
    │       │   │   └── ca.org2.mbasechain.com-cert.pem
    │       │   ├── msp
    │       │   │   ├── admincerts
    │       │   │   │   └── Admin@org2.mbasechain.com-cert.pem
    │       │   │   ├── cacerts
    │       │   │   │   └── ca.org2.mbasechain.com-cert.pem
    │       │   │   ├── config.yaml
    │       │   │   └── tlscacerts
    │       │   │       └── tlsca.org2.mbasechain.com-cert.pem
    │       │   ├── peers
    │       │   │   ├── peer0.org2.mbasechain.com
    │       │   │   │   ├── msp
    │       │   │   │   │   ├── admincerts
    │       │   │   │   │   │   └── Admin@org2.mbasechain.com-cert.pem
    │       │   │   │   │   ├── cacerts
    │       │   │   │   │   │   └── ca.org2.mbasechain.com-cert.pem
    │       │   │   │   │   ├── config.yaml
    │       │   │   │   │   ├── keystore
    │       │   │   │   │   │   └── cfb79d8ab3c543a8732227cd2b441ce30e82ff1d4aad5f59c1338454edeeddf1_sk
    │       │   │   │   │   ├── signcerts
    │       │   │   │   │   │   └── peer0.org2.mbasechain.com-cert.pem
    │       │   │   │   │   └── tlscacerts
    │       │   │   │   │       └── tlsca.org2.mbasechain.com-cert.pem
    │       │   │   │   └── tls
    │       │   │   │       ├── ca.crt
    │       │   │   │       ├── server.crt
    │       │   │   │       └── server.key
    │       │   │   └── peer1.org2.mbasechain.com
    │       │   │       ├── msp
    │       │   │       │   ├── admincerts
    │       │   │       │   │   └── Admin@org2.mbasechain.com-cert.pem
    │       │   │       │   ├── cacerts
    │       │   │       │   │   └── ca.org2.mbasechain.com-cert.pem
    │       │   │       │   ├── config.yaml
    │       │   │       │   ├── keystore
    │       │   │       │   │   └── b92cbb64895e522299770c9f84ad9954753f348d926da956d4458cf545b99ef6_sk
    │       │   │       │   ├── signcerts
    │       │   │       │   │   └── peer1.org2.mbasechain.com-cert.pem
    │       │   │       │   └── tlscacerts
    │       │   │       │       └── tlsca.org2.mbasechain.com-cert.pem
    │       │   │       └── tls
    │       │   │           ├── ca.crt
    │       │   │           ├── server.crt
    │       │   │           └── server.key
    │       │   ├── tlsca
    │       │   │   ├── 2674e511ae5eb66b4964a2a93cc917f5e8fbd49e95fc97d12b546c9ce933e932_sk
    │       │   │   └── tlsca.org2.mbasechain.com-cert.pem
    │       │   └── users
    │       │       ├── Admin@org2.mbasechain.com
    │       │       │   ├── msp
    │       │       │   │   ├── admincerts
    │       │       │   │   │   └── Admin@org2.mbasechain.com-cert.pem
    │       │       │   │   ├── cacerts
    │       │       │   │   │   └── ca.org2.mbasechain.com-cert.pem
    │       │       │   │   ├── keystore
    │       │       │   │   │   └── 4ca087cf7e8ecd260b84782ec8456b693ada673b902d525fb0dfcbf4bc797e38_sk
    │       │       │   │   ├── signcerts
    │       │       │   │   │   └── Admin@org2.mbasechain.com-cert.pem
    │       │       │   │   └── tlscacerts
    │       │       │   │       └── tlsca.org2.mbasechain.com-cert.pem
    │       │       │   └── tls
    │       │       │       ├── ca.crt
    │       │       │       ├── client.crt
    │       │       │       └── client.key
    │       │       └── User1@org2.mbasechain.com
    │       │           ├── msp
    │       │           │   ├── admincerts
    │       │           │   │   └── User1@org2.mbasechain.com-cert.pem
    │       │           │   ├── cacerts
    │       │           │   │   └── ca.org2.mbasechain.com-cert.pem
    │       │           │   ├── keystore
    │       │           │   │   └── 950ff48168df356652a4fa6d5f9d3aa7d6d7694045cc3bb7f83587686794a345_sk
    │       │           │   ├── signcerts
    │       │           │   │   └── User1@org2.mbasechain.com-cert.pem
    │       │           │   └── tlscacerts
    │       │           │       └── tlsca.org2.mbasechain.com-cert.pem
    │       │           └── tls
    │       │               ├── ca.crt
    │       │               ├── client.crt
    │       │               └── client.key
    ├── crypto-config.yaml
    ├── genesis.block
    ├── mychannel.tx
    
    未完待续。。。
    参考资料

    https://hyperledgercn.github.io/hyperledgerDocs/getting_started/
    https://www.codetd.com/article/2709144
    https://hyperledgercn.github.io/hyperledgerDocs/build_network_zh/

    相关文章

      网友评论

          本文标题:Fabric多台服务器的部署(二)

          本文链接:https://www.haomeiwen.com/subject/sjmhcqtx.html