zoukankan      html  css  js  c++  java
  • Hyperledger Fabric 1.0 从零开始(八)——Fabric多节点集群生产部署

    6.1平台特定使用的二进制文件配置

    该方案与Hyperledger Fabric 1.0 从零开始(五)——运行测试e2e类似,根据企业需要,可以控制各节点的域名,及联盟链的统一域名。可以指定单独节点的访问,生成指定的公私钥、证书等文件。具体的参数配置可以参考generateArtifacts.sh文件,可执行自动化生成,也可以按照该脚本里的命令手动生成。

    参照3.1、运行fabric-samples的问题说明,首先我们在/opt/gopath/src/github.com/hyperledger/fabric下创建一个自定义目录,该目录名称应与实际生产环境中组织节点的名称一致,如:example。

    我们计划将在orderer服务器中生成必要的证书等文件,因此在example下将继续创建一个orderer目录,我们将下载好的bin目录上传至/opt/gopath/src/github.com/hyperledger/fabric/example/orderer目录下,具体效果如下视图:

     

     正如3.1小节所述,在bin目录中是Fabric平台特定使用的二进制文件cryptogen,configtxgen,configtxlator, 以及peer。

    我们可以通过configtxgen和cryptogen手动生成证书/密钥以及各项配置文件。

    (注:英文阅读能力好的同学可以直接参考官方文档

    在正式使用上述两个文件之前,我们需要在bin目录下先创建两个yaml文件,分别是crypto-config.yaml和configtx.yaml,这两个文件具体可以在/opt/gopath/src/github.com/hyperledger/fabric/examples/e2e_cli这个目录下找到对应的官方示例,以官方示例为基础进行修改,改成我们生产上所需的具体内容。

    6.2、生成组织证书与私钥

    我们假定要组建一个名为example的联盟,且我们自己的组织名称为Demo,我们会创建一个Orderer排序服务节点,同时还会创建一个peer节点。

    那么修改后的crypto-config.yaml如下:

     1 OrdererOrgs:
     2   - Name: Orderer
     3     Domain: example.com
     4     Specs:
     5       - Hostname: orderer
     6 PeerOrgs:
     7   - Name: Demo
     8    Domain: demo.example.com
     9    Template:
    10      Count: 1
    11    Users:
    12      Count: 1

     这里我们使用crytogen工具给我们不同的网络实体(peer/client)生成加密证书(X509 certs)。这些证书代表了身份,当我们的网络实体在进行通信以及transact的时候进行签名与验证身份。

    crypto-config.yaml配置文件将被crytogen工具调用,文件中包括了网络拓扑,同时允许我们给organization(Demo)以及component(隶属于organization的组件)生成一个证书与私钥的集合。每一个organization(Demo)被分配一个唯一的根证书(绑定了隶属于organization(Demo)的具体的component,包括peers与orderers)。Hyperledger Fabric的transaction与通信均被节点的私钥(keystore)进行签名,截止被公钥进行验证(signcerts)。 这个配置文件中有一个计数(count)的变量,我们使用其定义organization(Demo)中peer的数量,在本例中我们定义Demo组织有一个peer。

    在crypto-config.yaml配置文件中,我们可以看到在ordererOrgs头下面的“Name”, “Domain” 以及 “Specs”这三个参数,命名规则约定如下:“{{.Hostname}}.{{.Domain}}”。使用官方提供的的crypto-config.yaml中的ordering node作为参考,我们能看到一个名称为 - orderer.example.com的ordering node,该node与Orderer的MSP ID关联。

    接下来开始使用crytogen工具执行crypto-config.yaml配置文件,crytogen工具在bin目录下,我们需要先进入该目录,并执行crypto-config.yaml配置文件,具体命令如下:

    cd /opt/gopath/src/github.com/hyperledger/fabric/example/orderer/bin
    ./bin/cryptogen generate --config=./crypto-config.yaml

     根据上述命令,可以看出crypto-config.yaml被上传至bin目录下,执行结果如下视图:

     

     此过程中可能会提示权限不足,如下视图:

     

     这里使用chmod +x来赋权即可,不做详细说明。

    完成之后会在bin目录下生成一个新的目录crypto-config,其中会有ordererOrganizations和peerOrganizations两个目录,具体结果视图如下:

     

    6.3、定义configtx.yaml配置文件

    接下来,我们需要使用configtxgen工具来执行configtx.yaml文件创建orderer Genesis block,在此之前需要为configtxgen工具指定configtx.yaml文件的路径,我们需要设置一个环境变量,执行如下命令:

    export FABRIC_CFG_PATH=$PWD

     随后可以打印查看该目录是否正确,具体执行命令如下:

    echo $PWD

    结果如下视图:

     

     bin目录下创建channel-artifacts目录,用来存放各种渠道的源文件。

    编辑configtx.yaml文件,结果如下:

     1 Profiles:
     2 
     3     ExampleOrdererGenesis:
     4         Orderer:
     5             <<: *OrdererExample
     6             Organizations:
     7                 - *OrdererDemo
     8         Consortiums:
     9             ExampleConsortium:
    10                 Organizations:
    11                     - *Demo12     ExampleChannel:
    13         Consortium: ExampleConsortium
    14         Application:
    15             <<: *ApplicationExample
    16             Organizations:
    17                 - *Demo18 Organizations:
    19 
    20     - &OrdererDemo
    21         Name: OrdererDemo
    22         ID: OrdererMSP
    23         MSPDir: crypto-config/ordererOrganizations/example.com/msp
    24 
    25     - &Demo26         Name: DemoMSP
    27         ID: DemoMSP
    28         MSPDir: crypto-config/peerOrganizations/demo.example.com/msp
    29         AnchorPeers:
    30             - Host: peer0.demo.anti-moth.com
    31               Port: 7051
    32 
    33 Orderer: &OrdererExample
    34 
    35     OrdererType: solo
    36 
    37     Addresses:
    38         - orderer.example.com:7050
    39 
    40     BatchTimeout: 2s
    41     BatchSize:
    42         MaxMessageCount: 10
    43         AbsoluteMaxBytes: 99 MB
    44         PreferredMaxBytes: 512 KB
    45 
    46     Kafka:
    47         Brokers:
    48             - 127.0.0.1:9092
    49     Organizations:
    50 
    51 Application: &ApplicationExample
    52 
    53     Organizations:

     在该文件中,我们定义了组织名称、组织排序服务名称、组织渠道名称、应用渠道名称、应用联盟名称等。

    6.4、生成orderer源文件

    根据6.3中配置文件的描述,我们将生成的orderer源为ExampleOrdererGenesis。

    本步骤将生成genesis.block文件,具体执行命令如下:

    ./bin/configtxgen -profile ExampleOrdererGenesis -outputBlock ./channel-artifacts/example_genesis.block

     该命令会在/opt/gopath/src/tk/bin/channel-artifacts目录下生成一个genesis.block文件,根据官方demo中的configtx.yaml文件描述,该文件名由于未知原因,不得命名为order.genesis.block。

    完成命令后的视图如下:

     

     具体官方指定方案截图如下,可参考官网实现:

     

    6.5、生成channel源文件

    根据6.3中配置文件的描述,我们将生成的channel源为ExampleChannel。

    本步骤将生成channel.tx文件,具体执行命令如下:

    ./bin/configtxgen -profile ExampleChannel -outputCreateChannelTx ./channel-artifacts/example_channel.tx -channelID channel01

     完成命令后的视图如下:

     

     按照官方给定的方案,执行该方法前可以先指定channel的环境变量,如下视图:

     

     上图官方描述的具体执行命令如下:

    1 export CHANNEL_NAME=mychannel
    2 
    3 # this file contains the definitions for our sample channel
    4 ../bin/configtxgen -profile ExampleChannel -outputCreateChannelTx ./channel-artifacts/channel.tx -channelID $CHANNEL_NAME

    该步骤最终执行结果视图如下:

     

    6.6、生成channel下节点集合认证文件

    根据6.3中配置文件的描述,我们将生成的channel源为ExampleChannel。

    本步骤将生成channel.tx文件,具体执行命令如下:

    ./bin/configtxgen -profile ExampleChannel -outputAnchorPeersUpdate ./channel-artifacts/DEMOMSPanchors.tx -channelID channel01 -asOrg DemoMSP

     完成命令后的视图如下:

     

    具体官方指定方案截图如下,可参考官网实现:

    最终我们可以在channel-artifacts目录下看到成功创建了TKMSPanchors.tx文件,如下视图:

    【注:请无视这其中目录等名称的一些小细节,这一章主要是讲述如何通过官方给定的二进制文件来生成我们需要的生产证书等配置资源】

  • 相关阅读:
    js下载doxc 文件示例和部分后缀对应的content-type 总结
    使用react-app-rewired和customize-cra对默认webpack自定义配置
    koa2使用es7 的装饰器decorator
    vue history 模式打包部署在域名的二级目录的配置指南
    linux 安装 node 环境
    javascript 正则表达式之分组与前瞻匹配详解
    vue的$emit 与$on父子组件与兄弟组件的之间通信
    mysql 的基本操作总结--增删改查
    mysql 常用的时间日期函数小结
    小程序封装request请求,统一API
  • 原文地址:https://www.cnblogs.com/aberic/p/7542835.html
Copyright © 2011-2022 走看看