IPFS 集群部署

IPFS 和 IPFS-Cluster 默认的端⼝:
IPFS

  • 4001 – 与其他节点通信端⼝
  • 5001 – API server
  • 8080 – Gateway server

IPFS-CLUSTER

  • 9094 – HTTP API endpoint
  • 9095 – IPFS proxy endpoint
  • 9096 – Cluster swarm 集群节点通信端⼝

IPFS官⽅提供的安装⽅式有安装包⽅式, ipfs-update⽅式,源码编译安装⽅式,具体可以查看 这里 ,这⾥为了 ipfs版本选择和升级,所以使⽤ ipfs-update ⽅式安装。

Golang压缩包安装参考文档 CentOS 7 Golang 安装,在IPFS集群中的每台机器均需安装 Golang

在各个节点中安装 ipfs-update:

go get -u github.com/ipfs/ipfs-update

由于ipfs.io 官⽹被 dns 污染的原因,安装以后需要配置⼀下各个节点的 /etc/hosts

209.94.78.78 ipfs.io
209.94.90.1 ipfs.io

通过 ipfs-update versions 可以 列出所有可以使⽤和可以下载的 ipfs 版本。我们这⾥直接安装最新
的版本:

ipfs-update install latest
fetching go-ipfs version v0.4.22
binary downloaded, verifying...

success!

stashing old binary
installing new binary to /home/hector/go/bin/ipfs
checking if repo migration is needed...

Installation complete!

这样 ipfs 就安装成功了,接下来我们需要为每台节点的IPFS初始化⼀下:

ipfs init

swarm.key 密钥允许我们创建⼀个私有⽹络,并告诉⽹络节点只和拥有相同秘钥的节点通信,在⼀个
节点上执⾏下⾯命令:

go get -u github.com/Kubuxu/go-ipfs-swarm-key-gen/ipfs-swarm-key-gen
ipfs-swarm-key-gen > ~/.ipfs/swarm.key

通过 scp 或者上传的⽅式将⽣成的 swarm.key 拷⻉到每⼀台节点的 ~/.ipfs/swarm.key

为了不连接全球的IPFS⽹络,需要将默认的bootstrap的节点信息删除。

ipfs bootstrap rm --all

在每台节点中添加第⼀个节点的bootstrap:

ipfs bootstrap add
/ip4/192.168.10.236/tcp/4001/ipfs/QmSyQFFm5KdB9zoTNQJhPnMs4LYsVmEpY427QYxH2CaFq
L

QmSyQFFm5KdB9zoTNQJhPnMs4LYsVmEpY427QYxH2CaFqLipfs init 时⽣成的节点ID,也可以通
ipfs id 查看当前节点的ID。 我们还需要设置环境变量 LIBP2P FORCE PNET 来强制我们的⽹络进
⼊私有模式

export LIBP2P_FORCE_PNET=1

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

[Unit]
Description=IPFS Daemon
After=syslog.target network.target remote-fs.target nss-lookup.target
[Service]
Type=simple
#/root/goProject/bin/ipfs 的路径取决于Go的工作目录,在安装Go时配置在了/etc/profile中
ExecStart=/root/goProject/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 包含两个组件:

  • ipfs-cluster-service ⽤于初始化集群peer并运⾏它的守护进程
  • ipfs-cluster-ctl 管理集群的节点和数据

我们将 ipfs-cluster 克隆到GOPATH 下,然后make编译安装(系统需安装make):

git clone https://github.com/ipfs/ipfs-cluster.git $GOPATH/src ipfs-cluster
make install

检查是否安装成功:

ipfs-cluster-service --version
ipfs-cluster-ctl --version

类似于IPFS的秘钥,我们管理节点中⽣成⼀个随机密钥:

 od -vN 32 -An -tx1 /dev/urandom | tr -d ' \n'

将⽣成的随机你字符串加⼊到环境变量中,⽐如:
b55262c36de6f97bd50b5233f75866445ec51db74613bad78e906c4dc9ba1d30 分别修改每⼀个节点
的的 ~/.bashrc 添加到环境变量中:

export CLUSTER_SECRET=b55262c36de6f97bd50b5233f75866445ec51db74613bad78e906c4dc9ba1d30

保存后别忘了 source ~/.bashrc

每⼀台节点执⾏初始化命令:

ipfs-cluster-service init

在管理节点启动进程:

ipfs-cluster-service daemon

其他节点启动 --bootstrap 添加主节点:

ipfs-cluster-service daemon --bootstrap
/ip4/192.168.11.11/tcp/9096/ipfs/12D3KooWEGrD9d3n6UJNzAJDyhfTUZNQmQz4k56Hb6TrY
EyxyW2F

这⾥注意下, 12D3KooWEGrD9d3n6UJNzAJDyhfTUZNQmQz4k56Hb6TrYEyxyW2F 是IPFS-Cluster 节点
ID,不是IPFS 节点 ID,可以通过 ipfs-cluster-service id 查看。 可以通过命令查看集群节点状
态:

ipfs-cluster-ctl peers ls

添加 /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
#/root/goProject/bin/ipfs-cluster-service 的路径取决于Go的工作目录,在安装Go时配置在了/etc/profile中
#从节点的启动指令记得加上 --bootstrap /ip4/192.168.10.236/tcp/9096/ipfs/12D3KooWSfApS9Pf5eUXcHaAz7gHH2iJaVs4WUJoXk3GmwPxn5oo
ExecStart=/root/goProject/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

在其中⼀台节点中添加⼀个⽂件:

ipfs-cluster-ctl add test.txt

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

ipfs-cluster-ctl status CID

Original: https://www.cnblogs.com/kimyoung/p/15986096.html
Author: KimYoung
Title: IPFS 集群部署

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/590667/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球