Go to file
Hector Sanjuan 319c97585b Renames everywhere removing redundant "Cluster" from "ClusterSomething".
Start preparing syncs() and status()

License: MIT
Signed-off-by: Hector Sanjuan <hector@protocol.ai>
2016-12-15 19:08:46 +01:00
ipfs-cluster Renames everywhere removing redundant "Cluster" from "ClusterSomething". 2016-12-15 19:08:46 +01:00
.travis.yml Add missing dep to .travis.yml 2016-12-08 17:39:27 +01:00
api_test.go Renames everywhere removing redundant "Cluster" from "ClusterSomething". 2016-12-15 19:08:46 +01:00
api.go Renames everywhere removing redundant "Cluster" from "ClusterSomething". 2016-12-15 19:08:46 +01:00
cluster_test.go Renames everywhere removing redundant "Cluster" from "ClusterSomething". 2016-12-15 19:08:46 +01:00
cluster.go Renames everywhere removing redundant "Cluster" from "ClusterSomething". 2016-12-15 19:08:46 +01:00
component.go WIP: basic functionality 2016-12-02 19:33:39 +01:00
config_test.go Renames everywhere removing redundant "Cluster" from "ClusterSomething". 2016-12-15 19:08:46 +01:00
config.go Renames everywhere removing redundant "Cluster" from "ClusterSomething". 2016-12-15 19:08:46 +01:00
consensus_test.go Renames everywhere removing redundant "Cluster" from "ClusterSomething". 2016-12-15 19:08:46 +01:00
consensus.go Renames everywhere removing redundant "Cluster" from "ClusterSomething". 2016-12-15 19:08:46 +01:00
illustrations.md WIP: basic functionality 2016-12-02 19:33:39 +01:00
ipfs_cluster_test.go Renames everywhere removing redundant "Cluster" from "ClusterSomething". 2016-12-15 19:08:46 +01:00
ipfs_cluster.go Renames everywhere removing redundant "Cluster" from "ClusterSomething". 2016-12-15 19:08:46 +01:00
ipfs_connector_test.go Renames everywhere removing redundant "Cluster" from "ClusterSomething". 2016-12-15 19:08:46 +01:00
ipfs_connector.go Renames everywhere removing redundant "Cluster" from "ClusterSomething". 2016-12-15 19:08:46 +01:00
LICENSE Initial commit 2016-07-01 14:41:15 -04:00
Makefile Sync between tracker and cluster state. go vet. tests. 2016-12-09 20:54:46 +01:00
package.json consensus tests 2016-12-14 15:31:50 +01:00
raft.go Renames everywhere removing redundant "Cluster" from "ClusterSomething". 2016-12-15 19:08:46 +01:00
README.md README badges 2016-12-08 17:47:43 +01:00
response.go WIP: basic functionality 2016-12-02 19:33:39 +01:00
rpc_test.go Renames everywhere removing redundant "Cluster" from "ClusterSomething". 2016-12-15 19:08:46 +01:00
rpc.go Renames everywhere removing redundant "Cluster" from "ClusterSomething". 2016-12-15 19:08:46 +01:00
state.go Renames everywhere removing redundant "Cluster" from "ClusterSomething". 2016-12-15 19:08:46 +01:00
TODO.md Fix startup sync mechanism 2016-12-15 15:08:43 +01:00
tracker.go Renames everywhere removing redundant "Cluster" from "ClusterSomething". 2016-12-15 19:08:46 +01:00

ipfs-cluster

standard-readme compliant GoDoc Build Status Coverage Status

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.