溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Fabric2.0如何部署自定義網絡

發(fā)布時間:2021-12-28 10:17:27 來源:億速云 閱讀:141 作者:小新 欄目:互聯(lián)網科技

這篇文章主要介紹Fabric2.0如何部署自定義網絡,文中介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們一定要看完!

本節(jié)規(guī)劃Fabric平臺由3個order節(jié)點,2個組織,4個peer節(jié)點組成,每個組織兩個peer節(jié)點。Fabric2.0的共識機制只支持raft協(xié)議,該協(xié)議實現(xiàn)的共識必須至少3個節(jié)點,節(jié)點數(shù)最好為奇數(shù)。

本節(jié)所有操作均在/usr/local/src/hyperleger/fabric/scripts/fabric-samples/first-network目錄執(zhí)行。

進行后續(xù)操作之前,先設置好相關的環(huán)境變量。

export PATH=${PWD}/../bin:${PWD}:$PATH
export FABRIC_CFG_PATH=${PWD}

3.1 生成證書

Fabric平臺是許可區(qū)塊鏈平臺,通過數(shù)字證書實現(xiàn)平臺參與者對平臺資源的訪問操作權限,使網絡具備更高的安全性。

證書生成需要使用cryptogen工具以及配置文件crypto-config.yaml。根據(jù)平臺的節(jié)點規(guī)劃,修改(記得備份)crypto-config.yaml如下:

Fabric2.0如何部署自定義網絡

上圖中,Order組織定義了三個節(jié)點:orderer,orderer2,orderer3,peer組織包括Org1和Org2兩個組織,每個組織包括2個節(jié)點,包括Admin用戶和1個普通用戶。

配置文件修改完成之后,直接運行如下命令完成order節(jié)點、peer節(jié)點、管理員和用戶的證書生成。

cryptogen generate --config=./crypto-config.yaml

成功執(zhí)行之后,當前目錄下將生成crypto-config目錄,目錄結構如下圖所示:

Fabric2.0如何部署自定義網絡

3.2 創(chuàng)世區(qū)塊

創(chuàng)世區(qū)塊的生成需要使用configtxgen工具以及配置文件configtx.yaml。根據(jù)平臺的節(jié)點規(guī)劃,修改(記得備份)內容如下:

Fabric2.0如何部署自定義網絡

將orderer4和orderer5相關的配置注釋,因為本文規(guī)劃的fabric網絡只包含3個order節(jié)點。

配置文件修改完成之后,執(zhí)行如下命令:

configtxgen -profile SampleMultiNodeEtcdRaft -channelID byfn-sys-channel -outputBlock ./channel-artifacts/genesis.block

成功執(zhí)行之后,channel-artifacts目錄下將生成創(chuàng)世區(qū)塊文件genesis.block。

Fabric2.0如何部署自定義網絡

對于創(chuàng)世區(qū)塊的生成,fabric1.x與fabric2.0有明顯的區(qū)別,注意上述命令profile參數(shù)值。

3.3 生成通道交易配置文件

通道交易配置文件的生成,fabric1.x與fabric2.0無明顯區(qū)別,所使用命令和配置文件與生成創(chuàng)世區(qū)塊使用的相同。

執(zhí)行如下命令,完成通道交易配置文件的創(chuàng)建。

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

成功執(zhí)行之后,channel-artifacts目錄下將生成通道交易配置文件channel.tx。

Fabric2.0如何部署自定義網絡

3.4 生成錨節(jié)點配置文件

錨節(jié)點配置文件的生成,fabric1.x與fabric2.0無明顯區(qū)別,所使用命令和配置文件與生成創(chuàng)世區(qū)塊使用的相同。

執(zhí)行如下命令,完成Org1和Org2兩個組織錨節(jié)點配置文件的創(chuàng)建。

# 生成Org1的錨節(jié)點配置文件
configtxgen -profile TwoOrgsChannel -outputAnchorPeersUpdate ./channel-artifacts/Org1MSPanchors.tx -channelID mychannel -asOrg Org1MSP

# 生成Org2的錨節(jié)點配置文件
configtxgen -profile TwoOrgsChannel -outputAnchorPeersUpdate ./channel-artifacts/Org2MSPanchors.tx -channelID mychannel -asOrg Org2MSP

成功執(zhí)行之后,channel-artifacts目錄下將生成兩個錨節(jié)點配置文件Org1MSPanchors.tx和Org2MSPanchors.tx。

Fabric2.0如何部署自定義網絡

3.5 啟動&停止網絡

Fabric網絡服務以docker方式啟動,涉及命令docker-compose和配置文件docker-compose-cli.yaml、docker-compose-etcdraft2.yaml、docker-compose-ca.yaml。

本文規(guī)劃的fabric網絡包括10個docker服務:4個peer節(jié)點服務,3個order節(jié)點服務,2個CA服務,1個cli服務。

修改配置文件docker-compose-etcdraft2.yaml,注釋掉orderer4和orderer5的相關配置。

Fabric2.0如何部署自定義網絡

Fabric2.0如何部署自定義網絡

執(zhí)行如下命令,將啟動3個order節(jié)點服務,1個cli節(jié)點服務,4個peer節(jié)點服務和2個CA節(jié)點服務。

# 配置環(huán)境變量,CA節(jié)點必需
export BYFN_CA1_PRIVATE_KEY=$(cd crypto-config/peerOrganizations/org1.example.com/ca && ls \*_sk)
export BYFN_CA2_PRIVATE_KEY=$(cd crypto-config/peerOrganizations/org2.example.com/ca && ls \*_sk)

# 根據(jù)指定配置文件啟動容器服務
docker-compose -f docker-compose-cli.yaml -f docker-compose-etcdraft2.yaml -f docker-compose-ca.yaml up -d

命令執(zhí)行日志如下圖所示:

Fabric2.0如何部署自定義網絡

查看運行的docker服務,如下圖所示:

Fabric2.0如何部署自定義網絡

停止網絡執(zhí)行命令:

docker-compose -f docker-compose-cli.yaml -f docker-compose-etcdraft2.yaml -f docker-compose-ca.yaml  down

Fabric平臺所有節(jié)點服務均正常啟動,3.1節(jié)-3.4節(jié)生成的配置文件都是為后續(xù)的交易操作而準備的,后續(xù)的操作均需進入cli容器執(zhí)行相關命令。

3.6 創(chuàng)建通道

通道是Fabric的特性,可以在一個區(qū)塊鏈平臺上實現(xiàn)業(yè)務隔離,從邏輯上實現(xiàn)多鏈操作。

創(chuàng)建通道需要先進入cli容器,執(zhí)行如下命令:

#連接cli服務
docker exec -it cli bash

#定義CA文件路徑
ORDERER_CA=/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/ordererOrganizations/example.com/orderers/orderer.example.com/msp/tlscacerts/tlsca.example.com-cert.pem 	

#創(chuàng)建通道信息
peer channel create -o orderer.example.com:7050 -c mychannel -f ./channel-artifacts/channel.tx --tls true --cafile $ORDERER_CA

#將生成的文件移動到channel-artifacts文件夾中
mv mychannel.block channel-artifacts/

3.7 peer節(jié)點加入通道

上一步我們創(chuàng)建了一個名稱為mychannel的通道,但該通道還沒有任何peer節(jié)點加入,則無法進行交易操作,本節(jié)將2個組織的4個節(jié)點都加入到mychannel通道。

通過查看環(huán)境變量,當前cli容器使用的org1.peer0的配置。

Fabric2.0如何部署自定義網絡

按照當前的配置,我們執(zhí)行如下命令,先將org1.peer0節(jié)點加入mychannel通道。

peer channel join -b channel-artifacts/mychannel.block

執(zhí)行成功結果如下圖所示:

Fabric2.0如何部署自定義網絡

切換節(jié)點,將org1.peer1加入mychannel通道。

#切換節(jié)點org1.peer1
source scripts/utils.sh
setGlobals 1 1
# 將當前節(jié)點加入通道
peer channel join -b channel-artifacts/mychannel.block

參照上述切換節(jié)點的方法,將org2組織的兩個節(jié)點也加入通道。

#切換節(jié)點org2.peer0
source scripts/utils.sh
setGlobals 0 2
# 將當前節(jié)點加入通道
peer channel join -b channel-artifacts/mychannel.block

#切換節(jié)點org2.peer1
setGlobals 1 2
# 將當前節(jié)點加入通道
peer channel join -b channel-artifacts/mychannel.block

至此,2個組織的4個節(jié)點均已加入mychannel通道。

3.8 更新錨節(jié)點

錨節(jié)點是組織內的一種特殊peer節(jié)點,通過錨節(jié)點可以實現(xiàn)不同組織內節(jié)點間的通信。通常每次組織都要設置一個錨節(jié)點,下面分別對org1和org2兩個組織設置錨節(jié)點,本文假設將組織中的peer0節(jié)點設置為錨節(jié)點。

#切換到org1.peer0節(jié)點
setGlobals 0 1
#設置環(huán)境變量ORDERER_CA
ORDERER_CA=/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/ordererOrganizations/example.com/orderers/orderer.example.com/msp/tlscacerts/tlsca.example.com-cert.pem
#更新設置錨節(jié)點
peer channel update -o orderer.example.com:7050 -c mychannel -f ./channel-artifacts/Org2MSPanchors.tx --tls true --cafile $ORDERER_CA

#切換到org2.peer0節(jié)點
setGlobals 0 2
#設置環(huán)境變量ORDERER_CA
ORDERER_CA=/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/ordererOrganizations/example.com/orderers/orderer.example.com/msp/tlscacerts/tlsca.example.com-cert.pem
#更新設置錨節(jié)點
peer channel update -o orderer.example.com:7050 -c mychannel -f ./channel-artifacts/Org2MSPanchors.tx --tls true --cafile $ORDERER_CA

更新命令執(zhí)行成功結果如下圖所示:

Fabric2.0如何部署自定義網絡

經過我們的努力,我們手動配置并啟動了一個fabric網絡,包含3個orderer節(jié)點,2個組織4個peer節(jié)點,2個ca節(jié)點,1個cli節(jié)點,1個通道m(xù)ychannel。

以上是“Fabric2.0如何部署自定義網絡”這篇文章的所有內容,感謝各位的閱讀!希望分享的內容對大家有幫助,更多相關知識,歡迎關注億速云行業(yè)資訊頻道!

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內容(圖片、視頻和文字)以原創(chuàng)、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據(jù),一經查實,將立刻刪除涉嫌侵權內容。

AI