资讯专栏INFORMATION COLUMN

基于Docker部署生产环境Ethereum私链集群

1treeS / 2148人阅读

摘要:本项目旨在建立基于部署的生产环境使用的私链集群,在尽可能简化使用的前提下保留足够的灵活性,方便业务快速组建区块链私有网络集群,并基于此开发私有区块链平台应用。因是高性能轻量级的程序,一般启动一个角色的容器即可。启动时须指定等命令参数。

项目地址:https://github.com/tabalt/doc...,欢迎Star和参与完善。

本项目旨在建立基于Docker部署的生产环境使用的Ethereum私链集群,在尽可能简化使用的前提下保留足够的灵活性,方便业务快速组建区块链私有网络集群,并基于此开发私有区块链平台应用。

因用到了“多阶段镜像构建”的特性,需要Docker 17.05 以上的版本 编译镜像。

支持的环境变量

我们的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文件。

因bootnode是高性能轻量级的程序,一般启动一个bootnode角色的容器即可。

挖矿节点 mine

顾名思义,挖矿节点是用来实际挖矿产生区块并记录数据到区块链上的节点,容器中启动的是geth程序,通常需要跨多个机房部署4个以上挖矿节点组成集群。

启动时须指定 --networkid 、--etherbase、--bootnodes 等命令参数。

接口节点 rpc

接口节点是用来处理业务方接口请求的节点,接口节点和挖矿节点互相链接,容器中启动的是geth程序,通常需要在与调用业务方相同的机房部署多个挖矿节点组成集群。接口节点和挖矿节点拆分开是为了提高接口吞吐量和避免和挖矿节点互相干扰。

启动时须指定和挖矿节点相同的 --networkid 、--bootnodes 等命令参数。

集群架构示例

自定义配置

项目代码中data目录有仅供测试的配置文件,如 bootnode.key 和 genesis.json,可自行修改后再做编译,
也可挂载有自定义配置的共享存储到容器内的/usr/local/ethereum/data目录 覆盖配置文件

项目地址:https://github.com/tabalt/doc...,欢迎Star和参与完善。

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/27426.html

相关文章

  • 基于Vue、web3的以太坊项目开发及交易内幕初探

    摘要:本文通过宏观和微观两个层面窥探以太坊底层执行逻辑。开发等前端还是好,和就免了不太好用全局安装初始化一个基于的项目项目里安装依赖是的库,通过方式与以太坊节点交互。 本文通过宏观和微观两个层面窥探以太坊底层执行逻辑。宏观层面描述创建并运行一个小型带钱包的发币APP的过程,微观层面是顺藤摸瓜从http api深入go-ethereum源码执行过程。 分析思路:自上而下,从APP深入EVM。 ...

    fasss 评论0 收藏0
  • Docker 实践(五):生产环境容器化

    摘要:不要用百度搜索中文资料,一定要看最新的英文资料。感谢感谢能容忍我无数次搞挂生产环境的老板。群蜗牛大神所建中文交流群,基本配置过程中遇到的问题都能得到解决。 前言 最近花了将近一个月的时间研究了 Docker 在生产环境中的使用,作为新手,期间走了无数的弯路,这里纪录一下,希望给别人带来微小的帮助。 前面几部分,介绍了在搭建集群之前需要做的一些工作,后面 一块结合实际应用,介绍如何架构...

    sydMobile 评论0 收藏0
  • 生产环境部署容器的五大挑战及应对之策

    摘要:环境复杂性生态系统易变性跨不同分布式基础架构的部署本文将为你解析生产环境部署容器的五大挑战及应对之策。因此,在整个生产环境中创建监视和销毁的组件需求总量呈指数级增长,从而显著增加了基于容器的管理环境的复杂性。 Docker容器使应用程序开发变得更容易,但在生产中部署容器可能会很难。环境复杂性、生态系统易变性、跨不同分布式基础架构的部署......本文将为你解析生产环境部署容器的五大挑战...

    lwx12525 评论0 收藏0
  • 稳定高于一切的金融行业如何用容器?

    摘要:在谷歌不是这样,谷歌不会把特定的应用装在某台服务器上,业务应用和服务器的强绑定对于谷歌这种量级的数据中心的维护难度太高了。但是金融机构的数据中心规模不像谷歌这么大,所以能做到业务应用和硬件的强绑定。 复杂的基础IT架构是传统金融的现状,如何快速响应用户需求,加快新业务上线速度,缩短产品的迭代周期? 数人云在容器落地金融云的2年实践中,实现金融核心业务技术WebLogic、J2EE、Or...

    scola666 评论0 收藏0
  • 德国KubeCon直击:如何轻松且安心地将k8s用于生产

    摘要:年正在柏林盛大举行,来自等多个开源云原生社区的领先技术专家正汇聚一堂,以进一步推动云原生计算的教育和发展。例如,你还需要诸如负载均衡器和的服务来运行应用程序。负载均衡器可以进行高级定制,以满足用户的各类需求。 想要在生产环境中成功部署容器,你需要的不仅仅是容器编排。 2017年CloudNativeCon+KubeCon Europe正在柏林盛大举行,来自Fluented、Kubern...

    Jensen 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<