本项目致力于阐述从头开始部署一个fabric生产环境网络的过程。网上的相关文章有很多,大多参差不齐,经过较长时间摸索和实践,总结了自己的部署步骤和心得,抛砖于此,希望对有需要的小伙伴有所帮助。
项目的相关文件都放在了github上,方便大家查看:
1. 准备二进制程序
搭建fabric网络。需要以下预先安装以下程序:
- orderer。排序节点。负责产生区块
- peer。业务节点,负责执行逻辑,合约
- fabric-ca-server。证书服务器,用于颁发证书
- fabric-ca-client。证书客户端,用户向服务器获取证书
- configtxgen。辅助工具用于配置channel
另外还要安装Docker。
Docker,江湖中传说的鬼刀,听说其锋利无比,但若使用不当,也会饮主人之血。在开展本项目之前,少侠你至少得把Docker这把刀熟悉熟悉
2. 网络拓扑结构
根据fabric的心法总纲[图书馆传送门~~~>](), 我们要预先规划一下网络结构
这里使用三个orderer, 两个peer, 两个CA。为了后续操作,还增加了两个管理员用户
分别隶属两个组织, orgA, orgB
- orgA, 包含orderer1-orgA, orderer2-orgA,peer1-orgA, admin1-orgA以及ca-orgA
- orgB, 包含orderer1-orgB,peer1-orgB, admin1-orgB以及ca-orgB
整体结构如图:

3. 搭建CA及颁发证书
第一步要做的,是搭建CA服务器,并颁发对应证书。
CA服务器的使用,请移步:[神秘的传送门~~~>]()
我们需要给所有的成员都颁发证书,我们把所有的证书和密钥文件都保存在一个文件夹中,结构如下:
$ tree .
.
├── admin-orgA.crt
├── admin-orgA.key
├── admin-orgB.crt
├── admin-orgB.key
├── orderer1-orgA.crt
├── orderer1-orgA.key
├── orderer1-orgB.crt
├── orderer1-orgB.key
├── orderer2-orgA.crt
├── orderer2-orgA.key
├── peer1-orgA.crt
├── peer1-orgA.key
├── peer1-orgB.crt
├── peer1-orgB.key
├── root-orgA.crt
├── root-orgA.key
├── root-orgB.crt
└── root-orgB.key
注意证书原本的后缀pem,为了便于查看才修改为key, crt的。key代表私钥,crt代表证书。
这些文件将来会被拷贝到项目的各个地方
4. 部署network
拥有了证书,下一步就是部署orderer集群了,orderer集群是fabric的基础网络,现阶段主流是采用raft共识。
具体部署orderer集群的姿势在这里
5. 部署一个Application Channel
由了orderer集群,意味着fabric的基础网络已经搭好,如果你了解tendermint,就知道区块链中基础网络和业务逻辑的分层概念。其实fabric也是一样的,orderer就相当于基础网络,只负责同步数据,但数据的业务逻辑是不解读的。
业务逻辑的执行工作交给了Application Channel,同是为了配合流行的私链概念,orderer上建立的Application Channel可以是多个,一个Channel就相当于一个私链,彼此之间数据隔离。Channel是fabric网络中必须的,至少得有一个Application Channel:
6. 部署链码
OK, 至此,私链已经搭好了,现在我们需要访问它。私链的访问是需要通过智能合约的,fabric有时候叫链码,名字有点混乱,说法上有时候二者有区别,有时候又没区别,
我们不管它,就直接理解为智能合约即可
链码的操作如下:
7. 运维监控
至此,链码已经部署好后,fabric的搭建工作已经完成了,接下来就可以向别人展示你的区块链剑法,假如能有所用的话。
但我们尽善尽美一点,再来一个运维监控,给你的剑法再来一点炫酷的收手式,加一些诸如“小生不知天高地厚,实在赢得侥幸”之类充满人情味的话,以后大家再见面,也不那么难堪,毕竟,这就是江湖
[Prometheus+Grafana:花里胡哨的收手式~~~>]()
回复 agodelo 取消回复