1. 程式人生 > >(三) Hyperledger Fabric 在 Ubuntu16.04 64位環境下手動啟動Fabric網路

(三) Hyperledger Fabric 在 Ubuntu16.04 64位環境下手動啟動Fabric網路

一、 前期準備

版本

更新或下載URL

Ubuntu

16.04 64位

依賴項(不分先後順序)

docker

17.05.0-ce

yes|cp -f ./docker.repo /etc/yum.repos.d/docker.repo

sudo apt-get install –y docker-engine

systemctl start docker.service

docker.repo內容見下教程

docker-compose

1.9.0 build 2585387

pip install docker-compose

go

1.7.5

sudo apt-get install –y golang

python

2.7.5

sudo apt-get install –y python

python-pip

9.0.1

sudo apt-get install -y python-pip

pip install --upgrade pip backports.ssl_match_hostname

git

1.8.3.1

sudo apt-get install –y git

nodejs

6.11.3

sudo apt-get install –y nodejs

npm

3.10.10

nodejs已整合

說明:

1.     相關工具的安裝均為64位,版本不同可能將導致無法正常啟動IDE或無法完成某些配置,請務必注意版本資訊。

2.     後續安裝過程中有部分工具,僅僅需要解壓即可完成安裝,建議將解壓出的問題統一安裝至相同目錄便於管理。

二、 配置步驟

1.     網路拓撲


2.     準備自己手動生成相關配置檔案

新增bootstrap-*.sh下載的簽名、生成證書等工具——configtxgen、configtxlator、cryptogen、orderer、peer

方法一:新增路徑至環境變數,永久生效。環境變數路徑:

vim/etc/environment

方法二:直接拷貝工具至/usr/bin,類似方法一,需要root許可權(使用切換至root)。命令:

sudo yes|cp –f  [你的fabric例子程式碼存放路徑]/fabric-samples/script/bin/configtxlator /usr/bin/
sudo yes|cp –f  [你的fabric例子程式碼存放路徑]/fabric-samples/script/bin/configtxgen /usr/bin/
sudo yes|cp –f  [你的fabric例子程式碼存放路徑]/fabric-samples/script/bin/cryptogen /usr/bin/
sudo yes|cp –f  [你的fabric例子程式碼存放路徑]/fabric-samples/script/bin/orderer /usr/bin/
sudo yes|cp –f  [你的fabric例子程式碼存放路徑]/fabric-samples/script/bin/peer /usr/bin/

新增檔案的可執行許可權

chmod –R a+x configtxlator configtxgen cryptogen orderer peer

方法三:使用官方提供的原始碼重新編譯生成工具,命令:

檔案所在:~/go/src/github.com/hyperledger/fabric

執行命令:

make cryptogen
make configtxgen
make configtxlator

2.1.   生成組織關係和身份證書

通過以下命令可以為Fabric網路生成指定拓撲結構的組織和身份檔案,並存放到crypto-config目錄

命令:

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

通過crypto-config.yaml配置檔案生成組織關係和身份證書,執行成功結果如下:

通過以下命令可檢視crypto-config目錄結構,命令:

tree –L 4 crypto-config

2.2.   生成Ordering服務啟動初始區塊

本地使用簡單solo模式,生產環境請使用kafka叢集服務。

1)   生成Ordering服務系統通道的初始區塊檔案

FABRIC_CFG_PATH=. configtxgen -profile TwoOrgsOrdererGenesis –outputBlock ./orderer.genesis.block

成功生成Ordering服務初始區塊,如下所示:

說明:

非solo模式下,所生成的orderer.genesis.block需要複製到Orderer節點上(與Orderer配置中ORDERER_GENERAL_GENESISFILE指定的檔案路徑一致,預設路徑為:/etc/hyperledger/fabric路徑下),在啟動Ordering服務時進行使用。

2.3.   生成新建應用通道的配置交易檔案

新建應用通道是,需要事先準備好配置交易檔案,包括屬於該通道的組織結構資訊。這些資訊會寫入該應用通道的初始區塊中。而且生成的配置交易資訊檔案會在後續步驟被客戶端使用,因此可以放在客戶端節點上。

1)   使用configtx.yaml配置檔案中的TwoOrgsChannel模板指定Org1和Org2都屬於隨後新建的應用通道。

執行命令:

CHANNEL_NAME=businesschannel
FABRIC_CFG_PATH=. configtxgen -profile TwoOrgsChannel -outputCreateChannelTx ./businesschannel.tx -channelID ${CHANNEL_NAME}

成功新建應用通道的配置交易檔案,如下所示:

2.4.   生成錨節點配置更新檔案

錨節點配置更新檔案可以用來對組織的錨節點進行配置,但需要分別指定對應的組織名稱。

具體生成步驟:

1)    生成組織1:Org1MSP

FABRIC_CFG_PATH=. configtxgen -profile TwoOrgsChannel -outputAnchorPeersUpdate ./Org1MSPanchors.tx -channelID ${CHANNEL_NAME} -asOrg Org1MSP

2)    生成組織2:Org2MSP

FABRIC_CFG_PATH=. configtxgen -profile TwoOrgsChannel -outputAnchorPeersUpdate ./Org2MSPanchors.tx -channelID ${CHANNEL_NAME} -asOrg Org2MSP

成功生成錨節點配置更新檔案,如下所示:

說明:

1)    所生成的錨節點配置更新檔案仍會在後續步驟被客戶端使用,因此也可以放在客戶端節點上。

2)    所有用於啟動的配置檔案生成並部署到對應節點後,可以進行服務的啟動操作。

a)    啟動Order節點

b)    啟動Peer節點

3.     啟動Orderer節點

檢查啟動節點的所有配置是否就緒:

1)   在/etc/hyperledger/fabric下放置有編寫好的orderer.yaml。

該檔案可參考官方sampleconfig/orderer.yaml檔案編寫。(具體yaml檔案語法請自行搜尋瞭解)

2)   在/etc/hyperledger/fabric下放置生成的msp、tls檔案目錄。

3)   在/etc/hyperledger/fabric下放置初始區塊檔案orderer.genesis.block。

注:請自行拷貝相關檔案至:/etc/hyperledger/fabric下,以便啟動orderer節點。

 

Orderer節點的預設配置檔案中指定簡單Orderer節點功能。通常來說,在使用時需依據需求對一些關鍵配置進行指定。

環境變數配置入口:to be add

啟動本地Orderer節點:

orderer start

4.     啟動Peer節點

5.     操作網路

6.     基於容器方式

三、 FAQ

1.     使用cryptogen無法生成檔案

症狀:

可能原因:

1)    與操作版本不對應

2)    檔案損壞

3)    無可執行許可權

解決方法:

1)    重新下載對應版本

2)    賦予可執行許可權

重新下載工具(configtxgen、configtxlator、cryptogen):


2.     生成Ordering服務系統通道的初始檔案失敗

症狀:

原因:

未確認FABRIC_CFG_PATH該變數路徑,可預先設定該路徑為當前路徑。

解決方法:

在控制檯執行以下命令:

FABRIC_CFG_PATH=.

解決後:

額外說明:無

3.     orderer start啟動失敗

症狀:

原因:

解決方法:

相關命令:

解決後:

額外說明:

4.     註釋compose-compose-cli.yaml的script.sh後通過命令列方式手動啟動fabric網路失敗

啟動命令:

CHANNEL_NAME=businesschannel TIMEOUT=300 docker-compose –f docker-compose-cli.yaml up -d

 

原因:

docker守護程序啟動時無法正確選擇sock檔案的URL位置。

解決方法:

將docker服務新增自系統自啟動,重啟Ubuntu即可。

相關命令:

1.     切換至root使用者:su
2.     設定docker為開機自啟動:systemctl enable docker
3.     未馬上手動重啟伺服器的情況下,手動啟動docker服務:
systemctl start docker
systemctl restart docker
4.     退出root後,檢視docker容器啟動情況:sudo docker ps

解決後:



額外說明:

5.     連線peer節點

原因:


依據上圖提示得知連線orderer.example.com:7050錯誤,具體的錯誤描述為:認證握手失敗,x509證書籤名未被授權。

解決方法:

給證書籤名

相關命令:

解決後:

額外說明:

6.     進入docker-compose-cli.yaml配置檔案指定的cli容器無法生成通道的創世區塊


原因:

存在同名的channel,因為同樣的channel已經在之前被建立,命名衝突。

解決方法:

移除docker,重新啟動。

相關命令:

1)     刪除一個指定容器:sudo docker rm [container id]
2)     強制刪除一個指定容器:sudo docker rm –f [container id]
3)     強制刪除全部容器:sudo docker rm –f $(sudo docker ps -aq)

解決後:

生成通道的創世區塊:mychannel.block


額外說明:

1)    檢查是否已經建立同名channel;

2)    清理之前的搭建環境,如果是在虛擬機器中搭建或建立快照,建議重新恢復至快照狀態再重新下載容器,按步驟逐一測試。