IPFS Cluster 是一款针对 IPFS(星际文件系统)网络的固定集(pinset)编排工具,旨在通过跨多个 IPFS 守护进程(daemon)分配、复制和跟踪全局固定集,实现分布式环境下的数据协同管理。其核心目标是解决多节点 IPFS 部署中数据一致性、可用性及冗余管理问题,确保指定数据在集群内的可靠存储与访问。
集群节点服务(ipfs-cluster-service)
作为核心组件,需与 kubo(原 go-ipfs)守护进程配合运行(sidecar 模式),负责本地节点的固定集管理、集群通信及数据同步。
客户端 CLI(ipfs-cluster-ctl)
提供命令行接口,通过 HTTP API 与集群节点交互,支持固定集添加/删除、集群状态查询、节点管理等操作。
跟随节点服务(ipfs-cluster-follow)
简化「跟随节点」(follower peer)的配置与启动流程,无需手动管理复杂集群参数,快速接入现有集群。
ipfs-cluster-ctl 提交固定任务,集群自动分配至节点并复制。bash# 查看集群状态 ipfs-cluster-ctl status # 添加 CID 至全局固定集(副本数 2) ipfs-cluster-ctl pin add <CID> --replication 2 # 移除固定集 ipfs-cluster-ctl pin rm <CID> # 查看集群节点列表 ipfs-cluster-ctl peers ls
IPFS Cluster 支持通过环境变量或配置文件(config.json)自定义参数,常用环境变量如下:
| 环境变量 | 描述 | 默认值 | 示例值 |
|---|---|---|---|
CLUSTER_SECRET | 集群密钥(所有节点必须一致) | 无(必填) | QmXYZ123...(base64 编码字符串) |
IPFS_CLUSTER_IPFSHTTP_NODE | 关联的 IPFS 节点 HTTP API 地址 | http://localhost:5001 | [***] |
CLUSTER_RESTAPI_HTTPLISTENADDR | 集群 HTTP API 监听地址 | /ip4/0.0.0.0/tcp/9094 | /ip4/0.0.0.0/tcp/9095 |
CLUSTER_PEERNAME | 节点名称(集群内唯一) | 自动生成(基于节点 ID) | node-1 |
CLUSTER_BOOTSTRAP | 引导节点地址(新节点加入集群时使用) | 无 | /ip4/192.168.1.100/tcp/9096/p2p/12D3Koo... |
bash# 启动 IPFS 守护进程(kubo) docker run -d --name ipfs-daemon -p 4001:4001 -p 5001:5001 ipfs/kubo:latest # 生成集群密钥(本地执行) CLUSTER_SECRET=$(od -vN 32 -An -tx1 /dev/urandom | tr -d ' \n') # 启动 IPFS Cluster 节点(关联上述 IPFS 守护进程) docker run -d --name ipfs-cluster \ --link ipfs-daemon:ipfs \ -e CLUSTER_SECRET=$CLUSTER_SECRET \ -e IPFS_CLUSTER_IPFSHTTP_NODE=[***] \ -p 9094:9094 \ # HTTP API 端口 -p 9096:9096 \ # 集群通信端口 ipfs/ipfs-cluster:latest
yaml# docker-compose.yml version: '3' services: ipfs-1: image: ipfs/kubo:latest ports: - "4001:4001" - "5001:5001" volumes: - ipfs1-data:/data/ipfs cluster-1: image: ipfs/ipfs-cluster:latest depends_on: - ipfs-1 environment: - CLUSTER_SECRET=your-cluster-secret-here # 替换为实际密钥 - IPFS_CLUSTER_IPFSHTTP_NODE=[***] - CLUSTER_PEERNAME=cluster-node-1 - CLUSTER_BOOTSTRAP= # 首个节点无需引导地址 ports: - "9094:9094" - "9096:9096" volumes: - cluster1-data:/data/ipfs-cluster ipfs-2: image: ipfs/kubo:latest ports: - "4002:4001" - "5002:5001" volumes: - ipfs2-data:/data/ipfs cluster-2: image: ipfs/ipfs-cluster:latest depends_on: - ipfs-2 - cluster-1 environment: - CLUSTER_SECRET=your-cluster-secret-here # 与 cluster-1 一致 - IPFS_CLUSTER_IPFSHTTP_NODE=[***] - CLUSTER_PEERNAME=cluster-node-2 - CLUSTER_BOOTSTRAP=/ip4/cluster-1/tcp/9096/p2p/<cluster-1-peer-id> # 替换为 cluster-1 的 peer ID ports: - "9095:9094" - "9097:9096" volumes: - cluster2-data:/data/ipfs-cluster volumes: ipfs1-data: cluster1-data: ipfs2-data: cluster2-data:
注意:
CLUSTER_BOOTSTRAP需替换为首个集群节点(cluster-1)的实际 peer ID,可通过docker logs cluster-1查看启动日志获取。
IPFS Cluster 欢迎社区贡献,具体指南参见 贡献规范。
本项目采用双许可证授权:Apache 2.0 与 MIT 许可证。
© 2022 Protocol Labs, Inc.
参考文档:完整用户手册与技术细节请参见 IPFS Cluster ***文档。
来自真实用户的反馈,见证轩辕镜像的优质服务
免费版仅支持 Docker Hub 加速,不承诺可用性和速度;专业版支持更多镜像源,保证可用性和稳定速度,提供优先客服响应。
免费版仅支持 docker.io;专业版支持 docker.io、gcr.io、ghcr.io、registry.k8s.io、nvcr.io、quay.io、mcr.microsoft.com、docker.elastic.co 等。
当返回 402 Payment Required 错误时,表示流量已耗尽,需要充值流量包以恢复服务。
通常由 Docker 版本过低导致,需要升级到 20.x 或更高版本以支持 V2 协议。
先检查 Docker 版本,版本过低则升级;版本正常则验证镜像信息是否正确。
使用 docker tag 命令为镜像打上新标签,去掉域名前缀,使镜像名称更简洁。
探索更多轩辕镜像的使用方法,找到最适合您系统的配置方式
通过 Docker 登录认证访问私有仓库
在 Linux 系统配置镜像加速服务
在 Docker Desktop 配置镜像加速
Docker Compose 项目配置加速
Kubernetes 集群配置 Containerd
在宝塔面板一键配置镜像加速
Synology 群晖 NAS 配置加速
飞牛 fnOS 系统配置镜像加速
极空间 NAS 系统配置加速服务
爱快 iKuai 路由系统配置加速
绿联 NAS 系统配置镜像加速
QNAP 威联通 NAS 配置加速
Podman 容器引擎配置加速
HPC 科学计算容器配置加速
ghcr、Quay、nvcr 等镜像仓库
无需登录使用专属域名加速
需要其他帮助?请查看我们的 常见问题 或 官方QQ群: 13763429