zoukankan      html  css  js  c++  java
  • 基于docker的 Hyperledger Fabric 多机环境搭建(下)

    Docker环境部署见上一篇博客:http://www.cnblogs.com/cnblogs-wangzhipeng/p/6994541.html。

    我们部署分布式容器服务后就要在上面部署Fabric网络,这时候我们的Fabric-sdk-node 就派上用场了,选择orderer节点所在的主机进行fabric-sdk-node部署,不过在部署环境之前我们要先安装一些额外的nodejs包:

    Fabric-sdk-node部署

    1>先安装nodejs (目前Fabric要求的版本是6.9.x的版本),再安装npm(nodejs包的管理工具。)

    2> 执行命令 code bash:

    cd $fabric-sdk-node 

    npm install #这里面注意,最好是准备个梯子,否则极大概率安装不成功,或者用cpm代替 npm(推荐)

    3>对sdk进行测试

    npm install gulp

    gulp ca

    gulp test-headless

    所有测试都跑过才算ok

    4>整体测试

    cd  test/fixtures/

    docker-compose up --force-recreate

    此时单机模拟环境已经启动

    cd $fabric-sdk-node

    gulp test

    所有测试都跑过才算ok

    参考网址:https://github.com/luckydogchina/fabric-sdk-node/blob/v1.0.0-alpha.1/README.md

    以上都ok了说明,你的fabric-sdk-node sdk没有问题。

    Fabric网络部署

    方法一:

    1>启动分布式环境:

    这个具体操作见上一篇博客,我将fabric-sdk-node 和 fabric orderer以及Org1、Couhdb节点部署在了 主机192.168.1.104上,Org2部署在了主机192.168.1.121上。

    2> 我们要对Fabric-sdk-node的代码进行一下修改:

    $fabric-sdk-node/test/integration/e2e/joinchannel.js

    var Client = require('fabric-client');
    var EventHub = require('fabric-client/lib/EventHub.js');
    var Block = require('fabric-client/lib/Block.js');
    
    var grpc = require('grpc');
    var _commonProto = grpc.load(path.join(__dirname, '../../../fabric-client/lib/protos/common/common.proto')).common;
    var _configtxProto = grpc.load(path.join(__dirname, '../../../fabric-client/lib/protos/common/configtx.proto')).common;
    
    var testUtil = require('../../unit/util.js');
    
    var the_user = null;
    var tx_id = null;
    var nonce = null;
    
    Client.addConfigFile(path.join(__dirname, './config.json'));
    var ORGS = Client.getConfigSetting('test-network');
    //此处添加以下两行,192。168.1.121是另一个主机的ip,修改时请替换为实际主机的ip
    ORGS.org2.peer1.requests = "grpcs://192.168.1.121:7051"
    ORGS.org2.peer1.events = "grpcs://192.168.1.121:7053"
    
    var allEventhubs = [];
    
    //

    $fabric-sdk-node/test/integration/e2e/e2eUtils.js

    var hfc = require('fabric-client');
    var EventHub = require('fabric-client/lib/EventHub.js');
    var testUtil = require('../../unit/util.js');
    
    var e2e = testUtil.END2END;
    hfc.addConfigFile(path.join(__dirname, './config.json'));
    var ORGS = hfc.getConfigSetting('test-network');
    
    //添加以下代码,192.168.1.121为另一个主机的地址,请根据实际情况进行替换
    ORGS.org2.peer1.requests = "grpcs://192.168.1.121:7051"
    ORGS.org2.peer1.events = "grpcs://192.168.1.121:7053"
    
    var tx_id = null;
    var nonce = null;
    var the_user = null;

    修改后按如下顺序执行js脚本:

    $fabric-sdk-node/test/integration/e2e/create-channel.js

    $fabric-sdk-node/test/integration/e2e/join-channel.js

    $fabric-sdk-node/test/integration/e2e/install-chaincode.js

    $fabric-sdk-node/test/integration/e2e/instantiate-chaincode.js

    如果都执行通过了,那么fabric的的网络搭建和chaincode安装部署就已经完成。

    利用Fbaric网络执行交易

     与上面的修改类似,也是将容器所在的地址,替换成对应的地址(主机ip:本地映射端口号)。执行invoke-chaincode.js 和query-chaincode.js,就可进行交易。

    方法二:

    除了上面的修改方法之外,还有一个最简单实用的方法,修改工程的配置文件:

     把里面grpcs 的地址修改成容器对应的地址(具体端口是由docker-compose中的配置文件决定的,id是宿主机的本地ip):

  • 相关阅读:
    Django中的syncdb命令
    notepad++下的字体设置
    python中的getattr函数
    python实现虚拟茶话会
    利用python爬取海量疾病名称百度搜索词条目数的爬虫实现
    SQL里面如何取得前N条数据?
    python中怎么查看当前工作目录和更改工作目录
    python中thread模块中join函数
    python中的自测语句是什么?
    python读取数据库数据有乱码怎么解决?
  • 原文地址:https://www.cnblogs.com/cnblogs-wangzhipeng/p/7028730.html
Copyright © 2011-2022 走看看