Go to file
Hector Sanjuan d3d1f960f5 Feat: Enable DHT-based peer discovery and routing for cluster peers
This uses go-libp2p-kad-dht as routing provider for the Cluster Peers.

This means that:

* A cluster peer can discover other Cluster peers even if they are
not in their peerstore file.
* We remove a bunch of code sending and receiving peers multiaddresses
when a new peer was added to the Cluster.
* PeerAdd now takes an ID and not a multiaddress. We do not need to
ask the new peer which is our external multiaddress nor broadcast
the new multiaddress to everyone. This will fix problems when bootstrapping
a new peer to the Cluster while not all the other peers are online.
* Adding a new peer does not mean to open connections to all peers
anymore. The number of connections will be made according to the DHT
parameters (this is good to have for future work)

The that detecting a peer addition in the watchPeers() function does
no longer mean that we have connected to it or that we know its
multiaddresses. Therefore it's no point to save the peerstore in these
events anymore.

Here a question opens, should we save the peerstore at all, and should we
save multiaddresses only for cluster peers, or for everyone known?
Currently, the peerstore is only updated on clean shutdown,
and it is updated with all the multiaddresses known, and not limited to
peer IDs in the cluster, (because, why not).

License: MIT
Signed-off-by: Hector Sanjuan <code@hector.link>
2018-07-24 15:33:41 +02:00
.github Fix #412: Add an issue template 2018-05-30 14:43:04 +02:00
.gx gx publish 0.4.0 2018-05-30 13:26:31 +02:00
.snapcraft New credentials for pushing snaps 2018-01-10 18:33:33 +01:00
allocator typos and style nitpicks 2018-05-02 15:24:26 +02:00
api Feat: Enable DHT-based peer discovery and routing for cluster peers 2018-07-24 15:33:41 +02:00
ci Pre-create and pre-connect hosts in tests 2018-04-05 16:49:26 +02:00
config Fix #339: Reduce Sleeps in tests 2018-04-05 16:49:26 +02:00
consensus/raft Update the libp2p dependency to version 6.0.5 2018-06-28 13:27:02 +02:00
docker Docker: Run with daemon --upgrade by default. 2018-04-27 07:57:08 +02:00
informer Types: rename metric.SetTTLDuration to metric.SetTTL 2018-05-07 14:26:06 +02:00
ipfs-cluster-ctl all: gofmt 2018-06-14 11:55:03 +02:00
ipfs-cluster-service fix #423: Remove lock file when daemon force quits 2018-05-25 21:01:46 -05:00
ipfsconn/ipfshttp Fix #462: Support DNS multiaddresses for node_multiaddress 2018-06-12 10:09:03 +02:00
monitor Monitor/tests: Allow to run tests using the basic monitor. 2018-05-09 11:39:21 +02:00
pintracker Address comments 2018-05-28 11:59:26 +02:00
pstoremgr Fix #462: Support DNS multiaddresses for node_multiaddress 2018-06-12 10:09:03 +02:00
rpcutil Monitor: address comments 2018-05-09 11:01:52 +02:00
sharness Fix sharness 2018-05-25 09:54:52 +02:00
snap Move back the docker call to travis 2017-11-16 14:36:42 +00:00
state Migration to state specifying recursive attribute 2018-03-12 11:06:42 -04:00
test Feat: Enable DHT-based peer discovery and routing for cluster peers 2018-07-24 15:33:41 +02:00
.codeclimate.yml Codeclimate: increase thresholds again. They're too low for Go. 2018-01-19 22:24:03 +01:00
.dockerignore Issue #259: Address CR comments 2017-12-04 13:59:48 +01:00
.gitignore Feat: emancipate Consensus from the Cluster component 2018-05-07 07:39:41 +02:00
.travis.yml remove env/secure section from travis yml 2018-06-21 13:02:42 -05:00
allocate.go Maptracker: extract optracker and make improvements 2018-05-28 11:59:26 +02:00
CHANGELOG.md 0.4.0: Changelog 2018-05-30 13:24:22 +02:00
cluster_config_test.go Feat: emancipate Consensus from the Cluster component 2018-05-07 07:39:41 +02:00
cluster_config.go Fix #468: Increase StateSyncInterval to 10 minutes 2018-06-19 19:42:29 -05:00
cluster_test.go StateSync(): some improvements 2018-05-25 09:58:18 +02:00
cluster.go Feat: Enable DHT-based peer discovery and routing for cluster peers 2018-07-24 15:33:41 +02:00
clusterhost.go Fix #346: Enable NAT hole punching for libp2p host 2018-05-27 17:47:46 +02:00
config_test.go Monitor/tests: Allow to run tests using the basic monitor. 2018-05-09 11:39:21 +02:00
connect_graph.go Monitor: address comments 2018-05-09 11:01:52 +02:00
CONTRIBUTING.md Docs: Move to website. 2018-04-27 09:05:11 +02:00
Dockerfile Fix #462: Support DNS multiaddresses for node_multiaddress 2018-06-12 10:09:03 +02:00
Dockerfile-bundle Docker: Run with daemon --upgrade by default. 2018-04-27 07:57:08 +02:00
Dockerfile-test Fix #462: Support DNS multiaddresses for node_multiaddress 2018-06-12 10:09:03 +02:00
ipfscluster_test.go Fix: maptracker race issues 2018-05-28 11:59:26 +02:00
ipfscluster.go Monitor: address comments 2018-05-09 11:01:52 +02:00
LICENSE ipfscluster-server executable 2016-12-21 19:37:25 +01:00
logging.go Fix #240: Add test flags. Remove build tags for logging control. 2018-01-16 09:28:40 +01:00
Makefile Update to latest gx version. Be more verbose when installing. 2018-05-14 14:54:46 +02:00
package.json Feat: Enable DHT-based peer discovery and routing for cluster peers 2018-07-24 15:33:41 +02:00
peer_manager_test.go Feat: Enable DHT-based peer discovery and routing for cluster peers 2018-07-24 15:33:41 +02:00
pnet_test.go Feat: Enable DHT-based peer discovery and routing for cluster peers 2018-07-24 15:33:41 +02:00
README.md Docs: Move to website. 2018-04-27 09:05:11 +02:00
release.sh Make release script more verbose 2018-05-28 12:42:09 +02:00
rpc_api.go Feat: Enable DHT-based peer discovery and routing for cluster peers 2018-07-24 15:33:41 +02:00
util.go Maptracker: extract optracker and make improvements 2018-05-28 11:59:26 +02:00
version.go Release 0.4.0 2018-05-30 13:26:10 +02:00

IPFS Cluster

Made by Main project IRC channel standard-readme compliant GoDoc Go Report Card Build Status Coverage Status

Pinset orchestration for IPFS.

logo

IPFS Cluster allows to allocate, replicate and track Pins across a cluster of IPFS daemons.

It provides:

  • A cluster peer application: ipfs-cluster-service, to be run along with go-ipfs.
  • A client CLI application: ipfs-cluster-ctl, which allows easily interacting with the peer's HTTP API.

Table of Contents

Documentation

Please visit https://cluster.ipfs.io/documentation/ to access user documentation, guides and any other resources, including detailed download and usage instructions.

News & Roadmap

We regularly post project updates to https://cluster.ipfs.io/news/ .

The most up-to-date Roadmap is available at https://cluster.ipfs.io/roadmap/ .

Install

Instructions for different installation methods (including from source) are available at https://cluster.ipfs.io/documentation/download .

Usage

Extensive usage information is provided at https://cluster.ipfs.io/documentation/ , including:

Contribute

PRs accepted. As part of the IPFS project, we have some contribution guidelines.

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

License

MIT © Protocol Labs, Inc.