Go to file
Hector Sanjuan deac66209e Add missing dep to .travis.yml
License: MIT
Signed-off-by: Hector Sanjuan <hector@protocol.ai>
2016-12-08 17:35:45 +01:00
ipfs-cluster Introduce the concept of PinTracker. Thin ClusterState to minimal. 2016-12-06 22:29:59 +01:00
.travis.yml Add missing dep to .travis.yml 2016-12-08 17:35:45 +01:00
api.go Return 202-Accepted when requesting to Pin/Unpin 2016-12-07 17:28:46 +01:00
cluster.go Some tests. Mostly to check if travis/coveralls work 2016-12-08 17:24:38 +01:00
component.go WIP: basic functionality 2016-12-02 19:33:39 +01:00
config.go WIP: basic functionality 2016-12-02 19:33:39 +01:00
consensus.go Add MapPinTracker sync and recover capabilities. 2016-12-07 17:21:29 +01:00
illustrations.md WIP: basic functionality 2016-12-02 19:33:39 +01:00
ipfs_cluster_test.go Some tests. Mostly to check if travis/coveralls work 2016-12-08 17:24:38 +01:00
ipfs_cluster.go Some tests. Mostly to check if travis/coveralls work 2016-12-08 17:24:38 +01:00
ipfs_connector_test.go Some tests. Mostly to check if travis/coveralls work 2016-12-08 17:24:38 +01:00
ipfs_connector.go Some tests. Mostly to check if travis/coveralls work 2016-12-08 17:24:38 +01:00
LICENSE Initial commit 2016-07-01 14:41:15 -04:00
Makefile Travis, coveralls, Makefile 2016-12-08 17:20:16 +01:00
package.json WIP: basic functionality 2016-12-02 19:33:39 +01:00
raft.go WIP: basic functionality 2016-12-02 19:33:39 +01:00
README.md WIP: basic functionality 2016-12-02 19:33:39 +01:00
response.go WIP: basic functionality 2016-12-02 19:33:39 +01:00
rpc_test.go Some tests. Mostly to check if travis/coveralls work 2016-12-08 17:24:38 +01:00
rpc.go Some tests. Mostly to check if travis/coveralls work 2016-12-08 17:24:38 +01:00
state.go Introduce the concept of PinTracker. Thin ClusterState to minimal. 2016-12-06 22:29:59 +01:00
tracker.go Add MapPinTracker sync and recover capabilities. 2016-12-07 17:21:29 +01:00

ipfs-cluster

standard-readme compliant

Clustering for IPFS nodes.

WORK IN PROGRESS

DO NOT USE IN PRODUCTION

ipfs-cluster is a tool which groups a number of IPFS nodes together, allowing to collectively perform operations such as pinning.

In order to do so ipfs-cluster nodes use a libp2p-based consensus algorithm (currently Raft) to agree on a log of operations and build a consistent state across the cluster. The state represents which objects should be pinned by which nodes.

Additionally, ipfs-cluster nodes act as a proxy/wrapper to the IPFS API, so an IPFS cluster can be used as a regular node.

ipfs-cluster provides a Go API, an equivalent HTTP API (in a RESTful fashion) and a command-line interface tool (ipfs-cluster-ctl) which plugs directly into it.

Table of Contents

Background

Since the start of IPFS it was clear that a tool to coordinate a number of different nodes (and the content they are supposed to store) would add a great value to the IPFS ecosystem. Naïve approaches are possible, but they present some weaknesses, specially at dealing with error handling and incorporating multiple pinning strategies.

ipfs-cluster aims to address this issues by providing a IPFS node wrapper which coordinates multiple cluster members via a consensus algorithm. This ensures that the desired state of the system is always agreed upon and can be easily maintained by the members of the cluster. Thus, every cluster member has an overview of where each hash is pinned, and the cluster can react to any contingencies, like IPFS nodes dying, by redistributing the storage load to others.

Install

TODO

Usage

The documentation and examples for ipfs-cluster (useful if you are integrating it in Go) can be found in godoc.org/github.com/ipfs/ipfs-cluster.

TODO

API

TODO

Contribute

PRs accepted.

Small note: If editing the README, please conform to the standard-readme specification.

License

MIT © Protocol Labs, Inc.