IPFS-Cluster 搭建流程

准备工作

  • 拉取代码:
git clone https://github.com/ipfs/go-ipfs.git
git clone https://github.com/ipfs/ipfs-cluster.git
go get -u github.com/Kubuxu/go-ipfs-swarm-key-gen/ipfs-swarm-key-gen
  • 编译代码(也可直接github从releases上下载可执行二进制文件)

    #ipfs
    cd go-ipfs/cmd/ipfs
    go build 
    #ipfs-cluster
    cd ipfs-cluster/ipfs-cluster-ctl
    go build 
    cd ipfs-cluster/ipfs-cluster-service
    go build 
    
  • 生成密钥

#ipfs密钥
ipfs-swarm-key-gen > ~/.ipfs/swarm.key
#ipfs-cluster密钥
 od -vN 32 -An -tx1 /dev/urandom | tr -d ' \n'
#记住密钥
c8d92b6783558b7f10d480b1b8c5e9c9c9c8a5e72f65ea8e9d0c36d72d0016a2

下面将在五台机器部署ipfs-cluster

172.18.3.1(主节点)
172.18.3.2
172.18.3.3
172.18.3.4
172.18.3.5

搭建IPFS私有网路

ipfsswarm.key拷贝到五台机器

从172.18.3.1-3.5开始启动ipfs

#172.18.3.1
#初始化
./ipfs init
#删除所有默认连接节点
./ipfs bootstrap rm --all
#复制私有网络密钥到配置文件夹内
cp swarm.key ~/.ipfs/
#启动ipfs
./ipfs daemon 
#查看ipfs id
./ipfs id 
#12D3KooWMuLfL5g2i91z3bQtecjHNH6dtbP42eEDQZCsYdx7H83f

#172.18.3.2
#初始化
./ipfs init
#删除所有默认连接节点
./ipfs bootstrap rm --all
#复制私有网络密钥到配置文件夹内
cp swarm.key ~/.ipfs/
#加入节点1网络
./ipfs bootstrap add /ip4/172.18.3.1/tcp/4001/ipfs/12D3KooWMuLfL5g2i91z3bQtecjHNH6dtbP42eEDQZCsYdx7H83f
#启动ipfs
./ipfs daemon 
#查看ipfs id
./ipfs id 
#12D3KooWFNcYF7HzAHk5a5KAQutXfSQWsyEyHrQDxtmQCwX5wUAR

#172.18.3.3
#初始化
./ipfs init
#删除所有默认连接节点
./ipfs bootstrap rm --all
#复制私有网络密钥到配置文件夹内
cp swarm.key ~/.ipfs/
#加入其它节点网络
./ipfs bootstrap add /ip4/172.18.3.1/tcp/4001/ipfs/12D3KooWMuLfL5g2i91z3bQtecjHNH6dtbP42eEDQZCsYdx7H83f
./ipfs bootstrap add /ip4/172.18.3.2/tcp/4001/ipfs/12D3KooWFNcYF7HzAHk5a5KAQutXfSQWsyEyHrQDxtmQCwX5wUAR
#启动ipfs
./ipfs daemon 
#查看ipfs id
./ipfs id 
#12D3KooWNUS86De4xyQpErMKagXREERZHDZnsqfiJRcCPxZc3sUZ

#172.18.3.4
#初始化
./ipfs init
#删除所有默认连接节点
./ipfs bootstrap rm --all
#复制私有网络密钥到配置文件夹内
cp swarm.key ~/.ipfs/
#加入其它节点网络
./ipfs bootstrap add /ip4/172.18.3.1/tcp/4001/ipfs/12D3KooWMuLfL5g2i91z3bQtecjHNH6dtbP42eEDQZCsYdx7H83f
./ipfs bootstrap add /ip4/172.18.3.2/tcp/4001/ipfs/12D3KooWFNcYF7HzAHk5a5KAQutXfSQWsyEyHrQDxtmQCwX5wUAR
./ipfs bootstrap add /ip4/172.18.3.3/tcp/4001/ipfs/12D3KooWNUS86De4xyQpErMKagXREERZHDZnsqfiJRcCPxZc3sUZ 
#启动ipfs
./ipfs daemon 
#查看ipfs id
./ipfs id 
#12D3KooWPam8PpjychftpzU4vXaZhHYWVpN6QJP68bwNRzeVLBt2

#172.18.3.5重复操作

#在任意节点执行,查看节点连接情况
./ipfs swarm peers 

搭建IPFS-Cluster

ipfs-cluster-serviceipfs-cluster-ctl拷贝到五台机器

从172.18.3.1-3.5开始启动IPFS-Cluster

#172.18.3.1-3.5每一台执行命令
#初始化
./ipfs-cluster-service init
#将生成的密钥加入到环境变量中,比如: c8d92b6783558b7f10d480b1b8c5e9c9c9c8a5e72f65ea8e9d0c36d72d0016a2
#分别修改每一个节点的的~/.bashrc添加到环境变量中:
export CLUSTER_SECRET=b55262c36de6f97bd50b5233f75866445ec51db74613bad78e906c4dc9ba1d30
#最后别忘了 
source ~/.bashrc

#172.18.3.1 主节点启动
./ipfs-cluster-service daemon
#查看集群ID
./ipfs-cluster-ctl peers ls
#也可以通过service查看
ipfs-cluster-service id
#12D3KooWPVtHiq9AWnRQYKRXqQAr5WBKJtGDeZwfJxLxkBv3oBAg

#3.2-3.5子节点启动
./ipfs-cluster-service daemon --bootstrap /ip4/172.18.3.1/tcp/9096/p2p/12D3KooWPVtHiq9AWnRQYKRXqQAr5WBKJtGDeZwfJxLxkBv3oBAg

#查看集群连接情况
./ipfs-cluster-ctl peers ls

IPFS-Cluster测试文件存储

在其中一台节点中添加一个文件:

./ipfs-cluster-ctl add test.txt

通过添加的文件 CID 来查看文件状态,可以看到文件以及在所有节点中PINNED

./ipfs-cluster-ctl status CID

配置系统进程启动

  • IPFS

每台的 IPFS 启动都加入系统的守护进程启动,添加 /etc/systemd/system/ipfs.service

[Unit]
Description=IPFS Daemon
After=syslog.target network.target remote-fs.target nss-lookup.target
[Service]
Type=simple
ExecStart=/usr/local/bin/ipfs daemon --enable-namesys-pubsub
User=root
[Install]
WantedBy=multi-user.target

现在可以通过下面的命令来启动 IPFS 的后台守护进程了:

systemctl daemon-reload
systemctl enable ipfs
systemctl start ipfs
systemctl status ipfs
  • IPFS-Cluster

添加到/etc/systemd/system/ipfs-cluster.service:

[Unit]
Description=IPFS-Cluster Daemon
Requires=ipfs
After=syslog.target network.target remote-fs.target nss-lookup.target ipfs
[Service]
Type=simple
ExecStart=/root/go/bin/ipfs-cluster-service daemon
User=root
[Install]
WantedBy=multi-user.target

现在可以通过下面的命令来启动 ipfs-cluster 的后台守护进程了:

systemctl daemon-reload
systemctl enable ipfs-cluster
systemctl start ipfs-cluster
systemctl status ipfs-cluster
Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐