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 集群節點通信端⼝

Golang 安裝

IPFS官⽅提供的安裝⽅式有安裝包⽅式,ipfs-update⽅式,源碼編譯安裝⽅式,具體可以查看 這里 ,這⾥為了ipfs版本選擇和升級,所以使⽤ ipfs-update ⽅式安裝。

Golang壓縮包安裝參考文檔 CentOS 7 Golang 安裝,在IPFS集群中的每台機器均需安裝Golang

安裝ipfs-update

在各個節點中安裝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

創建共享的key

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

移除默認的bootstrap節點

為了不連接全球的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進程加⼊到系統進程中啟動

每台的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 包含兩個組件:

  • 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

將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
#/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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM