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)

大家都在看

  • MYSQL–>视图

    视图就是一种 虚拟存在的表。因为视图的数据不在数据库中实际存在。 视图的行和列的数据都来自于 我们定义视图所使用的表 其中,定义视图所使用的表叫 基表 视图的行和列的数据是在使用视…

    数据库 2023年6月14日
    084
  • LinkedList源码刨析

    404. 抱歉,您访问的资源不存在。 可能是网址有误,或者对应的内容被删除,或者处于私有状态。 代码改变世界,联系邮箱 contact@cnblogs.com 园子的商业化努力-困…

    数据库 2023年6月16日
    091
  • java读写锁

    工作遇到了金钱计算,需要用到读写锁保证数据安全。记录一下。 单纯读没有限制,读写、写写的时候会有安全问题。 _hashMap_存在并发线程安全问题,而 _hashtable_线程安…

    数据库 2023年6月16日
    094
  • 事务的ACID特性

    技术是为了解决问题而生的,通过事务我们可以解决以下问题: 多个操作不是一个整体操作,出现了部分执行成功的情况,导致数据的状态不一致问题(原子性) 一组操作只有部分完成,没有全部完成…

    数据库 2023年6月11日
    0105
  • windows环境下nacos集群启动报错-无法启动内嵌的tomcat

    解决办法:使用64位jdk切记不要使用32位。切记不要使用32位。切记不要使用32位。 Original: https://www.cnblogs.com/journeyhch/p…

    数据库 2023年6月11日
    091
  • 在线安装Docker

    安装 yum-utils 包yum install -y yum-utils 设置存储库# 官方地址(比较慢) yum-config-manager \ –add-repo \ …

    数据库 2023年6月14日
    0100
  • SpringBoot整合WebService(实用版)

    SpringBoot整合WebService 简介 WebService就是一种跨编程语言和跨操作系统平台的远程调用技术 此处就不赘述WebService相关概念和原理了,可以参考…

    数据库 2023年6月16日
    0115
  • jupyter使用虚拟环境

    为了在jupyter中使用pyTorch的虚拟环境,来记录一下怎么操作一、conda命令的使用因为使用的是jupyter,所有就使用Anaconda Prompt来创建虚拟环境(也…

    数据库 2023年6月14日
    099
  • SpringBoot自动装配-自定义Start

    SpringBoot自动装配 JAVA技术交流群:737698533 SpringBootApplication注解 什么是自动装配,也就是说帮你把需要的类自动添加到Spring容…

    数据库 2023年6月16日
    0112
  • javaScript知识大全(基础)!!

    定义方法:即把函数放在对象里面,对象只有属性和方法 var a={ name:"111", birth:2000, age:function (){ var n…

    数据库 2023年6月16日
    087
  • jmeter-操作mysql

    1. 环境:jmeter5.3,mysql5.7。 提取码:ZHEN 3. 操作 ①. 测试计划内导入jdbcjar包 ②. jmeter内添加👉线程组,点击”添加→配…

    数据库 2023年6月14日
    097
  • SpringBoot邮件报警

    SpringBoot邮件报警 一、介绍 邮件报警,大体思路就是收集服务器发生的异常发送到邮箱,做到服务器出问题第一时间知道,当然要是不关注邮箱当我没说 (1)、引入依赖 <d…

    数据库 2023年6月6日
    0127
  • MySQL快速创建800w条测试数据表&深度分页

    MySQL快速创建800w条测试数据表&深度分页 如果一条一条插入普通表的话,效率太低下,但内存表插入速度是很快的,可以先建立一张内存表,插入数据后,在导入到普通表中。 1…

    数据库 2023年6月14日
    0113
  • RadonDB MySQL Kubernetes 2.2.0 发布!

    摘要 RadonDB MySQL Kubernetes v2.2.0 于近日发布!该版本开始支持 MySQL 8.0,备份功能优化,并全面提升高可用稳定性。社区同步发起&#8221…

    数据库 2023年5月24日
    0118
  • hosts文件作用

    1、加快域名解析对于要经常访问的网站,我们可以通过在Hosts中配置域名和IP的映射关系,提高域名解析速度。由于有了映射关系,当我们输入域名计算机就能很快解析出IP,而不用请求网络…

    数据库 2023年6月11日
    075
  • 记录一次docker镜像拉取失败的问题

    syslog日志 Mar 13 08:42:41 xxx dockerd[30691]: time=”2022-03-13T08:42:41.928436506Z&#8…

    数据库 2023年6月9日
    0127
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球