Hyperledger Fabric 1.4 Kafka集群部署教程
Hyperledger Fabric 1.4 Kafka集群部署教程
作者:區塊鏈教程
時間:2019/12/08 10:36
標簽:Docker ComposeDockerYMLHyperledger FabricKafka
Hyperledger Fabric區塊鏈網絡搭建已繁瑣著稱。本教程將介紹如何部署一個分布在4個主機上包含多個排序節點和對等節點的hyperledger fabric區塊鏈集群網絡,同時提供源碼和配置文件下載。
相關教程推薦:
- Hyperledger Fabric Java開發詳解
- Hyperledger Fabric Node.js開發詳解
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.block3.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.block3.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.block4、配置鏈碼
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 v04.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 mychannel5.2 查詢交易
我們使用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集群部署教程的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 2020 年软件开发趋势预测,Java
- 下一篇: Hyperledger fabric1.