Linux部署IPFS(分布式存储系统)私有网络

简介:

星际文件系统是一个旨在创建持久且分布式存储和共享文件的网络传输协议。它是一种内容可寻址的对等超媒体分发协议。在IPFS网络中的节点将构成一个分布式文件存储系统。

官网:https://ipfs.io/

github(golang实现):https://github.com/ipfs/go-ipfs

前提:

golang Linux搭建Golang开发环境

本机系统 deepin V20,其他Linux系统也适用

文件目录

我这边打算部署一个3节点的IPFS网络,所以创建三个文件夹来管理数据,以及一个存放集群秘钥的目录

mkdir /mnt/ipfs_nodes            #所有节点目录mkdir /mnt/ipfs_nodes/key        #集群私钥目录mkdir /mnt/ipfs_nodes/ipfs_1     #IPFS节点1
mkdir /mnt/ipfs_nodes/ipfs_2     #IPFS节点2
mkdir /mnt/ipfs_nodes/ipfs_3     #IPFS节点3

获取ipfs源码并编译可执行文件

git clone https://github.com/ipfs/go-ipfs.gitcd go-ipfs
make install

初始化节点

IPFS_PATH=/mnt/ipfs_nodes/ipfs_1 ipfs init    #初始化节点1
IPFS_PATH=/mnt/ipfs_nodes/ipfs_2 ipfs init    #初始化节点2
IPFS_PATH=/mnt/ipfs_nodes/ipfs_3 ipfs init    #初始化节点3

因为我是单机部署多节点,所以每次操作需要指定操作节点目录,如果是部署单节点,那么就可以在环境变量中提前配置 IPFS_PATH 变量

删除引导程序节点的默认条目

因为我们是部署私有网络,所以需要移除原有的引导程序节点,如果不删除,启动后就会同步IPFS主网的数据

IPFS_PATH=/mnt/ipfs_nodes/ipfs_1/ ipfs bootstrap rm --all
IPFS_PATH=/mnt/ipfs_nodes/ipfs_2/ ipfs bootstrap rm --all
IPFS_PATH=/mnt/ipfs_nodes/ipfs_3/ ipfs bootstrap rm --all

创建集群密钥(私有网络),并配置到各个节点

#获取创建秘钥工具
go get -u github.com/Kubuxu/go-ipfs-swarm-key-gen/ipfs-swarm-key-gen#创建秘钥的命令
ipfs-swarm-key-gen > 目录地址/swarm.key
#例如
#ipfs-swarm-key-gen > /mnt/ipfs_nodes/key/swarm.key#copy swarm.key到各个节点根目录
cp /mnt/ipfs_nodes/key/swarm.key /mnt/ipfs_nodes/ipfs_1
cp /mnt/ipfs_nodes/key/swarm.key /mnt/ipfs_nodes/ipfs_2
cp /mnt/ipfs_nodes/key/swarm.key /mnt/ipfs_nodes/ipfs_3

配置config文件

我这里主要配置的是程序运行的端口,因为IPFS默认的端口是一致的,我单机部署多节点就得区分,如果是单机部署且不考虑端口占用情况可以跳过这一步

我的配置情况

ipfs_1 port: 15001,18081,14001

ipfs_2 port: 15002,18082,14002

ipfs_3 port: 15003,18083,14003

这里我仅以 ipfs_1 节点做演示

vim /mnt/ipfs_nodes/ipfs_1/config

启动第一个节点

export LIBP2P_FORCE_PENT=1|IPFS_PATH=/mnt/ipfs_nodes/ipfs_1/ ipfs daemon &# export LIBP2P_FORCE_PNET=1表示您将节点强制为私有

这里需要说明以下,& 是表示后台运行,第一次接触IPFS,建议不带 &运行,这样可以查看节点信息,像这样

启动其他节点 ipfs_2 ,ipfs_3

在启动其他节点时需要先做一个事情,就是添加 bootstrap引导程序节点)。这里跟前面的删除引导程序节点的默认条目动作是相呼应的

简单说就是让 3个节点建立起链接

首先,我们的ipfs_1已经运行起来了,现在是一个独立的节点。那么我们就给ipfs_2,ipfs_3添加ipfs_1的peer id

1.查询ipfs_1的peer id

IPFS_PATH=/mnt/ipfs_nodes/ipfs_1/ ipfs id

细心的朋友应该发现了,这个ID就是在ipfs init初始化时就会展示出peer identity是一样的

2.添加引导程序节点bootstrap

命令格式

ipfs bootstrap add /ip4/<ip>/tcp/<swarm port>/ipfs/<peer id>

像这样

IPFS_PATH=/mnt/ipfs_nodes/ipfs_2 ipfs bootstrap add /ip4/127.0.0.1/tcp/14001/ipfs/12D3KooWQsNLH5bqsXUJ4RjaEwDYu1SLQzm8AEQpZDfP16o4BRzBIPFS_PATH=/mnt/ipfs_nodes/ipfs_3 ipfs bootstrap add /ip4/127.0.0.1/tcp/14001/ipfs/12D3KooWQsNLH5bqsXUJ4RjaEwDYu1SLQzm8AEQpZDfP16o4BRzB

3.启动节点

export LIBP2P_FORCE_PENT=1|IPFS_PATH=/mnt/ipfs_nodes/ipfs_2/ ipfs daemon
export LIBP2P_FORCE_PENT=1|IPFS_PATH=/mnt/ipfs_nodes/ipfs_3/ ipfs daemon

安装完成!!!

有问题或意见欢迎留言!

Linux部署IPFS(分布式存储系统)私有网络相关推荐

  1. linux部署Minio(分布式文件服务器)

    MinIO 是一款高性能.分布式的对象存储系统. 它是一款软件产品, 可以100%的运行在标准硬件.即X86等低成本机器也能够很好的运行MinIO. MinIO与传统的存储和其他的对象存储不同的是:它 ...

  2. 【Linux】开源分布式存储系统:GlusterFS

    https://www.gluster.org 服务端 [root@wallet01 ~]# yum install -y centos-release-gluster [root@wallet01 ...

  3. 基于 softether 搭建虚拟私有网络

    文章目录 虚拟私有网络简介 部署配置服务器端 使用管理软件管理vpn服务器 安装客户端并进行连接测试 虚拟私有网络简介 详细介绍参见 虚拟私有网络学习笔记 虚拟私有网络分类 按协议分类: 虚拟私有网络 ...

  4. 使用AFS, Active Directory和SSSD搭建用于集成电路设计的分布式存储系统 【十七】部署 AFS 客户端 2 统一身份登录

    使用AFS, Active Directory和SSSD搭建用于集成电路设计的分布式存储系统 [十七]部署 AFS 客户端 2 统一身份登录 Linux 统一身份登录和查询 POSIX 属性 (POS ...

  5. 分布式存储系统 Ceph 介绍与环境部署

    文章目录 一.概述 二.Ceph 架构 三.Ceph核心组件介绍 四.Ceph 三种存储类型 1)块存储服务(RBD) 2)文件系统存储服务(CephFS) 3)对象存储服务(RGW) 五.Ceph版 ...

  6. 使用AFS, Active Directory和SSSD搭建用于集成电路设计的分布式存储系统 【十一】部署前的准备 3

    使用AFS, Active Directory和SSSD搭建用于集成电路设计的分布式存储系统 [十一]部署前的准备 3 DNS 服务 NTP 服务 Kerberos 服务 AFS Long-Term ...

  7. 使用AFS, Active Directory和SSSD搭建用于集成电路设计的分布式存储系统 【十二】部署第一台 AFS 服务器 1

    使用AFS, Active Directory和SSSD搭建用于集成电路设计的分布式存储系统 [十二]部署第一台 AFS 服务器 1 预备条件检查清单 第一台服务器上将要部署和运行的服务 ptserv ...

  8. linux如何访问公司网盘,Linux部署私有企业网盘

    原标题:Linux部署私有企业网盘 悦库网盘linux下载地址:http://pkg.ydisk.cn/ydisks_linux.tar.gz 安装: 1.下载ydisks_linux.tar.gz安 ...

  9. 2021年最新 k8s安装部署步骤 kubernetes从入门到实践 K8S实战容器化迁移实战教程 K8S存储之Ceph分布式存储系统 K8S架构师实战指南

    2021年最新 k8s安装部署步骤 kubernetes从入门到实践 K8S实战容器化迁移实战教程 K8S存储之Ceph分布式存储系统 K8S架构师实战指南

最新文章

  1. 死磕Java并:J.U.C之ConcurrentHashMap红黑树转换分析
  2. FreeRTOS知识点
  3. docker for ubuntu安装
  4. 文档中根元素后面的标记格式必须正确。
  5. python计算选手最后得分并取出前三名_MySQL中查询获取每个班级成绩前三名的学生信息...
  6. 南阳32--组合数(Dfs)
  7. Java Swing Mysql学生选课系统
  8. 无法启用插件,因为它引起了一个致命错误(fatal error)。
  9. HTML PROGRESS 中显示百分比,在ProgressBar控件中显示进度百分比
  10. 所谓高手,就是把自己活成了贝叶斯定理
  11. 网络爬虫、spider程序、网络蜘蛛
  12. 【FFmpeg命令】jpg与yuv(批量)互转
  13. 学英语《每日一歌》之Traveling Light
  14. LINQ SelectMany cannot be inferred from the usage. Try specifying the type arguments explicitly.
  15. Android仿微信图片编辑处理:文字,马赛克,裁剪,涂鸦,旋转图片等
  16. golang 数学函数
  17. 数商云B2B分销商城系统:助力企业加快分销速度,构建高效智能B2B网上分销平台
  18. html利用百度地图查找路线,html调用百度地图API实现查找路线
  19. Android 开源交流分享汇总
  20. 指针p++与p+1的区别

热门文章

  1. UltraEdit 15.10 注册码
  2. 用Python做一个愿望清单,2020年计划让小美女来督促吧!
  3. 记录一次产线502错误
  4. 用自己的雷达进行Cartographer建图或仿真
  5. JavaScript 之 核心语法 [ 对象 ]
  6. 宽带码分多址系统中多径衰落与多址干扰的影响
  7. 计算一个有向图中出度为零和入度为零的顶点个数
  8. vs2017配置linux连接器失败,Xilinx HLx 2017.1与VS 2017兼容问题解决的方法盘点
  9. 电子商务系统数据库设计(一)
  10. [BJDCTF 2nd]假猪套天下第一