HyperLedger(3)多主机部署Fabric1.0

本文介绍如何在三台主机上部署Hyperledger Fabric 1.0网络,涉及使用Docker和Docker-compose进行配置,生成证书及配置channel,以及通过命令创建、加入channel和部署chaincode。

多主机部署Fabric1.0

  1. 本文以fabric下examples/e2e_cli为例,并使用docker-compose-e2e.yaml来启动Fabric网络。
  2. 在三台主机上进行部署,分别orderer service、org1(包括2个peer,1个ca)、org2(包括2个peer,1个ca)。

准备工作

  1. 运行Fabric节点需要依赖以下工具:

    1. Docker: 用于管理Fabric镜像以及运行peer和orderer等组件。
    2. Docker-compose:用于配置Fabric容器
    3. Fabric源码:提供了用于生成证书(cryptogen)和配置channel(configtxgen)的工具和e2e_cli示例。
    4. Go语言开发环境:源码的工具编译依赖于Go语言。
  2. 在主机1利用cryptogen和configtxgen工具生成证书和配置channel等相关文件

    命令分别如下:

    
    #生成证书
    
    cryptogen generate --config=./crypto-config.yaml
    
    #生成配置channel所需文件
    
    configtxgen -profile TwoOrgsOrdererGenesis -outputBlock ./channel-artifacts/genesis.block
    
    configtxgen -profile TwoOrgsChannel -outputCreateChannelTx ./channel-artifacts/channel.tx -channelID mychannel
    
    configtxgen -profile TwoOrgsChannel -outputAnchorPeersUpdate ./channel-artifacts/Org1MSPanchors.tx -channelID mychannel -asOrg Org1MSP
    
    configtxgen -profile TwoOrgsChannel -outputAnchorPeersUpdate ./channel-artifacts/Org2MSPanchors.tx -channelID mychannel -asOrg Org2MSP
  3. 将步骤2生成的文件拷贝到主机2和主机3保持所有主机的这些文件相同。

主机1(orderer service)

IP:10.168.195.108

​ 编辑docker-compose-e2e.yaml文件,只保留services下的orderer.example.com ,其它services注释掉。内容如下所示:

services:
  orderer.example.com:
    extends:
      file:   base/docker-compose-base-peer.yaml
      service: orderer.example.com
    container_name: orderer.example.com

注意: 在部署org1和org2的主机上编辑/etc/hosts,并在文件末尾添加如下内容

10.168.195.98 orderer.example.com (按照自己实际情况)

主机2(org1:包括2个peer、1个ca)

  1. 编辑docker-compose-e2e.yaml文件,只保留services下的ca0、peer0.org1.example.com、peer1.org1.example.com,其它services注释掉。

  2. 给peer0.org1和peer1.org1添加如下内容:

    extra_hosts:
        - "orderer.example.com:10.168.195.108"
  3. 编辑cli,修改如下内容:

    
    #将command注释掉
    
       command: /bin/bash -c './scripts/script.sh ${CHANNEL_NAME}; sleep $TIMEOUT'
    
    
    #在volumes添加
    
    - ./peer:/opt/gopath/src/github.com/hyperledger/fabric/peer/
    - /etc/hosts:/etc/hosts
  4. 编辑base/peer-base.yaml文件,添加如下内容:

    volumes:
         - /etc/hosts:/etc/hosts

主机3(org2:包括2个peer、1个ca)

  1. 编辑docker-compose-e2e.yaml文件,只保留services下的ca1、peer0.org2.example.com、peer1.org2.example.com,其它services注释掉。

  2. 给peer0.org1和peer1.org1添加如下内容:

    extra_hosts:
        - "orderer.example.com:10.168.195.108"
  3. 编辑cli,修改如下内容:

    
    #将command注释掉
    
       command: /bin/bash -c './scripts/script.sh ${CHANNEL_NAME}; sleep $TIMEOUT'
    
    
    #在volumes添加
    
         - ./peer:/opt/gopath/src/github.com/hyperledger/fabric/peer/
         - /etc/hosts:/etc/hosts
    
    
    #修改environment内容
    
    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
    
  4. 编辑base/peer-base.yaml文件,添加如下内容:

    volumes:
         - /etc/hosts:/etc/hosts

测试

启动Fabric网络
  1. 先启动主机1上上的orderer service

    sudo docker-compose -f docker-compose-e2e.yaml up
  2. 分别在主机2、主机3上启动org1、org2的peer

    sudo docker-compose -f docker-compose-e2e.yaml up
Channel
  1. 在主机2上进入cli容器

    sudo docker exec -it cli bash
  2. 创建channel

    peer channel create -o orderer.example.com:7050 -c mychannel -f channel-artifacts/channel.tx --tls --cafile /opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/ordererOrganizations/example.com/orderers/orderer.example.com/msp/tlscacerts/tlsca.example.com-cert.pem

    e2e_cli/peer目录下生成一个名为mychannel.block文件,将它拷贝到主机3的e2e_cli/peer目录下。

  3. 加入channel

    
    #在主机2、3上的cli容器内分别执行如下命令
    
    peer channel join -b mychannel.block
  4. 更新背书节点信息

    
    #在主机2上执行
    
    peer channel update -o orderer.example.com:7050 -c mychannel -f ./channel-artifacts/Org1MSPanchors.tx --tls --cafile /opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/ordererOrganizations/example.com/orderers/orderer.example.com/msp/tlscacerts/tlsca.example.com-cert.pem
    
    
    #在主机3上执行
    
    peer channel update -o orderer.example.com:7050 -c mychannel -f ./channel-artifacts/Org2MSPanchors.tx --tls --cafile /opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/ordererOrganizations/example.com/orderers/orderer.example.com/msp/tlscacerts/tlsca.example.com-cert.pem
Chaincode
  1. Install

    
    #主机2、3上都需要执行该命令
    
    peer chaincode install -n mycc -v 1.0 -p github.com/hyperledger/fabric/examples/chaincode/go/chaincode_example02
  2. Instantiate

    
    #该命令只需要在一个节点上实例化即可。该示例我们在主机2上进行。
    
    peer chaincode instantiate -o orderer.example.com:7050 --tls --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 -v 1.0 -c '{"Args":["init","a", "100", "b","200"]}' -P "OR ('Org1MSP.member','Org2MSP.member')"
  3. Query

    
    #此时在主机23上分别查询a的值都为100.
    
    peer chaincode query -C mychannel -n mycc -c '{"Args":["query","a"]}'
  4. Invoke

    
    #在主机2上进行转账操作。a转给b10.
    
    peer chaincode invoke -o orderer.example.com:7050 --tls --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","10"]}'
  5. Query

    再次执行步骤3的Query操作,此时a为90,b为210.

源码链接: https://pan.quark.cn/s/fa13cd6c6c8d Chrome浏览器作为一款备受青睐的网页浏览器,凭借其出色的稳定性和运行速度获得了广泛认可。 然而出于安全考量,Chrome系统默认不兼容ActiveX插件,因为ActiveX技术主要应用于Internet Explorer,它赋予网页内容与用户本地系统交互的能力,但同时也可能引发潜在的安全隐患。 不过在某些特定工作场景下,比如在企业内部网络环境或需要与老旧应用程序整合时,可能仍需在Chrome中启用ActiveX控件。 为此我们必须掌握在Chrome浏览器下加载和运用ActiveX的方法。 首先需要明确ActiveX的本质。 ActiveX是由微软设计的一种技术框架,旨在开发可在网页环境中运行的控件,这些控件能够完成多种功能,包括视频播放、应用程序组件运行或与硬件设备通信等。 ActiveX控件多以OCX(OLE控件)格式发布。 在Chrome浏览器中启用ActiveX需要采取额外措施,因为该浏览器本身并不支持此项技术。 以下是几种常见的解决方案: 1. **应用Chrome的兼容性设置**:部分Chrome版本提供了" --enable-internal-activex"命令行参数,可通过此参数使浏览器具备加载ActiveX控件的能力。 用户可在启动Chrome时,于快捷方式的目标路径后附加该参数来激活此功能。 例如:"C:\Program Files (x86)\Google\Chrome\Application\chrome.exe" --enable-internal-activex。 2. **安装第三方插件**:市面上存在一些第三方插件,例如"IE Tab"或"ActiveX Con...
标题SpringBoot与微信小程序结合的健康饮食平台研究AI更换标题第1章引言介绍健康饮食平台的研究背景、意义、国内外研究现状、论文方法及创新点。1.1研究背景与意义阐述健康饮食平台在当前社会的重要性及其市场需求。1.2国内外研究现状分析国内外健康饮食平台的发展现状及趋势。1.3研究方法及创新点概述本文采用的研究方法和技术创新点。第2章相关理论总结健康饮食、SpringBoot及微信小程序的相关理论。2.1健康饮食理论介绍健康饮食的基本原则和营养学知识。2.2SpringBoot框架阐述SpringBoot框架的特点、优势及在项目中的应用。2.3微信小程序技术介绍微信小程序的开发技术、特点及其用户群体。第3章健康饮食平台设计详细介绍健康饮食平台的设计方案,包括前端和后端设计。3.1平台架构设计给出平台的整体架构、模块划分及交互流程。3.2数据库设计介绍数据库的设计思路、表结构及数据关系。3.3前后端交互设计阐述前后端数据交互的方式、接口设计及安全性考虑。第4章微信小程序实现介绍微信小程序的具体实现过程,包括页面设计、功能实现等。4.1页面设计与布局给出微信小程序的页面设计思路、布局及交互效果。4.2功能实现与测试详细介绍微信小程序各项功能的实现过程及测试方法。4.3用户体验优化阐述如何提升微信小程序的用户体验,包括界面优化、性能优化等。第5章平台测试与优化对健康饮食平台进行测试,并根据测试结果进行优化。5.1测试环境与数据介绍测试环境、测试数据及测试方法。5.2测试结果分析从功能、性能、用户体验等方面对测试结果进行详细分析。5.3平台优化策略根据测试结果提出平台优化策略,包括代码优化、功能改进等。第6章结论与展望总结本文的研究成果,并展望未来的研究方向。6.1研究结论概括本文的主要研究结论和平台实现效果。6.2展望指出本文研究的不足之处以及未来研究的方向和改进点。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值