深度学习
区块链分布式结构的特点,使得对其进行安装部署时相较于单点系统要复杂得多,需要从多个角度进行仔细考量和论证。这里总结一些在生产环境中进行应用时需要注意的地方。1.节点角色差异Fabric网络中各个节点可以拥有不同的角色。不同角色的众多节点负责整个网络功能中不同环节的工作负载,呈现出了差异化的处理特性。Ordering服务需要处理整个网络中所有的交易消息,是全网的关键组件,Orderer节点采用Kafka集群进行排序,本地维护了网络中所有通道的区块链结构,往往大量吞吐区块文件。因此,对于Orderer节点来讲需要加强内存、存储、网络IO方面的配置,并且采用集群的方式提高其可靠性。Peer节点除了处理区块和背书交易(Endorser)之外,还需要对账本状态进行更新(Committer),对
错误源于复杂,简单臻于优雅。在上一章节的学习中,笔者介绍了安装部署一个Fabric网络的完整过程。在这个过程中,需要使用到多个配置文件,并基于这些配置生成启动和管理网络所需要的相关文件。本章将对这些配置文件、配置工具的作用进行更为详细的介绍,让读者理解配置文件的结构和语法,并掌握对其进行管理的更多技巧。通过本章内容的学习,读者将掌握Peer节点、Orderer节点上相关配置的描述和功能,以及如何对配置进行更新和管理。此外,还介绍了三大配置管理利器——cryptogen工具、configtxgen工具以及configtxlator工具。
Fabric网络中,需要对Peer节点、Orderer节点,以及应用通道、组织身份等多种资源进行管理,这就需要一套进行配置、管理的完整机制。10.1.1 配置文件目前Fabric节点在启动时主要支持通过本地配置文件或环境变量指定配置的方式,同时结合命令行参数。用户既可以将所有配置提前设置好,写入到本地配置文件供节点使用;也可以在配置文件中仅指定通常情况下的默认值,结合使用环境变量指定的动态方式,实现更为灵活的配置管理。默认情况下,Fabric节点的主配置路径为FABRIC_CFG_PATH环境变量所指向路径,一般指向到/etc/hyperledger/fabric路径。所有资源在不显式指定配置路径时,会尝试从系统默认的主配置路径下查找与自己相关的配置文件。Fabric节点的默认配置文件路径、
当Peer节点作为服务端启动时,会按照优先级从高到低的顺序依次尝试从命令行参数、环境变量或配置文件中读取配置信息。当从环境变量中读入配置时,需要以CORE_前缀开头,例如配置文件中的peer.id项,对应到环境变量CORE_PEER_ID。Peer节点默认的配置文件读取路径为$FABRIC_CFG_PATH/core.yaml;如果没找到,则尝试查找当前目录下的./core.yaml文件;如果还没有找到,则尝试查找默认的/etc/hyperledger/fabric/core.yaml文件。Fabric代码中提供了一些示例的core.yaml配置文件(如sampleconfig/core.yaml),可以作为参考。在结构上,core.yaml文件中一般包括logging、peer、vm、ch
Orderer节点可以组成集群来在Fabric网络中提供排序服务。类似地,支持从命令行参数、环境变量或配置文件中读取配置信息。当从环境变量中读入配置时,需要以ORDERER_前缀开头,例如配置文件中的general.ListenAddress项,对应到环境变量ORDERER_GENERAL_LISTENADDRESS。再比如,可以通过如下方式启动orderer节点,指定日志输出级别为debug,其他配置从配置文件中读取:$ORDERER_GENERAL_LOGLEVEL=debugordererstartOrderer节点默认的配置文件读取路径为$FABRIC_CFG_PATH/orderer.yaml;如果没找到,则尝试查找当前目录下的./orderer.yaml文件;如果还没有
在Fabric网络中,需要通过证书和密钥来管理和鉴别成员身份,经常需要进行证书生成和配置操作。通常这些操作可以使用PKI服务或者OpenSSL工具来手动实现单个证书的签发。为了提高对负责组织结构和批量证书进行管理的效率,基于Go语言的crypto库,Fabric提供了cryptogen(CryptoGenerator)工具。cryptogen可以快速地根据配置自动批量生成所需要的密钥和证书文件,或者查看配置模板信息,主要实现代码在common/tools/cryptogen包下。10.4.1 配置文件cryptogen工具支持从配置文件(通过-config参数指定,通常命名为crypto-config.yaml)中读入YAML格式的配置模板信息。一般情况下,配置文件中会指定网络的拓扑结构,
由于区块链系统自身的分布式特性,对其中配置进行更新和管理是一件很有挑战的任务。一旦出现不同节点之间配置不一致,就可能导致整个网络功能异常。在Fabric网络中,通过采用配置交易(ConfigurationTransaction,ConfigTX)这一创新设计来实现对通道相关配置的更新。配置更新操作如果被执行,也要像应用交易一样经过网络中节点的共识确认。configtxgen(ConfigurationTransactionGenerator)工具是一个很重要的辅助工具,它可以配合cryptogen生成的组织结构身份文件使用,离线生成跟通道有关的配置信息,相关的实现在common/configtx包下。主要功能有如下三个:·生成启动Orderer需要的初始区块,并支持检查区块内容
通过之前小节的讲解可以知道,configtxgen工具可以用来生成通道相关的配置交易和系统通道初始区块等并进行简单的查看。但是如果想对这些配置进行修改,就比较困难了,因为无论配置交易文件还是初始区块文件都是二进制格式(严格来说,是Protobuf消息数据结构导出到本地文件),无法直接进行编辑。configtxlator工具可以将这些配置文件在二进制格式和方便阅读编辑的Json格式之间进行转换,方便用户更新通道的配置。configtxlator工具自身是个比较简单的RESTful服务程序,启动后默认监听在7059端口。支持通过--hostname=<addr>来指定服务监听地址,通过--portint来指定服务端口。例如采用如下命令启动configtxlator服务,并且
信息安全建立在对整个业务体系的深入理解之上。超级账本FabricCA项目为超级账本Fabric网络提供了基于PKI的身份证书管理服务。基于它提供的ECert和TCert,Fabric网络中可以根据业务需求实现十分灵活的权限控制和审计功能。毫不夸张地说,FabricCA为Fabric提供了构建面向企业场景联盟链的信任基石。本章具体介绍了如何安装FabricCA,并讲解了包括服务端和客户端的一系列命令、参数和配置。最后还探讨了在生产环境对FabricCA服务进行部署时需要考量的一些问题。
FabricCA项目原来是超级账本Fabric内的MemberService组件,负责对网络内各个实体的身份证书进行管理。鉴于其功能十分重要,2017年2月正式成立FabricCA独立子项目,负责相关代码的维护。FabricCA项目主要实现了如下几个功能:·负责Fabric网络内所有实体(Identity)的身份管理,包括身份的注册、注销等;·负责证书管理,包括ECerts(身份证书)、TCerts(交易证书)等的发放和注销;·服务端支持基于客户端命令行和RESTfulAPI的交互方式。在实现上,FabricCA基于开源的CFSSL项目框架。代码同时托管在http://gerrit.hyperledger.org和http://github.com/hyperledg