实战Hyperledger Fabric 1.4 Kafka排序服务多机集群
Hyperledger Fabric区块链网络搭建已繁琐著称。本教程将介绍如何部署一个分布在4个主机上包含多个排序节点和对等节点的hyperledger fabric区块链集群网络,同时提供源码和配置文件下载。
相关教程推荐:
1、服务结构
我们要搭建的Hyperledger Fabric网络拓扑结构如下:
网络包含如下服务:
- 1个机构:org1.example.com
- 3个对等节点:peer0.example.com、peer1.example.com、peer2.example.com
- 1个CA节点:ca.example.com
- 3个排序节点:order0.example.com、order1.example.com、order2.example.com
- 3个zookeeper节点:zookeeper0、zookeeper1、zookeeper2
- 4个kafka节点:kafka0、kafka1、kafka2、kafka3
2、部署服务
2.1 部署ca、orderer和kafka
如上图所示,首先在server1上部署CA节点、排序节点、kafka节点和zookeeper节点,使用的docker-compose文件文件为docker-compose-kafka.yml
:
# deploy ca, zookeerper, kafka and orderers on server0 docker-compose -f deployment/docker-compose-kafka.yml up -d
在docker-compose文件中,我们为ca和orderer服务定义了extra_hosts属性,其中包含了所有对等节点的信息。由于ca和orderer可能需要与对等节点通信,因此它们需要了解对等节点的信息。peers部署在不同的主机上,因此我们可以在extra_hosts字段定义peer0、peer1和peer2的主机。
extra_hosts: - "peer0.org1.example.com:172.31.26.5" - "peer1.org1.example.com:172.31.20.177" - "peer2.org1.example.com:172.31.27.143"
2.2 部署peer0和cli0
我们在server2上部署peer0和cli0,其中cli0将接入peer0。使用的docker-compose文件为docker-compose-peer0.yml和docker-compose-cli.yml:
# deploy peer0 docker-compose -f deployment/docker-compose-peer0.yml up -d # deploy cli0 docker-compose -f deployment/docker-compose-cli0.yml up -d
在docker-compose-peer0.yml中,我们定义了如下的extra_hosts字段,其中包含了所有排序节点、peer1和peer2的主机信息。添加其他对等节点信息的主要原因在于,对等节点使用gossip协议来向其他peer广播区块。
extra_hosts: - "orderer0.example.com:172.31.25.198" - "orderer1.example.com:172.31.25.198" - "orderer2.example.com:172.31.25.198" - "ca.example.com:172.31.25.198" - "peer1.org1.example.com:172.31.20.177" - "peer2.org1.example.com:172.31.27.143"
在docker-compose-cli0.yml中包含了排序节点的主机信息,因为cli命令在执行交易时需要与排序节点通信:
extra_hosts: - "orderer0.example.com:172.31.25.198" - "orderer1.example.com:172.31.25.198" - "orderer2.example.com:172.31.25.198"
2.3 部署peer1和cli1
接下来我们在server3上部署peer1和cli1:
# deploy peer1 docker-compose -f deployment/docker-compose-peer1.yml up -d # deploy cli1 docker-compose -f deployment/docker-compose-cli1.yml up -d
在docker-compose-peer1.yml中的extra_hosts中包含了排序节点主机和其他对等节点主机(peer0和peer2)的信息。docker-compose-cli.yml中的extra_hosts字段定义了排序节点的主机信息。
2.4 部署peer2和cli2
最后,我们在server4上部署peer2和cli2:
# deploy peer2 docker-compose -f deployment/docker-compose-peer2.yml up -d # deploy cli2 docker-compose -f deployment/docker-compose-cli2.yml up -d
同样在docker-compose文件中需要指定extra_hosts。
3、配置通道
现在已经完成了服务部署,接下来就需要配置通道了。
3.1 创建通道
通过接入server2上的peer0,执行如下命令创建通道:
# create channel from peer0 on server2 # it connects to orderer0 docker exec -e "CORE_PEER_LOCALMSPID=Org1MSP" \ -e "CORE_PEER_MSPCONFIGPATH=/var/hyperledger/users/Admin@org1.example.com/msp" \ peer0.org1.example.com peer channel create -o orderer0.example.com:7050 -c mychannel -f /var/hyperledger/configs/channel.tx
接下来我们将把所有三个对等节点加入通道
3.2 将peer0加入通道
现在接入server2上的peer0,执行如下的命令:
# join peer0 to channel # execute this command from server1 docker exec -e "CORE_PEER_LOCALMSPID=Org1MSP" \ -e "CORE_PEER_MSPCONFIGPATH=/var/hyperledger/users/Admin@org1.example.com/msp" \ peer0.org1.example.com peer channel join -b mychannel.block
上面的命令将在peer0容器内生成mychannel.block。
3.3 将mychannel.block拷贝到peer1和peer2
# copy mychannel.block from peer0 to host(server2) docker cp peer0.org1.example.com:/mychannel.block . # transfer mychannel.block to server3 and server4 via scp scp -r mychannel.block ubuntu@172.31.20.177: scp -r mychannel.block ubuntu@172.31.27.143: # copy mychannel.block to peer1 and peer2 # peer1 is on server3 # peer2 is on server4 docker cp mychannel.block peer1.org1.example.com:/mychannel.block docker cp mychannel.block peer2.org1.example.com:/mychannel.block # remove mychannel.block from server2, server3 and server4 rm mychannel.block
3.4 将peer1加入通道
现在可以将server3上的peer1加入通道:
# join peer1 to channel # execute this command from server3 machine docker exec -e "CORE_PEER_LOCALMSPID=Org1MSP" -e "CORE_PEER_MSPCONFIGPATH=/var/hyperledger/users/Admin@org1.example.com/msp" \ peer1.org1.example.com peer channel join -b mychannel.block
3.5 将peer2加入通道
同样,可以将server4上的peer2加入通道:
# join peer2 to channel # execute this command from server4 machine docker exec -e "CORE_PEER_LOCALMSPID=Org1MSP" -e "CORE_PEER_MSPCONFIGPATH=/var/hyperledger/users/Admin@org1.example.com/msp" \ peer2.org1.example.com peer channel join -b mychannel.block
4、配置链码
4.1 安装链码
链码在chaincode
目录。我们使用cli在每个peer节点上安装链码。
# install on peer0 on server2 # cli container connects to peer0 docker exec -it cli peer chaincode install -n mycc -p github.com/chaincode -v v0 # install on peer1 on server3 # cli container connects to peer1 docker exec -it cli peer chaincode install -n mycc -p github.com/chaincode -v v0 # install on peer2 on server4 # cli container connects to peer2 docker exec -it cli peer chaincode install -n mycc -p github.com/chaincode -v v0
4.2 实例化链码
现在可以实例化链码了。在通道上只需要进行一次实例化。因此我们用server2上的cli0进行链码实例化操作:
# instantiate chaincode from peer0 on server2 # it connects to orderer0 docker exec -it cli peer chaincode instantiate -o orderer0.example.com:7050 \ -C mychannel -n mycc github.com/chaincode -v v0 -c '{"Args": ["a", "100"]}'
5、交易的执行与查询
5.1 执行交易
我们使用server2上的cli0调用链码交易:
# invoke transaction from peer0 on server2 # it connects to orderer0 on server1 docker exec -it cli peer chaincode invoke -o orderer0.example.com:7050 \ -n mycc -c '{"Args":["set", "a", "20"]}' -C mychannel
5.2 查询交易
我们使用server4上的cli2查询交易:
# query transaction from peer2 on server4 docker exec -it cli peer chaincode query \ -n mycc -c '{"Args":["query","a"]}' -C mychannel
本教程的源代码及配置文件可以在这里下载。
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
2019 Real World CTF举行 白帽黑客上演“神仙打架”
12月7日,由长亭科技举办的2019 Real World CTF国际网络安全大赛在北京正式拉开帷幕。本次大赛以“Hack the real”为主题,为期两天的盛会囊括“国际网络安全大赛”“阿里云安全挑战赛”“安全训练营”“技术论坛”“Hack Valley”五大板块,国际网络安全战队、行业专家齐聚一堂,共同打造一场极客盛典。 上午9点,12支入围线下总决赛的知名国际战队悉数亮相。他们中有来自卡内基梅隆大学的明星战队PPP,有荣获过多年Hack.lu CTF冠军的波兰战队 Dragon Sector,有2018年世界排名第四的日本战队TokyoWesterns,还有CTFtime实时排名第二名的Balsn……高手云集,再次开启一场基于真实世界的网络安全超强博弈。 比赛现场 在充满科技感的赛场里,12强战队各自据守一方“阵地”。选手以外国面孔居多,共同的特征就是“年轻”和“专注”。他们时而深思,时而队内交流,时而在键盘上飞速敲击,紧张的氛围笼罩全场。通过现场大屏幕上闪现的代码和画面,观众能真切感受到,一场看不见硝烟的战争已经打响。 选手认真应战中 在另一个会场,备受瞩目的阿里云安全挑战赛...
- 下一篇
10大未来趋势以及首席信息官如何在2020年保持领先
经过数年的数字化颠覆和不确定性,未来的业务将成为焦点。人们需要了解一下IT组织的未来。 著名的科幻小说作家威廉·吉布森(William Gibson)说,“未来就在这里,只是分布不均”,而这句话可以用来描述数字企业的发展现状。 尽管一些企业已经实现了超速发展、超大规模、超级连接,但还有许多企业仍在致力于实施数字化转型计划,从而避免受到行业竞争和市场力量的打击。 对于数字时代的首席信息官来说,随着其竞争对手加快数字化转型,其行动的时间已经不多。尽管如此,首席信息官仍然可以采取具体行动来创建数字化的“未来业务”。 以下是基于调研机构IDC公司开展的“全球首席信息官2020年议程”预测,介绍了有关技术、市场和生态系统的信息,以帮助首席信息官更好地了解未来趋势、其对企业的影响,以及在未来一年中采取哪些步骤将使他们获得成功。 1.到2024年,将有80%的数字化高级组织采用IT自助服务模型。 该模型可以提供云计算解决方案库、功能即服务(FaaS)和低代码/无代码工具,非IT用户或开发人员可以轻松访问和使用这些工具,从而使企业能够快速响应不断变化的市场,无需涉及IT,但可以保证这些解决方案将是安全...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- CentOS8编译安装MySQL8.0.19
- CentOS关闭SELinux安全模块
- Linux系统CentOS6、CentOS7手动修改IP地址
- Docker安装Oracle12C,快速搭建Oracle学习环境
- CentOS8,CentOS7,CentOS6编译安装Redis5.0.7
- CentOS7,8上快速安装Gitea,搭建Git服务器
- Windows10,CentOS7,CentOS8安装MongoDB4.0.16
- SpringBoot2编写第一个Controller,响应你的http请求并返回结果
- 设置Eclipse缩进为4个空格,增强代码规范
- Windows10,CentOS7,CentOS8安装Nodejs环境