基於Docker部署生產環境Ethereum私鏈集羣

項目地址:https://github.com/tabalt/doc...,歡迎Star和參與完善。node

本項目旨在創建基於Docker部署的生產環境使用的Ethereum私鏈集羣,在儘量簡化使用的前提下保留足夠的靈活性,方便業務快速組建區塊鏈私有網絡集羣,並基於此開發私有區塊鏈平臺應用。git

因用到了「多階段鏡像構建」的特性,須要Docker 17.05 以上的版本 編譯鏡像。github

支持的環境變量

咱們的Docker鏡像作到了開箱即用,但爲了能讓業務使用特有的配置,咱們提供了一些環境變量,可在啓動容器時指定並修改默認值。支持的環境變量以下表所列:docker

變量名 默認值 說明
HOSTNAME localhost 容器的主機名
ETHEREUM_HOME /usr/local/ethereum 集羣根目錄
ETHEREUM_DATADIR ${ETHEREUM_HOME}/data 集羣數據目錄
ETHEREUM_GENESIS_JSON ${ETHEREUM_DATADIR}/genesis.json 初始化文件路徑
ETHEREUM_BOOTNODE_KEY ${ETHEREUM_DATADIR}/bootnode.key 啓動節點的key文件路徑
ETHEREUM_NODE_DATADIR ${ETHEREUM_DATADIR}/nodes/${HOSTNAME} 節點數據目錄
ETHEREUM_NODE_INITFLAG ${ETHEREUM_NODE_DATADIR}/init.SUCCESS 節點初始化標誌文件
ETHEREUM_NODE_ROLE mine 節點角色

節點角色

  • 啓動節點 bootnode

    啓動節點是用來幫助網絡中其餘節點發現彼此進而鏈接彼此的引導節點,容器中啓動的是專用的bootnode程序,經過 ETHEREUM_BOOTNODE_KEY 環境變量指定啓動時所需的key文件。json

    因bootnode是高性能輕量級的程序,通常啓動一個bootnode角色的容器便可。網絡

  • 挖礦節點 mine

    顧名思義,挖礦節點是用來實際挖礦產生區塊並記錄數據到區塊鏈上的節點,容器中啓動的是geth程序,一般須要跨多個機房部署4個以上挖礦節點組成集羣。架構

    啓動時須指定 --networkid 、--etherbase、--bootnodes 等命令參數。性能

  • 接口節點 rpc

    接口節點是用來處理業務方接口請求的節點,接口節點和挖礦節點互相連接,容器中啓動的是geth程序,一般須要在與調用業務方相同的機房部署多個挖礦節點組成集羣。接口節點和挖礦節點拆分開是爲了提升接口吞吐量和避免和挖礦節點互相干擾。區塊鏈

    啓動時須指定和挖礦節點相同的 --networkid 、--bootnodes 等命令參數。測試

集羣架構示例

clusters.png

自定義配置

項目代碼中data目錄有僅供測試的配置文件,如 bootnode.key 和 genesis.json,可自行修改後再作編譯,
也可掛載有自定義配置的共享存儲到容器內的/usr/local/ethereum/data目錄 覆蓋配置文件

項目地址:https://github.com/tabalt/doc...,歡迎Star和參與完善。

相關文章
相關標籤/搜索