Hyperledger Fabric服务器配置及修改Docker容器卷宗存储根目录/位置

Hyperledger Fabric节点服务器对存储空间的消耗仍是比较大的,在我实际生产体验的过程当中,每一条请求数据大概仅2K左右,但实际占用空间远不止这点,每一个节点都会对Block及链进行保存维护,也会将数据解析存储在本地,基本上1000万条数据会占用500G左右的空间。固然,这个仅供参考,不一样的业务可能会略有差距。linux

我所负责的业务须要在联盟链搭建初期就导入巨量的数据,这个需求本就有些违背区块链的设计原则,已经把它当成一个数据库来使用了,这样庞大的业务量在实际处理过程当中也遇到不少的麻烦,最明显的就是服务器性能的各类瓶颈,还要控制请求的次数和频率。docker

通常状况下,不会出现大批量导数的时候,节点服务器采用8C8G1T的配置足够用好久了,我这边由于业务缘由,服务器采用16C16G3T,内存是绰绰有余,8G甚至4G也能知足没问题,但CPU就明显不足,这个官方也没有给出一个建议配置,只能本身摸索。数据库

在一些网络博文中能够找到一些官方资料的线索,好比Hyperledger Fabric 1.0的目标是支持1000TPS,且实验室数据已经达到300~400TPS了。这些文章没有明确究竟是节点服务器仍是排序服务器广播的值,在实际操做中一台16C16G的服务器彻底没有达到文档中所说的那样,节点服务器大约在50~70之间,排序服务器广播的在60~80之间,这多是本身没彻底摸清楚Hyperledger Fabric性能优化这一块。json

平常使用最低配置建议:vim

服务器类型 建议配置 备注
zookeeper 4C+4G+500G 磁盘有扩容需求
kafka 4C+4G+500G 磁盘有扩容需求
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命令便可查看,即下图所示:

二:经过修改docker配置文件来指定其卷宗文件存储目录。

这一步须要修改一个名为daemon.json的文件内容,该文件位于/etc/docker/目录下

具体步骤以下:

编辑或新建daemon文件

sudo vim /etc/docker/daemon.json

在该文件中指定docker的存储根目录

1 {
2     "graph": "/data/docker/docker"
3 }

执行docker从新加载当前配置信息

sudo systemctl daemon-reload

重启docker服务

sudo systemctl restart docker.service

至此,咱们再次执行

docker info

来查看docker的存储目录位置,此时结果应该已经如第一种方法中的图示同样。

固然,该方法须要在部署生产以前就作好,切勿临时变动。

相关文章
相关标签/搜索