hyperledger fabric 1.0.5 分布式部署 (五)
梳理fabric e2e_cli 测试程序的具体步骤
作者在 hyperledger fabric 1.0.5 分布式部署 (一)中给读者们介绍了如何从零开始部署一个测试的 demo 环境,如果细心的读者可能会留意到,在启动fabric 的服务时,是直接执行network_setup.sh 脚本命令启动服务的。
如果我们打开 network_setup.sh 脚本查看,会发现启动的关键代码如下
function networkUp () {
if [ -f "./crypto-config" ]; then
echo "crypto-config directory already exists."
else
#Generate all the artifacts that includes org certs, orderer genesis block,
# channel configuration transaction
source generateArtifacts.sh $CH_NAME
fi
if [ "${IF_COUCHDB}" == "couchdb" ]; then
CHANNEL_NAME=$CH_NAME TIMEOUT=$CLI_TIMEOUT docker-compose -f $COMPOSE_FILE -f $COMPOSE_FILE_COUCH up -d >&
else
CHANNEL_NAME=$CH_NAME TIMEOUT=$CLI_TIMEOUT docker-compose -f $COMPOSE_FILE up -d >&
fi
if [ $? -ne ]; then
echo "ERROR !!!! Unable to pull the images "
exit
fi
docker logs -f cli
}
读者可以看到,实际上 network_setup.sh 脚本就执行了两个命令,分别是
source generateArtifacts.sh $CH_NAME
CHANNEL_NAME=$CH_NAME TIMEOUT=$CLI_TIMEOUT docker-compose -f $COMPOSE_FILE -f $COMPOSE_FILE_COUCH up -d >&
让我们先来分析 generateArtifacts.sh 脚本
- generateArtifacts.sh 脚本
generateArtifacts.sh 脚本的主要构成部分为三个函数,分别是
- generateCerts
- replacePrivateKey
- generateChannelArtifacts
generateCerts 函数的工作内容主要是根据 e2e_cli/crypto-config.yaml 描述的组织机构形式生成对应的私钥和证书,以供后续节点通讯使用。
fabric 用来生成私钥和证书的程序叫“cryptogen”,生成私钥和证书的命令为
cryptogen generate --config=./crypto-config.yaml
cryptogen 生成的私钥和证书文件存放在 e2e_cli/crypto-config
replacePrivateKey 函数的工作内容则是基于新生成的私钥和证书文件来修改docker-compose-e2e.yaml 配置文件中的相关私钥和证书信息,因为e2e_cli demo 没有用到 ca 服务,所以暂时不讨论这个方法,读者可以理解为该函数对于部署e2e_cli 没有任何帮助。
generateChannelArtifacts 函数的工作内容主要是创建创世块区,创建channel 对应的文件,以及将组织机构信息添加到channel 上。
该函数主要依赖 configtxgen 命令执行,configtxgen 通过读取 configtx.yaml 配置文件配置获取节点的组织关系。另外,configtxgen 依赖之前生成的私钥和证书工作,所以执行有先后顺序。
创建创世块区的命令
configtxgen -profile TwoOrgsOrdererGenesis -outputBlock ./channel-artifacts/genesis.block
创建 channel 文件
configtxgen -profile TwoOrgsChannel -outputCreateChannelTx ./channel-artifacts/channel.tx -channelID $CHANNEL_NAME
生成节点集合认证文件
configtxgen -profile TwoOrgsChannel -outputAnchorPeersUpdate ./channel-artifacts/Org1MSPanchors.tx -channelID $CHANNEL_NAME -asOrg Org1MSP
configtxgen -profile TwoOrgsChannel -outputAnchorPeersUpdate ./channel-artifacts/Org2MSPanchors.tx -channelID $CHANNEL_NAME -asOrg Org2MSP
- docker-compose 命令
如果在执行 network_setup.sh 脚本时,指定使用 couchdb 作为存储,则用户在启动e2e_cli 相关docker 镜像时会同时启动常规节点镜像和couchdb 镜像。
常规节点镜像包含,orader、peer、cli 镜像,描述启动常规节点镜像的配置文件为 docker-compose-cli.yaml。
docker-compose 在启动 cli 时,还会执行一个 script.sh 脚本,该脚本描述了如何在fabric 集群中创建channel,以及如何将chaincode 加入到 channel 中。
- script.sh 脚本
用户需要首先需要理解,script.sh 脚本是在 cli 的docker 镜像中执行,并且在宿主机器上执行。
在 script.sh 脚本中,有以下5大函数需要用户注意的
- setGlobals,设置环境变量,执行peer 命令时,主要依赖这些环境变量来执行对应的命令,例如哪个peer 节点加入到channel 中
- createChannel,创建channel
- joinChannel,将对应的peer 节点加入到channel 中
- updateAnchorPeers,将各个peer 节点和组织机构绑定在一起
- installChaincode,给channel 安装 chaincode
script.sh 脚本中,chaincodeQuery 和 chaincodeInvoke 都是e2e_cli demo的测试部分,对于部署fabric 集群没有任何帮助
参考博客:
http://www.cnblogs.com/aberic/p/7542835.html
hyperledger fabric 1.0.5 分布式部署 (五)的更多相关文章
- hyperledger fabric 1.0.5 分布式部署 (七)
fabric 使用 fabric-ca 服务 准备部分 首先需要用户从github上download fabric-ca 的工程代码 cd $GOPATH/src/github.com/hyperle ...
- hyperledger fabric 1.0.5 分布式部署 (六)
如何在相同的peer 节点上创建多个 channel 作者在hyperledger fabric 1.0.5 分布式部署 (五)已经向读者们介绍了一个简单的fabric 的部署流程,那么根据上一篇博客 ...
- hyperledger fabric 1.0.5 分布式部署 (八)
gdb debug peer 程序 在开始我们从 github 上download 下来的源码包,实际上已经包含了可执行的 peer 程序,但是该程序是使用 release 方式编译的,并不支持gdb ...
- hyperledger fabric 1.0.5 分布式部署 (四)
chaincode 的开发 作者在hyperledger fabric 1.0.5 分布式部署 (三)中向读者介绍了如何开发fabric 的chaincode,那么实际上chaincode 还有其他的 ...
- hyperledger fabric 1.0.5 分布式部署 (二)
环境:2台 ubuntu 16.04 角色列表 角色 IP地址 宿主端口 docker端口 peer0.org1.example.com 47.93.249.250 7051 7051 pe ...
- hyperledger fabric 1.0.5 分布式部署 (三)
本篇博客主要是向读者介绍 fabric 在部署时的一些细节,还有作者自己学习过程中的心得. 初始化相关密钥的程序,实际上是一个shell脚本,并且结构特别简单 generateArtifacts.sh ...
- hyperledger fabric 1.0.5 分布式部署 (一)
环境是个人虚拟机ubuntu 16.04 64 位版本 前期用户需要先安装好:gcc.g++.git 软件 安装 golang 首先给环境安装一个 go 语言环境,版本最好在1.8 以上 golang ...
- hyperledger fabric 1.0.5 分布式部署 (九)
linux 使用vim.ctags 配置fabric 源码阅读环境 首先需要安装 ctags,作者使用apt-get 来安装的,安装的版本是5.9 apt-get install ctags 5.9 ...
- Hyperledger Fabric 1.0 学习搭建 (五)--- 启动Fabric多节点集群
5.1.启动orderer节点服务 上述操作完成后,此时各节点的compose配置文件及证书验证目录都已经准备完成,可以开始尝试启动多机Fabric集群. 首先启动orderer节点,切换至order ...
随机推荐
- 哈希表的java实现
一.为什么要用哈希表 树的操作通常需要O(N)的时间级,而哈希表中无论存有多少数据,它的插入和查找(有时包括删除)只需要接近常量级的时间,即O(1)的时间级. 但是哈希表也有一定的缺点:它是基于数组的 ...
- ajax json html 结合
<table id="datas" border="1" cellspacing="0" style="border-col ...
- emoji字符不能插入MySQL数据库,提示“'\xF0\x9F\x98\x84' for column 'XXXX' at row 1”
从网络中取下的数据解析后不能插入数据库,提示某个字段有问题,问题提示如下: SQLException: Incorrect string value: '\xF0\x9F\x98\x84' for c ...
- db的操作
'/---------------------------------------------------------------------------------------------- '/ ...
- BZOJ 2002 Bounce 弹飞绵羊 —— 分块算法
题目链接:https://vjudge.net/problem/HYSBZ-2002 2002: [Hnoi2010]Bounce 弹飞绵羊 Time Limit: 10 Sec Memory Li ...
- 【EOJ Monthly 2018.2 (Good bye 2017)】
23333333333333333 由于情人节要回家,所以就先只放代码了. 此题是与我胖虎过不去. [E. 出老千的 xjj] #include<cstdio> #include<c ...
- HDU2147 kiki's game (SG表找规律)
Recently kiki has nothing to do. While she is bored, an idea appears in his mind, she just playes th ...
- python 基础之第十一天(面向对象)
#############面向对象##################### 类: In [1]: class MyClass(object): ##用class定义一个类 ...: def psta ...
- windows install JDK&&JRE
重装系统后,安装的java环境没了,只能重装一下~~~~ 1.下载JDK 2.这里会安装两次,其中第一次为安装 JDK,第二次安装JRE,建议不要将这两个放在同一个文件夹. 3.配置环境变量 用鼠标右 ...
- sizeToFit的学习与认知
今天一扫前两日的坏心情,终于有心情平静下来,今天我是根据网络上的一些资料进行学习,今天学习的内容是 sizeToFit() 方法在不方便手动布局的场景中的使用. 首先感谢资料的提供者:参考1 参考2 ...