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私有网路
将ipfs
和swarm.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-service
、ipfs-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