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

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.git

cd 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

Linux部署IPFS(分布式存储系统)私有网络_第1张图片

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

Linux部署IPFS(分布式存储系统)私有网络_第2张图片

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

#获取创建秘钥工具
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

Linux部署IPFS(分布式存储系统)私有网络_第3张图片

启动第一个节点

export LIBP2P_FORCE_PENT=1|IPFS_PATH=/mnt/ipfs_nodes/ipfs_1/ ipfs daemon &

# export LIBP2P_FORCE_PNET=1表示您将节点强制为私有

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

Linux部署IPFS(分布式存储系统)私有网络_第4张图片

启动其他节点 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

Linux部署IPFS(分布式存储系统)私有网络_第5张图片

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

2.添加引导程序节点bootstrap

命令格式

ipfs bootstrap add /ip4//tcp//ipfs/

像这样 

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

IPFS_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(分布式存储系统)私有网络_第6张图片

 

安装完成!!!

有问题或意见欢迎留言!

 

你可能感兴趣的:(Linux的应用与维护,IPFS(星际文件系统),linux,IPFS,分布式存储,区块链)