在前面《Fabric 基础 – crypto-config.yaml&configtx.yaml 配置文件详解》一文中,我们说到,搭建一个Fabric网络的第一步,是预备网络中各项配置文件。在这个过程中,需要使用到多个配置文件,并基于这些配置文件生成启动和管理网络所需要的相关文件。
Fabric网络中,需要对 Peer 节点、Orderer 节点,以及应用通道、组织身份等多种资源进行管理,这就需要一套进行配置、管理的完整机制。
本文将简单介绍节点、Orderer 节点上相关配置的文件。此外,还将简单介绍三大配置管理利器——cryptogen工具、configtxgen工具以及 configtxlator 工具。
一、配置文件
目前Fabric节点在启动时主要支持通过本地配置文件或环境变量指定配置的方式,同时结合命令行参数。
用户既可以将所有配置提前设置好,写入到本地配置文件供节点使用;也可以在配置文件中仅指定通常情况下的默认值,结合使用环境变量指定的动态方式,实现更为灵活的配置管理。
默认情况下,Fabric节点的主配置路径为 FABRIC_CFG_PATH 环境变量所指向路径,一般指向到/etc/hyperledger/fabric 路径。所有资源在不显式指定配置路径时,会尝试从系统默认的主配置路径下查找与自己相关的配置文件。
Fabric节点的默认配置文件路径、指定方式以及功能等,总结如表所示:
二、配置管理工具
Fabric 中还提供了一系列的配置管理工具,对网络中的配置等相关文件进行管理。这些工具及主要功能总结如表:
cryptogen–生成组织身份配置
在 Fabric 网络中,需要通过证书和密钥来管理和鉴别成员身份,经常需要进行证书生成和配置操作。通常这些操作可以使用 PKI 服务或者 OpenSSL 工具来手动实现单个证书的签发。
为了提高对负责组织结构和批量证书进行管理的效率,基于 Go 语言的 crypto 库,Fabric 提供了cryptogen(Crypto Generator)工具。
cryptogen可以快速地根据配置自动批量生成所需要的密钥和证书文件,或者查看配置模板信息,主要实现代码在 common/tools/cryptogen包下。
configtxgen–生成通道配置
由于区块链系统自身的分布式特性,对其中配置进行更新和管理是一件很有挑战的任务。一旦出现不同节点之间配置不一致,就可能导致整个网络功能异常。
在 Fabric 网络中,通过采用配置交易(Configuration Transaction,ConfigTX)这一创新设计来实现对通道相关配置的更新。配置更新操作如果被执行,也要像应用交易一样经过网络中节点的共识确认。
configtxgen(Configuration Transaction Generator)工具是一个很重要的辅助工具,它可以配合cryptogen生成的组织结构身份文件使用,离线生成跟通道有关的配置信息,相关的实现在 common/configtx 包下。
主要功能有如下三个:
· 生成启动 Orderer 需要的初始区块,并支持检查区块内容;
· 生成创建应用通道需要的配置交易,并支持检查交易内容;
· 生成锚点 Peer 的更新配置交易。
默认情况下,configtxgen工具会依次尝试从$FABRIC_CFG_PATH 环境变量指定的路径,当前路径和/etc/hyperledger/fabric 路径下查找 configtx.yaml 配置文件并读入,作为默认的配置。环境变量中以 CONFIGTX_ 前缀开头的变量也会被作为配置项。
configtxlator-转换配置
configtxgen工具可以用来生成通道相关的配置交易和系统通道初始区块等并进行简单的查看。但是如果想对这些配置进行修改,就比较困难了,因为无论配置交易文件还是初始区块文件都是二进制格式(严格来说,是 Protobuf 消息数据结构导出到本地文件),无法直接进行编辑。
configtxlator 工具可以将这些配置文件在二进制格式和方便阅读编辑的 Json 格式之间进行转换,方便用户更新通道的配置。
configtxlator 工具自身是个比较简单的 RESTful 服务程序,启动后默认监听在 7059 端口。支持通过–hostname=<addr>来指定服务监听地址,通过–port int 来指定服务端口。
例如采用如下命令启动 configtxlator 服务,并且监听在 7059 端口:
$ configtxlator start --hostname="0.0.0.0" --port 7059
[configtxlator] main -> INFO 001 Serving HTTP requests on 0.0.0.0:7059
三、总结
为了启动一个相对复杂的 Fabric 网络,往往需要依赖多个启动配置文件,包括初始区块、配置交易文件、身份证书等。这些文件可以使用 cryptogen 工具和configtxgen工具进行生成,并使用 configtxlator 工具进行解析和操作。
转自知乎 苏小乐 :https://www.zhihu.com/people/shan-de-ding-zhu/activities