IPFS系列 集群搭建 三

  本篇IPFS集群搭建指南教程距离上一篇IPFS教程已经过去一个多月了,本来在写完上一篇一两周之内就来写此篇文章。最近数字货币在谷底,顺便清理一些垃圾山寨。然后听一个朋友的介绍,说了一些区块链里的痛点,聊着聊着发现一个好的产品点子,就一股做劲去开发了,整体大概花了三周(不是工作日)大体把业务需求给实现了,目前在申请阿里云备案,应该不久可以给更多区块链数字货币界的小伙伴使用了,目前不便透露产品内容。好了,开始正题IPFS集群搭建。

一.多节点文件如何同步?

在IPFS多节点搭建文章中,我们实现了文件的多节点共享,但在实际业务需求中会有一个问题,多个IPFS节点如何文件同步备份?在大多数区块链企业中,实现IPFS存储基本还是做联盟链的存储,也就是节点只是在局域网内可访问。由于是多个节点部署的联盟链,每个节点希望能存储IPFS文件数据,对于后端业务开发人员而言,如果我将文件上传至某一个IPFS节点,然后pin 文件,则文件上传成功。但是某个极端的情况,我IPFS服务器刚上传完后宕机了,其他的IPFS服务节点就无法访问到资源了。又或者10台IPFS节点组成的联盟链节点,后台开发在A节点的IPFS上传了文件,为了保证每台服务器都能下载到资源,他需要对另外九台服务器进行pin add hash。那这也太不友好了,添加新的服务器,还得改业务代码。在种种问题之下,有没有比较好的解决方案呢?IPFS集群管理多节点。

二.IPFS集群服务搭建

本篇的教程是最新版的IPFS,也是本人在开发过程中一步一步翻阅墙外的资料总结的教程。首先,我们得认识到IPFS集群的作用:方便管理IPFS多节点的文件同步,存储等功能。实现原理:cluster-service 是IPFS集群的服务端,一台主机搭建一个ipfs-cluster-service,统一管理该主机下的ipfs节点。通过ipfs-cluster-service 与其他主机的ipfs-cluster-service连接,通过共享配置文件中secret密钥,实现service连接,从而组成一个集群。

1.ipfs-cluster-service 安装

wget https://dist.ipfs.io/ipfs-cluster-service/v0.4.0/ipfs-cluster-service_v0.4.0_linux-amd64.tar.gz

tar ipfs-cluster-service_v0.4.0_linux-amd64.tar.gz

cd ipfs-cluster-service

./ipfs-cluster-service -h #查看帮助

2.ipfs-cluster-service 初始化

./ipfs-cluster-service init  #初始化成功后,会生成一个 ~/.ipfs-cluster 文件目录,跟安装ipfs 一样,生成~/.ipfs目录

3.查看ipfs-cluster service.json文件

cat ipfs service.json #附带配置文件的部分解析

4.修改 service.json文件

  a)   备份secret 密钥,同其他集群节点共享

  b)   修改 ipfs_connector.ipfshttp.node_multiaddress 与本机ipfs节点api 地址一致,

  c)   Proxy_listen_multiaddress 修改成本机ip地址

  d)   必要时,api.restapi.http_listen_multiaddress 修改ip地址,对外提供可访问的ipfs-cluster-service api 地址

5.安装其余N个ipfs-cluster-service 节点

重复上述1,2,3,4步骤,将第一个节点的sercret 拷备至其他节点的配置文件,共享同一个secret是实现集群节点连接的前提。

6.启动第一个ipfs-cluster-service 节点

a)   启动前,确保本机的ipfs 节点已经启动,ipfs-cluster需要连接到本机的ipfs节点

  b)   进入ipfs-cluster-service 目录

  c)   ./ipfs-cluster-service daemon #启动ipfs-cluster-service

  d)   记录下启动信息 : /ip4/192.168.1.170/tcp/9096/ipfs/QmNUkAGXxKqvAJvZPHRPZoCLwkReSGWByxbcat6t6x2ukz 如下图

7.启动第二个ipfs-cluster-service 节点

  a)   ./ipfs-cluster-service daemon --bootstrap /ip4/192.168.1.170/tcp/9096/ipfs/QmNUkAGXxKqvAJvZPHRPZoCLwkReSGWByxbcat6t6x2ukz  #与第一个集群地址联通,

  接下来第三个集群地址,就使用这种方式添加,否则直接使用命令./ipfs-cluster-service daemon启动会出错的。

  b)   ~/.ipfs-cluster 目录下生成 peerstore raft 两文件 Peerstore 存储当前连接的ipfs-cluster集群节点地址,Raft 是ipfs的协议共识机制

三.IPFS集群客户端安装

  Ipfs-cluster-ctl 是管理ipfs-cluster-service集群服务的客户端,在私有ipfs网络里,可以只安装一个客户端进行测试调用,ipfs-cluster-ctl可管理多个ipfs-cluster-service

  1. ipfs-cluster-ctl 安装

     wget https://dist.ipfs.io/ipfs-cluster-ctl/v0.4.0/ipfs-cluster-ctl_v0.4.0_linux-amd64.tar.gz

     tar cluster-ctl_v0.4.0_linux-amd64.tar.gz

     cd ipfs-cluster-ctl

     ./ipfs-cluster-ctl -h #查看帮助

2.查看集群中全部的ipfs-cluster-service 节点信息

./ipfs-cluster-ctl peers ls   #如下图:

   在ipfs-ctl客户端可以看出,ipfs网络有三个集群节点,每个节点下有一个ipfs节点。

3.查看集群节点关系图

./ipfs-cluster-ctl health graph

四.IPFS集群使得IPFS节点间数据同步

接下来就来解决我们在未搭建集群前ipfs节点数据不能同步的问题

     1.ipfs节点A 上传一个文件  aa.txt

    Ipfs add aa.txt   #获取访问的内容hash: QmRqSJ8ckhFtTAx5pVNEMFxPC4JWWoThJbVTCAViWPX5Bf

2.ipfs-cluster-ctl pin add hash  #让全网私有网络的集群的ipfs节点同步该hash内容

    ./ipfs-cluster-ctl pin add QmRqSJ8ckhFtTAx5pVNEMFxPC4JWWoThJbVTCAViWPX5Bf  #全网的ipfs节点repo 都存在该hash.

3.Ipfs pin ls hash

    全部的ipfs节点都pin了该hash ,返回结果如下:

    QmRqSJ8ckhFtTAx5pVNEMFxPC4JWWoThJbVTCAViWPX5Bf recursive

4.解pin已同步的hash

     ./ipfs-cluster-ctl pin rm hash

   5.Ipfs-cluster-service 实时控制台信息

至此IPFS集群管理节点数据技术已经分享完毕,各位区块链战友,在实践过程中多多少少还是会碰到一些坑,欢迎拍砖,欢迎留言。整个IPFS系列教程我也花了数周去学习了解,踩了不少坑,另外文末有相关的IPFS参考链接。另外本人第一个全栈的区块链应用产品,近期将会发布,欢迎关注公众号 “刻意链习”,以后不定期在公众号分享区块链技术文章。

Raft 共识介绍:

  中文版:https://www.cnblogs.com/mindwind/p/5231986.html

  动画版:http://thesecretlivesofdata.com/raft/

更多参考地址:

  https://zhuanlan.zhihu.com/p/35141862

  https://cluster.ipfs.io/documentation/

http://ipfser.org/2018/03/02/r26/

http://liyuechun.org/2017/11/20/ipfs-blockchain/

https://flyingzumwalt.gitbooks.io/decentralized-web-primer/

原文地址:https://www.cnblogs.com/sumingk/p/9434253.html

时间: 2024-10-07 09:28:06

IPFS系列 集群搭建 三的相关文章

Oracle RAC集群搭建(三)--挂在磁盘

一,磁盘配置 查看由上回配置的共享磁盘,一共三块-----以下所有内容均两台物理机都需要操作 查看磁盘id [root@rac2 ~]# /usr/lib/udev/scsi_id -g -u /dev/sdd 36000c293f44d71c233c240a4c150b475 [root@rac2 ~]# /usr/lib/udev/scsi_id -g -u /dev/sdc 36000c2954a30394730cfbb390b97587c [root@rac2 ~]# /usr/lib/

Hbase集群搭建三(Hbase搭建)

服务器准备:下述内容绑定 /etc/hosts 10.110.110.10 master 10.110.110.11 slave1 10.110.110.12 slave2 写累了...慢慢补充

分布式缓存技术redis学习系列(四)——redis高级应用(集群搭建、集群分区原理、集群操作)

本文是redis学习系列的第四篇,前面我们学习了redis的数据结构和一些高级特性,点击下面链接可回看 <详细讲解redis数据结构(内存模型)以及常用命令> <redis高级应用(主从.事务与锁.持久化)> 本文我们继续学习redis的高级特性--集群.本文主要内容包括集群搭建.集群分区原理和集群操作的学习. Redis集群简介 Redis 集群是3.0之后才引入的,在3.0之前,使用哨兵(sentinel)机制(本文将不做介绍,大家可另行查阅)来监控各个节点之间的状态.Redi

大数据学习系列之七 ----- Hadoop+Spark+Zookeeper+HBase+Hive集群搭建 图文详解

引言 在之前的大数据学习系列中,搭建了Hadoop+Spark+HBase+Hive 环境以及一些测试.其实要说的话,我开始学习大数据的时候,搭建的就是集群,并不是单机模式和伪分布式.至于为什么先写单机的搭建,是因为作为个人学习的话,单机已足以,好吧,说实话是自己的电脑不行,使用虚拟机实在太卡了... 整个的集群搭建是在公司的测试服务搭建的,在搭建的时候遇到各种各样的坑,当然也收获颇多.在成功搭建大数据集群之后,零零散散的做了写笔记,然后重新将这些笔记整理了下来.于是就有了本篇博文. 其实我在搭

WAS7集群-搭建系列-文章目录(V2014-9)

***********************************************声明**********************************************  原创作品,出自 "深蓝的blog" 博客,欢迎转载,转载时请务必注明出处,否则追究版权法律责任. 表述有错误之处,请您留言或邮件([email protected])指明,不胜感激. 本文转载必须保留此处:http://blog.csdn.net/huangyanlong/article/det

kafka学习(三)-kafka集群搭建

kafka集群搭建 下面简单的介绍一下kafka的集群搭建,单个kafka的安装更简单,下面以集群搭建为例子. 我们设置并部署有三个节点的 kafka 集合体,必须在每个节点上遵循下面的步骤来启动 kafka 服务器,kafka集群需要依赖zookeeper集群,上一篇已经说道了zookeeper的搭建,方法请参考:http://www.cnblogs.com/chushiyaoyue/p/5615267.html 1.环境准备 测试服务器(2n+1)奇数台 192.168.181.128 ce

搭建高可用mongodb集群(三)—— 深入副本集内部机制

http://www.lanceyan.com/tech/mongodb_repset2.html 在上一篇文章<搭建高可用mongodb集群(二)—— 副本集> 介绍了副本集的配置,这篇文章深入研究一下副本集的内部机制.还是带着副本集的问题来看吧! 副本集故障转移,主节点是如何选举的?能否手动干涉下架某一台主节点. 官方说副本集数量最好是奇数,为什么? mongodb副本集是如何同步的?如果同步不及时会出现什么情况?会不会出现不一致性? mongodb的故障转移会不会无故自动发生?什么条件会

Mongodb集群搭建的三种方式

Mongodb是时下流行的NoSql数据库,它的存储方式是文档式存储,并不是Key-Value形式.关于Mongodb的特点,这里就不多介绍了,大家可以去看看官方说明:http://docs.mongodb.org/manual/ 今天主要来说说Mongodb的三种集群方式的搭建:Replica Set / Sharding / Master-Slaver.这里只说明最简单的集群搭建方式(生产环境),如果有多个节点可以此类推或者查看官方文档.OS是Ubuntu_x64系统,客户端用的是Java客

(转)淘淘商城系列——Solr集群搭建

http://blog.csdn.net/yerenyuan_pku/article/details/72957201 我们之前做的搜索使用的是Solr的单机版来实现的,正是由于我们现在商品数据量不多,才几千条而已.如果商品数据量变得非常庞大,比如说淘宝,淘宝上面的商品数量特别多,我们用一个单机版的Solr能实现吗?这里面就可能有问题了,一个是数据量特别庞大,每一个服务器存储容量是有上限的,一旦磁盘存不下了怎么办呢?这是不是有问题啊?还有就是由于淘宝的用户访问量很多,搜索的人也有很多,并发量很高