fabric部署


一、環境部署

1.1、准備工作,需要如下依賴:

curl

git

Java

Golang

Docker

Docker Compose

安裝之前需要更新系統資源列表

sudo apt update -y --fix-missiog

 

1.1.1安裝curl:

sudo apt install -y curl

查看安裝結果:

curl -V

 

1.1.2 安裝git:

sudo apt install -y git

查看安裝結果:

git version

 

1.1.3 安裝java

解壓到/usr/local/tools/

vim  ~/.bashrc

export JAVA_HOME=/usr/local/tools/jdk1.8.0_261

export CLASSPATH=.:$JAVA_HOME/jre/lib/rt.jar:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar

export PATH=$PATH:$JAVA_HOME/bin

source ~/.bashrc

 

1.1.4 安裝golang

go1.14.2.linux-amd64.tar.gz解壓到/usr/local

創建Go的工作目錄:

sudo mkdir -p /opt/goworkspace/bin 

sudo mkdir -p /opt/goworkspace/src 

sudo mkdir -p /opt/goworkspace/pkg

設置環境變量

vim  ~/.bashrc

export GOROOT=/usr/local/go

export GOPATH=/opt/goworkspace

export PATH=$GOROOT/bin:$PATH

source ~/.bashrc

 

 

Go設置代理

go env -w GO111MODULE=on

go env -w GOPROXY=https://goproxy.cn,direct

查看安裝結果:

go version

 

1.1.5安裝docker

curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun

systemctl enable docker

 

sudo mkdir -p /etc/docker

sudo tee /etc/docker/daemon.json <<-'EOF'

{

  "registry-mirrors": ["https://0xtiq62z.mirror.aliyuncs.com"]

}

EOF

sudo systemctl daemon-reload

sudo systemctl restart docker

 

1.1.6安裝docker-compose

curl -L https://github.com/docker/compose/releases/download/1.25.0/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose

chmod +x /usr/local/bin/docker-compose

docker-compose --version

 

1.2.1安裝fabric二進制文件

https://github.com/hyperledger/fabric/blob/master/scripts/bootstrap.sh

chmod +x bootstrap.sh

set ff = unix

./bootstrap.sh 2.2.0 指定版本

需要將fabric/bin的目錄配置到環境變量

vim ~/.bashrc

export PATH=/data/fabric/bin:$PATH

source ~/.bashrc

如果是國內服務器,下載速度很慢,需要FQ

或者上傳二進制包,這里fabric版本是2.0.0,ca版本是1.4.6

 

查看安裝結果:

orderer version

 

1.2.2 下載fabric docker鏡像

curl -sSL https://bit.ly/2ysbOFE | bash -s -b  -- 2.0.0 1.4.6 0.4.18

 

二、搭建多機多節點fabric環境

計划為:

116.62.103.72--172.18.56.235--order.hua.com

116.62.11.57--172.18.56.237--peer0.org1.hua.com 錨節點

118.178.84.119--172.18.56.238--peer1.org1.hua.com

 

2.1.1 為每台主機創建相同的工作目錄:

踩過的坑:目錄一定要相同,docker-compse容器啟動會創建虛擬網絡名稱是根據所在文件夾來的,不同集群網絡找不到

 

2.1.2 生成證書模板文件

cryptogen showtemplate > crypto-config.yaml

 

生成證書模板文件,執行如下命令:

cryptogen generate --config=crypto-config.yaml

 

生成目錄結構如下:

 

 

 

2.1.3 創世塊生成、通道文件生成、錨節點更新文件

 

 

 

 

 

 

 

 

 

生成創世塊:

configtxgen -profile SampleMultiNodeEtcdRaft -outputBlock ./channel-artifacts/genesis.block -channelID orderer-system-channel

 

生成通道文件:

configtxgen -profile TwoOrgsChannel -outputCreateChannelTx ./channel-artifacts/channel.tx -channelID mychannel

 

生成org1錨節點更新文件:

 

生成的文件結構如下:

 

2.1.3 編寫docker-compose-order.yaml,啟動orderer節點

  

啟動orderer:docker-compose -f docker-compose-order.yaml up -d

 

證書文件以及通道文件打包

tar -cvf hua.tar channel-artifacts/ crypto-config

 

 

2.2啟動peer0.org1.hua.com

切換到116.62.11.57--172.18.56.237--peer0服務器,上傳hua.tar並解壓縮

啟動peer0:

 

 

 

 

進入客戶端:

docker exec -it cli bash

根據通道文件創建通道:

peer channel create -o orderer.hua.com:7050 -c mychannel -f ./channel-artifacts/channel.tx --tls --cafile /opt/gopath/src/github.com/hyperledger/fabric/peer/crypto-config/ordererOrganizations/hua.com/orderers/orderer.hua.com/msp/tlscacerts/tlsca.hua.com-cert.pem

 

Peer0加入通道:

peer channel join -b mychannel.block

 

驗證是否成功接入通道

 

打包鏈碼

peer lifecycle chaincode package mycc.tar.gz --path /opt/gopath/src/github.com/hyperledger/fabric/peer/chaincode/test1 --lang java --label mycc_1

 

安裝鏈碼

peer lifecycle chaincode install mycc.tar.gz

 

查詢鏈碼是否安裝成功

peer lifecycle chaincode queryinstalled

 

 

 

組織審批鏈碼

peer lifecycle chaincode approveformyorg -o orderer.hua.com:7050 --channelID mychannel --name mycc --version 1.0 --init-required --package-id mycc_1:e5dac5f28763979455306e40579a0edbf31f881f90a65e43f9172cde03281acd --sequence 1 --tls true --cafile /opt/gopath/src/github.com/hyperledger/fabric/peer/crypto-config/ordererOrganizations/hua.com/orderers/orderer.hua.com/msp/tlscacerts/tlsca.hua.com-cert.pem

 

檢查鏈碼審批情況

peer lifecycle chaincode checkcommitreadiness --channelID mychannel --name mycc --version 1.0 --init-required --sequence 1 --tls true --cafile /opt/gopath/src/github.com/hyperledger/fabric/peer/crypto-config/ordererOrganizations/hua.com/orderers/orderer.hua.com/msp/tlscacerts/tlsca.hua.com-cert.pem --output json

 

說明組織1已同意

向指定通道提交鏈碼定義

peer lifecycle chaincode commit -o orderer.hua.com:7050 --channelID mychannel --name mycc --version 1.0 --sequence 1 --init-required --tls true --cafile /opt/gopath/src/github.com/hyperledger/fabric/peer/crypto-config/ordererOrganizations/hua.com/orderers/orderer.hua.com/msp/tlscacerts/tlsca.hua.com-cert.pem --peerAddresses peer0.org1.hua.com:7051 --tlsRootCertFiles /opt/gopath/src/github.com/hyperledger/fabric/peer/crypto-config/peerOrganizations/org1.hua.com/peers/peer0.org1.hua.com/tls/ca.crt

 

查詢指定通道鏈碼提交情況

peer lifecycle chaincode querycommitted --channelID mychannel

 

初始化鏈碼

peer chaincode invoke -o orderer.hua.com:7050 --isInit --tls true --cafile /opt/gopath/src/github.com/hyperledger/fabric/peer/crypto-config/ordererOrganizations/hua.com/orderers/orderer.hua.com/msp/tlscacerts/tlsca.hua.com-cert.pem -C mychannel -n mycc -c '{"Args":["init"]}'

 

執行鏈碼調用

peer chaincode invoke -o orderer.hua.com:7050 --tls --cafile /opt/gopath/src/github.com/hyperledger/fabric/peer/crypto-config/ordererOrganizations/hua.com/orderers/orderer.hua.com/msp/tlscacerts/tlsca.hua.com-cert.pem -C mychannel -n mycc -c '{"Args":["invoke","a","bb"]}'

 

查詢鏈碼:

 

到此處peer0已經部署完成

 

2.3啟動peer1

將peer0中的文件(這兩個文件只用生成一次) mycc.tar.gz 鏈碼安裝包,mychannel.block通道文件拷貝,因為做了文件掛載,我們拷貝到chaincode目錄,並上傳到peer1的chaincode目錄,這樣peer1的客戶端可以直接使用

Peer1文件目錄如下:

 

啟動peer1並進入客戶端容器:

 

Peer1加入通道

peer channel join -b mychannel.block

 

Peer1安裝鏈碼

peer lifecycle chaincode install mycc.tar.gz

 

Peer1至此已安裝完成

Peer1查詢鏈碼數據

peer chaincode invoke -o orderer.hua.com:7050 --tls --cafile /opt/gopath/src/github.com/hyperledger/fabric/peer/crypto-config/ordererOrganizations/hua.com/orderers/orderer.hua.com/msp/tlscacerts/tlsca.hua.com-cert.pem -C mychannel -n mycc -c '{"Args":["query","a"]}'

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM