(4条消息) (三)Fabric2.0启动网络脚本配置剖析

目录

    • 2.1 排序节点启动

    • 2.2 节点启动

    • 1.byfn.sh

    • 2.docker-compose-cli.yaml

    • 3.docker-compose-etcdraft2.yaml

    • 4.总结

根据HyperLedger Fabric 2.0-release测试网络部署可知fabric网络启动主要依赖脚本./byfn.sh up
接下针对这个脚本进行剖析,研究fabric2.0 first-network的启动过程。

1.byfn.sh

查看byfn.sh找到up模式主要做了什么,如下图可见,执行networkUp这个function来实现fabric网络启动。

接下来进入networkUp详细阅读:

networkUp这个function里面核心脚本主要为以上红色框住的部分,分别为:
1. 检查二进制文件是否可用以及对应版本docker镜像是否存在。
2. 假如当前sh所在父目录不存在crypto-config目录就执行生成区块、通道以及证书脚本,详情请查看Fabric2.0 first-network 生成配置说明
3. 使用docker-compose命令启动fabric网络。
4. 加载go合约依赖包
5. 使用cli客户端执行脚本操作

其中在默认条件下启动yaml文件包括: docker-compose-cli.yaml     docker-compose-etcdraft2.yaml

2.docker-compose-cli.yaml

为了看清楚docker-compose-cli.yaml具体启动了什么,我们将文件拆分执行
首先打开控制台,输入以下命令

cd first-networkdocker-compose -f docker-compose-cli.yaml up -d 2>&1

执行结果如下图所示:

总共启动了6个容器分别是:
5个排序节点中的其中一个节点
orderer.example.com

两个组织org1、org2的节点
- peer0.org1.example.com
- peer1.org1.example.com
- peer0.org2.example.com
- peer1.org2.example.com

fabric客户端
cli

2.1 排序节点启动

orderer.example.com
从排序节点入手:
一般来说,我会从启动日志入手,先看结果再看配置,打开控制台,输入以下命令

docker logs -f orderer.example.com --tail=300

控制台输出了orderer.example.com的启动日志如下

由于太长我分开几个部分来说

(1)排序节点配置项输出:
排序节点启动的时候,会根据环境变量输出相应的配置,包括证书配置、监听端口配置等,

而这些配置对应就是docker-compose-cli.yaml的以下配置:

我们继续追踪base/docker-compose-base.yaml,找到orderer.example.com服务

从上图来看,orderer的配置还是引入peer-base.yaml中的orderer-base服务

从上图来看与日志输出配置匹配,就是yaml里面加了ORDERER_前缀,其余配置的修改也可通过这种方式。详细排序节点配置说明,晚点补充。

(2)加载创始区块,启动排序节点。

好的系统的一个好的日志输出,fabric的日志输出还是很优秀的,从日志输出可以跟踪排序节点启动究竟干了什么,通过上图日志输出,可以读到:

1.根据1的配置初始化排序节点2. 创建本地账本目录3. 设置排序节点服务监听端口4. 根据创始区块文件初始化本地账本5. 启动fabric系统通道6. 启动raft服务

(3)raft服务启动

上图已经标识了核心日志并且进行说明,有一点还是很清晰的就是,(对于没仔细研究fabric2.0 raft的人来说)一个通道就是一个raft服务集群。红色的日志是错误,在分配完raft集群节点后,其余节点没启动,所以都是失败的,后面一直在做重连操作。

以上就是orderer.example.com启动剖析过程。

2.2 节点启动

然后我们来看以下peer0.org1.example.com
打开控制台,输入以下命令

docker logs -f peer0.org1.example.com --tail=300

控制台输出结果如下:

peer节点启动主要是
1. 启动peer grpc服务
2. 初始化gossip服务
3. 初始化本地账本
4. 安装系统链码,这里比起1.x,2.0多了一个系统链码就是_lifecycle,是跟智能合约相关的链码,我们下一篇进行详解。
5. 基于gossip对同组织节点进行交互

3.docker-compose-etcdraft2.yaml

同样的套路,首先打开控制台,输入以下命令:

cd first-network docker-compose -f docker-compose-etcdraft2.yaml up -d 2>&1

控制台输出结果如下:

由上图可知,主要启动了其余4个排序节点

先不看新启动的排序节点,查看原本开始启动的orderer.example.com
控制台输入以下命令

docker logs --tail=300  -f orderer.example.com

控制台输出结果如下:

由日志可以观察到,orderer.example.com以及成功连接其他raft节点,并且在raft 的term2 leader 从orderer.example.com (0)变成orderer5.example.com(5)

接下来我们看一下orderer5.example.com节点的情况
控制台输入以下命令:

docker logs --tail=300  -f orderer5.example.com

控制台输出:

由日志可见,在term2 经过一轮投票后,orderer5获得5票回应成为了term2的raft leader。
整体网络处于完全启动状态。

4.总结

上面是对网络启动的脚本以及配置剖析,虽然比较简单,但是主要是展示整个学习的过程,一些比较详细的配置说明还是从官方文档学习比较好,通过上面的学习,也可以看到fabric2.0的一些新特性,主要集中在智能合约以及raft共识,后面将继续往这个方向进行研究。

(0)

相关推荐

  • 容器编排技术

    容器编排技术 两台docker环境 docker-compose 拖到/usr/local/bin cd /usr/local/bin chmod x docker-compose 以nginx为案列 ...

  • (4条消息) (十)Fabric2.0

    目录 4.1 获取配置 4.2 修改配置 4.3 签名并提交更新配置 1. 新增org3证书配置 2. 新增org3定义到区块链 3.启动org3相关节点容器 4. 更新通道配置 5. org3加入通 ...

  • (4条消息) (九)Fabric2.0 通道实践

    目录 2.1提取并解析通道配置 2.2 修改配置 2.2 重新编码跟提交配置 1.通道配置说明 2.更新通道 3. 总结 下面实践将基于已部署好的first-network. 1.通道配置说明 我们再 ...

  • (5条消息) (七)Fabric2.0智能合约实践

    总目录: (0) 如何利用区块链保护知识产权 (一)HyperLedger Fabric 2.0-release测试网络部署 (二)Fabric2.0 first-network 生成配置说明 (三) ...

  • (5条消息) (六)Fabric2.0 智能合约实践

    总目录: (0) 如何利用区块链保护知识产权 (一)HyperLedger Fabric 2.0-release测试网络部署 (二)Fabric2.0 first-network 生成配置说明 (三) ...

  • (5条消息) (五)Fabric2.0 智能合约实践

    目录 2.1 安装以及定义智能合约 2.1.1 打包合约 2.1.2 部署合约到节点 2.1.3 当前组织同意合约定义 2.1.4 检查合约定义是否满足策略 2.1.5 提交合约 2.1.6 查看节点 ...

  • (5条消息) (四)Fabric2.0通道实践

    目录 1.1 创建通道配置文件 1.2 环境准备 1.3 创建通道tx文件 1.创建通道准备 2.创建通道 3.节点加入通道 4.验证节点加入通道 5.总结 1.创建通道准备 1.1 创建通道配置文件 ...

  • (4条消息) (二)Fabric2.0 first

    ),为了加深对2.0的认识,从first-network的部署配置开始进行学习. 上篇有提到在运行Fabric网络前,先执行了./byfn.sh generate 实现创始区块.通道以及证书文件的生成 ...

  • (1条消息) 三数之和,程序员才懂的 Three Sum !

    今天给大家讲解一道经典鹅厂面试题,有一定难度.大家认真看哦. 建议先回顾一下前面关于该题简化版,二数之和. 两数之和(1) 01.题目示例 该题为 二数之和 的进阶版本,当然还有一个进阶版本为 四数之 ...

  • (4条消息) (八)Fabric2.0Java SDK实践

    总目录: (0) 如何利用区块链保护知识产权 (一)HyperLedger Fabric 2.0-release测试网络部署 (二)Fabric2.0 first-network 生成配置说明 (三) ...