超级账本Fabric 1.0是什么? 多节点集群的部署步骤是什么?

超级账本 Fabric 1.0即将揭开面纱,社区用户对此充满期待 。为迎接 Fabric 1.0 的发布,本文分3期连载,介绍如何搭建多节点的分布式 Fabric 集群,文后可下载PDF版本 。下面小编给大家介绍一下!
一、概述
在千呼万唤之后,犹抱琵琶的超级账本 Fabric 1.0 GA版即将揭开面纱,翘首以待的社区用户将广泛使用这个版本 。本文将介绍如何使用 Docker 容器技术来建立起一个多节点 Fabric 集群,并且描述在集群上如何进行基本的操作,如 chaincode 的生命周期维护等 。文中采用 Fabric 1.0 beta 的端到端(e2e_cli)示例作为基础来说明原理 。本文提供是手动配置的方法,后续将介绍利用容器平台(如 K8s 等)自动部署超级账本的方式 。
需要了解 Fabric 基本架构的读者可参考文后相关文章 。

超级账本Fabric 1.0是什么? 多节点集群的部署步骤是什么?


图1.1 单节点下的Fabric网络结构图
Fabric 源码中包含一个简单的e2e单机部署示例,方便用户理解、研究和开发应用 。如图1.1所示,在单个机器节点上通过 docker-compose 建立了5个节点的Fabric网络,每个节点都是由单独的 Docker 容器来模拟 。其中 peer0 和 peer1 是同属于 org1 的节点,peer2 和 peer3 是同属于 org2 的节点,它们都加入了相同的 channel 中,并在该 channel 中进行交易,而 orderer 则为该 channel 中的交易提供排序服务 。
超级账本Fabric 1.0是什么? 多节点集群的部署步骤是什么?


图1.2 多节点下的Fabric网络结构图
虽然e2e_cli的示例比较简单,但它把多个节点混合部署在一起,无法区分哪些配置对应哪个节点 。另外,在实际场景中,Fabric 节点可能会由不同的组织分别拥有和维护,peers 和 orderer 必然会分布在不同的物理节点上,因此多节点的Fabric 部署成为需要解决的问题,图1.2是多节点 Fabric 集群拓扑图 。
【注:下载本文PDF版本,可关注本公众号:亨利笔记,后台发送消息“多节点” 或 “DJD”即可 。】
下面是把单节点e2e_cli范例改为多节点的大致步骤:
1.准备环境
运行Fabric节点需要依赖以下工具:
a. Docker:用于管理Fabric镜像以及运行 peer 和 orderer 等组件
b.Docker-compose: 用于配置 Fabric 容器
c. Fabric源码:源码提供了用于生成证书和配置 channel 的工具和测试代码
d.Go语言开发环境:源码的工具编译依赖于 Go 语言
2.配置多节点Fabric集群
在单节点e2e_cli示例中,所有节点部署在同一个 docker-compose 的内部网络中,通过容器的7051端口进行通信 。但是在多节点的情况下,容器之间不能进行直接通讯,因此需要把容器的7051端口映射到宿主机上,通过各个宿主机的7051端口来实现节点间通信 。我们在每个节点中修改 docker-compose.yaml 中的 service 定义,在不同节点只启动需要的 service 。例如,在节点1中只启动peer0 的 service,在节点5中仅启动 orderer 等 。
3.启动多节点Fabric集群
在各个节点上配置好 Fabric 的启动环境后,需要依次登录到节点上通过docker-compose up的方式启动 Fabric 节点 。由于启动环境有依赖关系,如 peer1 以 peer0 作为发现节点,因此需要先启动 peer0 再启动 peer1。
4.配置channel
在 Fabric 中,channel 代表了一个私有的广播通道,保证了消息的隔离性和私密性,它由 orderer 来管理 。channel 中的成员共享该 channel 的账本,并且只有通过验证的用户才能在 channel 中进行交易,与一个 channel 相关的属性记录在该channel的初始区块中,可通过 reconfiguration 交易进行更改 。channel的初始区块由 create channel 交易生成,peer 向 orderer 发送该交易时会带有的 config.tx 文件,该文件定义 channel 的相关属性 。

推荐阅读