天天看點

基于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,就可進行交易。

方法二:

除了上面的修改方法之外,還有一個最簡單實用的方法,修改工程的配置檔案:

基于docker的 Hyperledger Fabric 多機環境搭建(下)

 把裡面grpcs 的位址修改成容器對應的位址(具體端口是由docker-compose中的配置檔案決定的,id是主控端的本地ip):

基于docker的 Hyperledger Fabric 多機環境搭建(下)

轉載于:https://www.cnblogs.com/cnblogs-wangzhipeng/p/7028730.html