30分钟快速在多台主机上搭建开发/测试Hyperledger Fabric集群(不适用于正式部署)

本文将演示如何用不同的外部主机搭建3个节点的Fabric网络,该网络包含一个Kafka共识节点,一个拥有三个背书节点的组织。该网络已在最基础的Ubuntu18.04云服务器DigitalOcean上基于Hyperledger Fabric1.4.4测试过。最低配置为2GB内存,大约需要消耗60%的CPU。

基于现有网速,你完全可以在30分钟之内安装完毕。(请使用至少$15/月3GB内存的Droplet服务器来获取流畅版体验)可以点击我的链接注册:(这是一个新手优惠码,注册后推荐人可获得信用积分),然后按照下列步骤安装。

For English version of this article, please click here.

同时也欢迎查阅关于运行Hyperledger Fabric 1.4.4Hyperledger ComposerHyperledger Explorer的文章。我们旨在发布关于如何使用Hyperledger技术的全套指南。这些文章的英文版请参考Edward Tsang发布的文章,且Eugene Yong已经测试过本文中的所有代码。

(除非另外说明,以下步骤需要在所有主机上运行。)

Step 1: 在所有droplet上面,首先运行以下命令:

sudo apt-get update && sudo apt-get upgrade

Step 2: 对于接下来的步骤,我们需要创建一个新用户。使用以下命令创建一个新用户然后切换到该用户。

sudo adduser frog
sudo usermod -aG sudo frog
su - frog

Step 3: 下载Hyperledger Fabric依赖环境。

curl -O https://hyperledger.github.io/composer/latest/prereqs-ubuntu.sh
chmod u+x prereqs-ubuntu.sh
./prereqs-ubuntu.sh
wget https://dl.google.com/go/go1.11.2.linux-amd64.tar.gz
tar -xzvf go1.11.2.linux-amd64.tar.gz
sudo mv go/ /usr/local
nano ~/.bashrc
#(add these 2 lines to end of file)
export GOPATH=/usr/local/go
export PATH=$PATH:$GOPATH/bin
exit
su - frog

Step 4: 下载Fabric镜像和其他用于生成通道凭证和证书的工具。

curl -sSL http://bit.ly/2ysbOFE | bash -s

Step 5: (节点 1)下载搭建Fabric所需文件。

git clone -b extra_hosts https://github.com/eugeneyl/one-org-kafka.git

Step 6: (节点 1) 生成通道凭证和证书。

cd fabric-samples
export PATH=$PATH:$PWD/bin
cd one-org-kafka
nano .env
#修改节点的ip地址为你的droplets的ip地址。
./generate.sh

在node1.yaml修改Fabric CA配置FABRIC_CA_SERVER_CA_KEYFILE 和FABRIC_CA_SERVER_TLS_KEYFILE使映射到真实产生的密钥。你可以在one-org-kafka/crypto-config/peerOrganizations/org1.example.com/ca找到密钥。

Step 7: (节点1) 压缩该文件然后上传到其他两个节点。你可以使用Filezilla。

cd ..
tar -czvf one-org-kafka.tar.gz one-org-kafka

Step 8: (节点2和3) 在各节点解压缩该文件。

tar -xzvf one-org-kafka.tar.gz one-org-kafka

Step 9: 在不同节点主机one-org-kafk目录下,运行以下命令,为不同的组件配置docker容器。

cd one-org-kafka
docker-compose -f node1.yaml up -d
docker-compose -f node2.yaml up -d
docker-compose -f node3.yaml up -d

Step 10 (Node 1): 在共识节点创建通道区块,然后复制到peer节点。

docker exec cli peer channel create -o orderer0.example.com:7050 -c mychannel -f ./channel-artifacts/channel.tx --tls true --cafile /opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/ordererOrganizations/example.com/orderers/orderer0.example.com/msp/tlscacerts/tlsca.example.com-cert.pem docker cp cli:/opt/gopath/src/github.com/hyperledger/fabric/peer/mychannel.block .

Step 11 (Node 2 and 3):利用FileZilla上传通道区块到其他节点主机,并且复制到cli容器。

docker cp mychannel.block cli:/opt/gopath/src/github.com/hyperledger/fabric/peer/

Step 12: 把所有peer节点加入通道。

docker exec cli peer channel join -b mychannel.block

Step 13:在所有节点安装智能合约

docker exec cli peer chaincode install -n orders -v 1.0 -p github.com/chaincode/orders/

(仅限节点1,实例化智能合约)

docker exec cli peer chaincode instantiate -o orderer0.example.com:7050 -C mychannel -n orders -v 1.0 -c '{"Args":[]}' --tls true --cafile /opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/ordererOrganizations/example.com/orderers/orderer0.example.com/msp/tlscacerts/tlsca.example.com-cert.pem

Step 14: 测试智能合约

docker exec cli peer chaincode invoke -o orderer0.example.com:7050 -C mychannel -n orders -c '{"Args":["initLedger"]}' --tls true --cafile /opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/ordererOrganizations/example.com/orderers/orderer0.example.com/msp/tlscacerts/tlsca.example.com-cert.pemdocker exec cli peer chaincode query -C mychannel -n orders -c '{"Args":["queryAllOrders"]}'docker exec cli peer chaincode invoke -o orderer0.example.com:7050 -C mychannel -n orders -c '{"Args":["createOrder","ORDER14", "23459348", "5493058", "Pending"]}' --tls true --cafile /opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/ordererOrganizations/example.com/orderers/orderer0.example.com/msp/tlscacerts/tlsca.example.com-cert.pemdocker exec cli peer chaincode query -C mychannel -n orders -c '{"Args":["queryOrder", "ORDER2"]}'

现在你已经成功搭建一个3节点的Fabric网络,你还可以根据Hyperledger Explorer指南安装hyperledger Explorer来查看Fabric的活动。

关闭网络

你可以运行以下命令,关闭hyperledger网络

docker rm -f $(docker ps -aq) && docker rmi -f $(docker images | grep dev | awk '{print $3}') && docker volume prune

温馨提醒:你还可以查阅了解关于运行Hyperledger FabricHyperledger ComposerHyperledger Explorer的文章。我们旨在发布关于如何使用Hyperledger技术的全套指南。这些文章的英文版请参考Edward Tsang发布的文章,且Eugene Yong已经测试过本文中的所有代码,欢迎关注我们。

For English version of this article, please click here.

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store