您好,登录后才能下订单哦!
这篇文章主要介绍Hyperledger Fabric 1.4 Kafka集群如何部署,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!
Hyperledger Fabric区块链网络搭建已繁琐著称。本教程将介绍如何部署一个分布在4个主机上包含多个排序节点和对等节点的hyperledger fabric区块链集群网络,同时提供源码和配置文件下载。
我们要搭建的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
如上图所示,首先在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"
我们在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"
接下来我们在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字段定义了排序节点的主机信息。
最后,我们在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。
现在已经完成了服务部署,接下来就需要配置通道了。
通过接入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
接下来我们将把所有三个对等节点加入通道
现在接入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。
# 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
现在可以将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
同样,可以将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
链码在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
现在可以实例化链码了。在通道上只需要进行一次实例化。因此我们用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"]}'
我们使用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
我们使用server4上的cli2查询交易:
# query transaction from peer2 on server4 docker exec -it cli peer chaincode query \ -n mycc -c '{"Args":["query","a"]}' -C mychannel
以上是“Hyperledger Fabric 1.4 Kafka集群如何部署”这篇文章的所有内容,感谢各位的阅读!希望分享的内容对大家有帮助,更多相关知识,欢迎关注亿速云行业资讯频道!
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。