Hyperledger Fabric1.4 Solo模式下的多机部署
之前写了手动部署Fabric中的first-network网络。但是Fabric网络都是运行在多台机器上的。本文将会详细说明Fabric如何完成solo模式下的多机部署。在看这篇文章之前建议读者自己动手运行过first-network
网络,并且默认读者熟悉Linux基本的命令。然后大致看过整篇文章后,再按照此篇文章搭建。
参考:
- https://blog.csdn.net/qq_36793353/article/details/78922369
- https://www.cnblogs.com/cbkj-xd/p/11067814.html
1. Solo模式与Kafka模式区别
- Solo模式是指单节点通信模式,该环境中只有一个排序(orderer)服务,从节点(peer)发送来的消息由一个orderer进行排序和产生区块;由于排序(orderer)服务只有一个orderer为所有节点(peer)服务,没有高可用性和可扩展性,不适合用于生产环境,可以用于开发和测试环境。
- Kafka模式是半中心化结构,在Kafka模式中排序服务是通过集群来实现的。通俗的来说就是Solo模式中排序节点(orderer)是由一台机器组成。而Kafak模式中排序节点(orderer)是由多台电脑组成。而Kafak模式下还使用到了zookeeper。这里不在深入介绍,想深入了解的朋友可通过百度或Google找到。
- 注:目前Fabric中还支持Raft共识下实现排序服务,并且比Kafka模式更好,所以如果需要搭建orderer集群的话,我会倾向于搭建Raft模式集群。
2. 搭建配置
系统:ubuntu 18.04、Fabric版本:v1.4.0。
本次Solo模式的搭建共用到了5台虚拟机,都是由最初的一台虚拟机复制来的 。这5台电脑域名和担任的角色如下所示:
域名 | 角色 | ip地址 |
---|---|---|
orderer.example.com | orderer | 10.xx.xx.201 |
peer0.org1.example.com | Org1 | 10.xx.xx.202 |
peer1.org1.example.com | Org1 | 10.xx.xx.203 |
peer0.org2.example.com | Org2 | 10.xx.xx.204 |
peer1.org2.example.com | Org2 | 10.xx.xx.205 |
3. 搭建过程
3.1 配置文件的修改
3.1.1 创建first-cluster
文件,并生成证书
# 当前目录位置为 fabric-samples
# 复制first-network目录,并改名为first-cluster
cp -r first-network first-cluster
# 进入 first-cluster
cd first-cluster
# 删除不必要的文件,最后firstcluster目录中的文件为
├── base
│ ├── docker-compose-base.yaml
│ └── peer-base.yaml
├── channel-artifacts
├── configtx.yaml
├── crypto-config.yaml
├── docker-compose-cli.yaml
├── docker-compose-couch.yaml
生成公私钥和MSP证书
# 当前目录位置为first-cluster
#step1 生成证书文件
../bin/cryptogen generate --config=./crypto-config.yaml
#step2 生成创世区块
../bin/configtxgen -profile TwoOrgsOrdererGenesis -channelID byfn-sys-channel -outputBlock ./channel-artifacts/genesis.block
#step3 生成通道配置文件 其中通道名mychannel可以修改为自己的
../bin/configtxgen -profile TwoOrgsChannel -outputCreateChannelTx ./channel-artifacts/channel.tx -channelID mychannel
#step4 生成锚节点配置文件
#========Org1=============
../bin/configtxgen -profile TwoOrgsChannel -outputAnchorPeersUpdate ./channel-artifacts/Org1MSPanchors.tx -channelID mychannel -asOrg Org1MSP
##========Org2=============
../bin/configtxgen -profile TwoOrgsChannel -outputAnchorPeersUpdate ./channel-artifacts/Org2MSPanchors.tx -channelID mychannel -asOrg Org2MSP
修改base/docker-compose-base.yaml
文件
将所有peer节点的端口映射都改为相同的,之前不同是因为所有的peer节点都在一台电脑运行,而现在分别在多台电脑运行的话,我们就可以改为相同的。
所有peer节点端口映射,如图:
3.1.2 创建和修改order节点的配置文件
# 当前目录位置为first-cluster
# 复制docker-compose-cli.yaml 并重命名为docker-compose-orderer.yaml
cp docker-compose-cli.yaml docker-compose-orderer.yaml
# 用vim打开docker-compose-orderer.yaml
vim docker-compose-orderer.yaml
将docker-compose-orderer.yaml
文件中与order