天天看點

Hyperledger Fabric伺服器配置及修改Docker容器卷宗存儲根目錄/位置

Hyperledger Fabric節點伺服器對存儲空間的消耗還是比較大的,在我實際生産體驗的過程中,每一條請求資料大概僅2K左右,但實際占用空間遠不止這點,每個節點都會對Block及鍊進行儲存維護,也會将資料解析存儲在本地,基本上1000萬條資料會占用500G左右的空間。當然,這個僅供參考,不同的業務可能會略有差距。

我所負責的業務需要在聯盟鍊搭建初期就導入巨量的資料,這個需求本就有些違背區塊鍊的設計原則,已經把它當成一個資料庫來使用了,這樣龐大的業務量在實際處理過程中也遇到很多的麻煩,最明顯的就是伺服器性能的各種瓶頸,還要控制請求的次數和頻率。

一般情況下,不會出現大批量導數的時候,節點伺服器采用8C8G1T的配置足夠用很久了,我這邊因為業務原因,伺服器采用16C16G3T,記憶體是綽綽有餘,8G甚至4G也能滿足沒問題,但CPU就明顯不足,這個官方也沒有給出一個建議配置,隻能自己摸索。

在一些網絡博文中可以找到一些官方資料的線索,比如Hyperledger Fabric 1.0的目标是支援1000TPS,且實驗室資料已經達到300~400TPS了。這些文章沒有明确到底是節點伺服器還是排序伺服器廣播的值,在實際操作中一台16C16G的伺服器完全沒有達到文檔中所說的那樣,節點伺服器大約在50~70之間,排序伺服器廣播的在60~80之間,這可能是自己沒完全摸清楚Hyperledger Fabric性能優化這一塊。

日常使用最低配置建議:

伺服器類型

建議配置

備注

zookeeper

4C+4G+500G

磁盤有擴容需求

kafka

orderer

8C+4G+500G

peer

4C+4G+3T

磁盤有擴容需求,如大批量資料導入,則cpu提前做好擴容

如果存在大批量資料導入的情況,orderer和peer的配置建議均高于16C+16G,以免資料導入過程中容器down掉進而導緻資料丢失的情況發生。

接着說下Fabric容器的問題,因為區塊鍊的項目才開始接觸容器的概念,在使用的時候對目錄存儲這塊有所了解。

在将HyperLedger Fabric項目部署到生産之前,需要先将其存儲根目錄做下調整,以免日後遇到存儲目錄磁盤充滿的情況。

HyperLedger Fabric使用的是Docker容器,預設的挂載路徑是/var/lib/docker,這個是挂載在磁盤第一目錄下,即如果不做修改,今後備份、搬遷及擴容等都是大問題。

這裡有兩個比較簡潔的解決方案:

一:伺服器配置之初安裝docker時就指定其在額外挂載磁盤中。

這個意思很簡單,即新挂載磁盤到linux的data目錄下,docker容器就安裝到該目錄下,docker的卷宗檔案也會在安裝時指定位置,如/data/docker/docker,通過docker info指令即可檢視,即下圖所示:

Hyperledger Fabric伺服器配置及修改Docker容器卷宗存儲根目錄/位置

二:通過修改docker配置檔案來指定其卷宗檔案存儲目錄。

這一步需要修改一個名為daemon.json的檔案内容,該檔案位于/etc/docker/目錄下

具體步驟如下:

編輯或建立daemon檔案

在該檔案中指定docker的存儲根目錄

執行docker重新加載目前配置資訊

重新開機docker服務

至此,我們再次執行

來檢視docker的存儲目錄位置,此時結果應該已經如第一種方法中的圖示一樣。

當然,該方法需要在部署生産之前就做好,切勿臨時變更。