在這個教程中,我們將學習如何使用Hyperledger Caliper對包含 多個排序節點的Fabric網絡進行基準測試,我們使用Docker Swarm 作為容器編排工具。
Hyperledger Fabric區塊鏈開發教程:
Fabric區塊鏈Node.js開發詳解Fabric區塊鏈Java開發詳解Fabric區塊鏈Golang開發詳解
1、待測Fabric網絡的基本配置
測試環境使用3臺虛擬機,配置如下:
- Google cloud VM instance (n1-standard-4)
- 4 vCPUs, 15 GB memory
- Ubuntu 18.04.2 LTS
每臺虛擬機需要提前安裝以下軟件:
- Docker version 18.09.8, build 0dd43dd87f or above
- docker-compose version 1.17.1 or above
- Node.js v8.16.0
- NPM 6.4.1
2、待測Fabric網絡的拓撲結構
需要測試的Hyperledger Fabric網絡中包含3個參與機構,共3個排序節點採用Raft共識算法, 每個機構提供1個排序節點和1個對等節點,對等節點使用GoLevelDB作為狀態數據庫。
3、安裝Hyperledger Caliper
首先參考官方文檔 在HOST1上安裝Hyperledger Caliper。
然後在單機模式下運行基準測試以確認Hyperledger Caliper安裝正確。
在所有參與Fabric網絡的虛擬機上克隆Hyperledger Caliper軟件倉庫,或者創建HOST1的鏡像。
在所有虛擬機上將本文提供的測試網絡配置文件 克隆到本地以下目錄:
<code>~/caliper/packages/caliper-samples/network/fabric-v1.4.1/swarm-3org1peer-raft/<code>
現在,我們已經準備好了進行Hyperledger Caliper基準測試的Fabric網絡環境。下圖展示了本文 示例基準測試的架構(Fabric version 1.4.1, 3org1peergoleveldb, Fabric-CCP adaptor):
查看虛擬機的內部IP,確保虛擬機之間可以彼此通信。你可能需要配置 防火牆規則以放行Caliper使用的某些端口,例如7050,7051,7054,8051,8054等。
4、運行Caliper基準測試
我們使用Docker Swarm來管理容器。
4.1 創建Docker Swarm
首先在我們運行基準Caliper測試的虛擬機上創建一個Docker Swarm。如果 你的所有主機在同一個網段,你也可以使用主機的內部IP。
<code>$ docker swarm init --listen-addr HOST1-REACHABLE-PUBLIC-IP:2377/<code>
注意:在上面的命令中,需要將IP換成你自己的IP。
運行上述命令後應當可以看到如下輸出顯示:
<code># To add a worker to this swarm, run the following command:
# docker swarm join --token xxxxxxxxxxxxx IP:2377/<code>
這意味著你的Host1已經作為管理者加入了Swarm。
4.2 將其他節點加入Swarm集群
將以下命令複製到其他主機並執行:
<code>docker swarm join --token xxxxxxxxxxxxx IP:2377/<code>
上述命令執行後將輸入如下內容,表示該主機已經加入Swarm集群:
<code># This node joined a swarm as a worker./<code>
在所有需要運行Caliper基準測試的機器上運行上述命令以加入Swarm集群。
注意:所有參與Hyperledger Caliper基準測試的主機上,Caliper倉庫的目錄都應該和 HOST1上的一致,因為系統需要在此路徑定位密碼學材料。例如:
<code>#home/HOST1/caliper/packages/caliper-samples/network/fabric-v1.4.1/swarm-3org1peer-raft/
#home/HOST2/caliper/packages/caliper-samples/network/fabric-v1.4.1/swarm-3org1peer-raft/
#home/HOST3/caliper/packages/caliper-samples/network/fabric-v1.4.1/swarm-3org1peer-raft//<code>
4.3 檢查Docker Swarm狀態
在HOST1上運行以下命令查看Swarm集群中的主機清單:
<code>$ docker node ls/<code>
結果如下:
<code>ID HOSTNAME STATUS AVAILABILITY MANAGER STATUS
xxx * caliper-latest Ready Active Leader
xxx caliper-latest2 Ready Active
xxx caliper-latest3 Ready Active/<code>
4.4 將Fabric服務容器分配到主機
在編輯器裡打開 docker-swarm-compose-tls.yaml文件,該文件中 Services下定義了Peer/Order/CA容器。在Service定義的末尾部分 可以找到容器部署的細節:
<code>deploy:
placement:
constraints: [node.hostname == YOUR-HOSTNAME]/<code>
將YOUR-HOSTNAME修改為你希望該服務部署的目標主機名。
4.5、運行Hyperledger Caliper基準測試
現在在HOST1的Caliper目錄下運行如下命令啟動基準測試:
<code>$ caliper benchmark run -w ./packages/caliper-samples \\
-c benchmark/simple/config.yaml \\
-n network/fabric-v1.4.1/swarm-3org1peer-raft/fabric-ccp-go-tls.yaml/<code>
原文鏈接:http://blog.hubwiz.com/2020/03/10/hyperledger-caliper-multi-host/
閱讀更多 新缸中之腦 的文章