Commit Graph

56 Commits

Author SHA1 Message Date
Hector Sanjuan
e0247e4105 README: more improvements to badges 2022-06-16 17:43:30 +02:00
Hector Sanjuan
b705212ac0 Improve badges in README 2022-06-16 17:43:30 +02:00
Hector Sanjuan
755cebbe0d Enable spell checking and fix spelling errors (using US locale) 2022-06-16 17:43:30 +02:00
Hector Sanjuan
6723acd333 Fix badge image link in readme 2022-06-16 17:43:30 +02:00
Hector Sanjuan
d7107791ed Rename links to use the ipfscluster.io domain 2022-06-16 17:43:30 +02:00
Hector Sanjuan
508791b547 Migrate from ipfs/ipfs-cluster to ipfs-cluster/ipfs-cluster
This performs the necessary renamings.
2022-06-16 17:43:30 +02:00
Hector Sanjuan
75cc71420e Update IRC link in repository badges 2021-06-01 14:29:47 +02:00
Hector Sanjuan
5965d4738e Update README: fix links, add ipfs-cluste-follow info
Remove standard-readme badge and mention as we don't make use
of this project much anymore.
2019-12-20 14:12:17 +01:00
Oli Evans
de084fd119
docs: fix download link in readme 2019-03-18 09:42:43 +00:00
Hector Sanjuan
a538556920 Dual-license the codebase.
This removes the sign-off requirement.

License: MIT
Signed-off-by: Hector Sanjuan <hector@protocol.ai>
2019-03-01 20:12:19 +00:00
Hector Sanjuan
81ab0d6c43 Move to codecov.io
License: MIT
Signed-off-by: Hector Sanjuan <hector@protocol.ai>
2019-02-20 14:11:58 +00:00
roignpar
743ff9dcd8
update build status link in README
License: MIT
Signed-off-by: Robert Ignat <robert.ignat91@gmail.com>
2019-02-07 13:42:10 +02:00
Michelle Hertzfeld
89cd4b83bf
Copyedit in README
There was a slight grammar mistake. Now it is gone, and this sentence matches the one on our website.

I submitted this PR yesterday, but it wasn't signed properly. I'm opening a new PR to test where the signature should go in the GH web interface (clearly did not have it in the right place last time).

License: MIT
Signed-off-by: Michelle Hertzfeld mhertzfeld@gmail.com
2018-09-26 07:54:51 +10:00
Hector Sanjuan
173dd14f4b Readme: add link to user registry form
License: MIT
Signed-off-by: Hector Sanjuan <code@hector.link>
2018-07-24 17:17:45 +02:00
Hector Sanjuan
b08b3aba64 Docs: Move to website.
Updated READMEs, removed docs and point everything to website documentation.

License: MIT
Signed-off-by: Hector Sanjuan <code@hector.link>
2018-04-27 09:05:11 +02:00
Hector Sanjuan
72ee994b8f
Readme: specify that we want Go1.9+ 2018-03-21 09:33:12 +01:00
Hector Sanjuan
d6800045b5 Dockerfile: Remove ipfs from container
The main container will now run only ipfs-cluster-service.

A new ipfs-cluster-bundle container is built by Dockerfile-bundle
which will provide ipfs-cluster+ipfs.

Fixes #197

License: MIT
Signed-off-by: Hector Sanjuan <code@hector.link>
2017-11-29 10:34:03 +01:00
Hector Sanjuan
398865f381 Issue #192: Fix typos and address feedback
License: MIT
Signed-off-by: Hector Sanjuan <hector@protocol.ai>
2017-11-14 19:26:49 +01:00
Hector Sanjuan
2c3085586c Documentation: bring in line to 0.3.0
Review documentation to be in line with latest updates to Raft and
any other feature introduced since 0.12.0.

License: MIT
Signed-off-by: Hector Sanjuan <hector@protocol.ai>
2017-11-14 19:26:49 +01:00
Leo Arias
66e9747733
Add the instructions to install the snap
I have just pushed an initial version of ipfs-cluster to the snapcraft store:
https://discuss.ipfs.io/t/start-testing-the-ipfs-cluster-snap/1422
2017-11-08 18:46:07 -06:00
Hector Sanjuan
8f06baa1bf Issue #162: Rework configuration format
The following commit reimplements ipfs-cluster configuration under
the following premises:

  * Each component is initialized with a configuration object
  defined by its module
  * Each component decides how the JSON representation of its
  configuration looks like
  * Each component parses and validates its own configuration
  * Each component exposes its own defaults
  * Component configurations are make the sections of a
  central JSON configuration file (which replaces the current
  JSON format)
  * Component configurations implement a common interface
  (config.ComponentConfig) with a set of common operations
  * The central configuration file is managed by a
  config.ConfigManager which:
    * Registers ComponentConfigs
    * Assigns the correspondent sections from the JSON file to each
    component and delegates the parsing
    * Delegates the JSON generation for each section
    * Can be notified when the configuration is updated and must be
    saved to disk

The new service.json would then look as follows:

```json
{
  "cluster": {
    "id": "QmTVW8NoRxC5wBhV7WtAYtRn7itipEESfozWN5KmXUQnk2",
    "private_key": "<...>",
    "secret": "00224102ae6aaf94f2606abf69a0e278251ecc1d64815b617ff19d6d2841f786",
    "peers": [],
    "bootstrap": [],
    "leave_on_shutdown": false,
    "listen_multiaddress": "/ip4/0.0.0.0/tcp/9096",
    "state_sync_interval": "1m0s",
    "ipfs_sync_interval": "2m10s",
    "replication_factor": -1,
    "monitor_ping_interval": "15s"
  },
  "consensus": {
    "raft": {
      "heartbeat_timeout": "1s",
      "election_timeout": "1s",
      "commit_timeout": "50ms",
      "max_append_entries": 64,
      "trailing_logs": 10240,
      "snapshot_interval": "2m0s",
      "snapshot_threshold": 8192,
      "leader_lease_timeout": "500ms"
    }
  },
  "api": {
    "restapi": {
      "listen_multiaddress": "/ip4/127.0.0.1/tcp/9094",
      "read_timeout": "30s",
      "read_header_timeout": "5s",
      "write_timeout": "1m0s",
      "idle_timeout": "2m0s"
    }
  },
  "ipfs_connector": {
    "ipfshttp": {
      "proxy_listen_multiaddress": "/ip4/127.0.0.1/tcp/9095",
      "node_multiaddress": "/ip4/127.0.0.1/tcp/5001",
      "connect_swarms_delay": "7s",
      "proxy_read_timeout": "10m0s",
      "proxy_read_header_timeout": "5s",
      "proxy_write_timeout": "10m0s",
      "proxy_idle_timeout": "1m0s"
    }
  },
  "monitor": {
    "monbasic": {
      "check_interval": "15s"
    }
  },
  "informer": {
    "disk": {
      "metric_ttl": "30s",
      "metric_type": "freespace"
    },
    "numpin": {
      "metric_ttl": "10s"
    }
  }
}
```

This new format aims to be easily extensible per component. As such,
it already surfaces quite a few new options which were hardcoded
before.

Additionally, since Go API have changed, some redundant methods have been
removed and small refactoring has happened to take advantage of the new
way.

License: MIT
Signed-off-by: Hector Sanjuan <hector@protocol.ai>
2017-10-18 00:00:12 +02:00
dgrisham
bde7da7619 Updated links to cluster secret info in docs 2017-09-07 17:14:14 -06:00
Hector Sanjuan
a15038e193 Badges fixes (#135)
* Point IRC badge to our own channel
* Point to protocol.ai
2017-07-26 17:33:04 +02:00
dgrisham
90d1e97a8e Cluster secret: Docs, error handling, internal key mgmt. 2017-07-13 11:17:30 -06:00
Hector Sanjuan
551c2245ca Fix link to guide
License: MIT
Signed-off-by: Hector Sanjuan <hector@protocol.ai>
2017-04-27 01:32:08 +02:00
Hector Sanjuan
ef4132f572 Fix #84: A guide to running ipfs cluster
This should fix what I meant in #84

License: MIT
Signed-off-by: Hector Sanjuan <hector@protocol.ai>
2017-04-22 13:47:08 +02:00
Hector Sanjuan
bb82c27b25 Fix #87: Implement ipfs-cluster-ctl pin ls <cid>
I have updated API endpoints to be /allocations rather than /pinlinst

It's more self-explanatory.

License: MIT
Signed-off-by: Hector Sanjuan <hector@protocol.ai>
2017-04-06 21:12:16 +02:00
Hector Sanjuan
d5fd902c13 Add Usage gif 2017-03-28 19:36:51 +02:00
Hector Sanjuan
c01ff6fdb5 Add docker and dist.ipfs.io install methods to README
License: MIT
Signed-off-by: Hector Sanjuan <hector@protocol.ai>
2017-03-10 13:21:38 +01:00
Hector Sanjuan
36c12fc297 Put tools README into dist/ folder
License: MIT
Signed-off-by: Hector Sanjuan <hector@protocol.ai>
2017-03-03 17:52:43 +01:00
Hector Sanjuan
85651ae8cb Issue #55: Move tooling information to it's own README in the subprojects.
Add LICENSE there too, so that the build tool for distributions includes
it in the tar files.

License: MIT
Signed-off-by: Hector Sanjuan <hector@protocol.ai>
2017-03-03 16:13:09 +01:00
Hector Sanjuan
31e32b9c8e Update README with latest feature and Captain's log
License: MIT
Signed-off-by: Hector Sanjuan <hector@protocol.ai>
2017-03-02 15:12:06 +01:00
Hector Sanjuan
c18b4beea3 Try to go more to the point in the readme. Move quickstart guide to docs/
License: MIT
Signed-off-by: Hector Sanjuan <hector@protocol.ai>
2017-02-27 10:30:09 +01:00
Hector Sanjuan
8e45ce64c2 Documentation: captain log, readme and golint fixes
License: MIT
Signed-off-by: Hector Sanjuan <hector@protocol.ai>
2017-02-15 15:46:51 +01:00
Hector Sanjuan
34fdc329fc Fix #24: Auto-join and auto-leave operations for Cluster
This is the third implementation attempt. This time, rather than
broadcasting PeerAdd/Join requests to the whole cluster, we use the
consensus log to broadcast new peers joining.

This makes it easier to recover from errors and to know who exactly
is member of a cluster and who is not. The consensus is, after all,
meant to agree on things, and the list of cluster peers is something
everyone has to agree on.

Raft itself uses a special log operation to maintain the peer set.

The tests are almost unchanged from the previous attempts so it should
be the same, except it doesn't seem possible to bootstrap a bunch of nodes
at the same time using different bootstrap nodes. It works when using
the same. I'm not sure this worked before either, but the code is
simpler than recursively contacting peers, and scales better for
larger clusters.

Nodes have to be careful about joining clusters while keeping the state
from a different cluster (disjoint logs). This may cause problems with
Raft.

License: MIT
Signed-off-by: Hector Sanjuan <hector@protocol.ai>
2017-02-07 18:46:09 +01:00
Hector Sanjuan
6c18c02106 Issue #10: peers/add and peers/rm feature + tests
This commit adds PeerAdd() and PeerRemove() endpoints, CLI support,
tests. Peer management is a delicate issue because of how the consensus
works underneath and the places that need to track such peers.

When adding a peer the procedure is as follows:

* Try to open a connection to the new peer and abort if not reachable
* Broadcast a PeerManagerAddPeer operation which tells all cluster members
to add the new Peer. The Raft leader will add it to Raft's peerset and
the multiaddress will be saved in the ClusterPeers configuration key.
* If the above fails because some cluster node is not responding,
broadcast a PeerRemove() and try to undo any damage.
* If the broadcast succeeds, send our ClusterPeers to the new Peer along with
the local multiaddress we are using in the connection opened in the
first step (that is the multiaddress through which the other peer can reach us)
* The new peer updates its configuration with the new list and joins
the consensus

License: MIT
Signed-off-by: Hector Sanjuan <hector@protocol.ai>
2017-02-02 13:51:49 +01:00
Hector Sanjuan
77b8830419 Rename captain's log to CAPTAIN.LOG.md
License: MIT
Signed-off-by: Hector Sanjuan <hector@protocol.ai>
2017-01-27 15:33:45 +01:00
Hector Sanjuan
58a8a9f9ce Update catchline
License: MIT
Signed-off-by: Hector Sanjuan <hector@protocol.ai>
2017-01-27 13:35:28 +01:00
Hector Sanjuan
43dea68edb Update README, Captain log, fix logging.
Addresses some stuff in #19.

License: MIT
Signed-off-by: Hector Sanjuan <hector@protocol.ai>
2017-01-27 13:30:15 +01:00
Hector Sanjuan
4c1e0068f5 Fix #15: Peers() provides lots of information now
I have renamed "members" to "peers".

Added IPFS daemon ID and addresses to the ID object and
have Peers() return the collection of ID() objects from the cluster.

License: MIT
Signed-off-by: Hector Sanjuan <hector@protocol.ai>
2017-01-26 20:24:00 +01:00
Hector Sanjuan
af177bfde6 Address formatting, mispellings, lint errors from goreportcard
License: MIT
Signed-off-by: Hector Sanjuan <hector@protocol.ai>
2017-01-24 12:39:08 +01:00
Hector Sanjuan
24c8253c9e Fix config example
License: MIT
Signed-off-by: Hector Sanjuan <hector@protocol.ai>
2017-01-24 00:46:21 +01:00
Hector Sanjuan
afa8a5c33f Improve startup messages and information
License: MIT
Signed-off-by: Hector Sanjuan <hector@protocol.ai>
2017-01-23 23:58:04 +01:00
Hector Sanjuan
d987073201 Improve docs for the new configuration formats
License: MIT
Signed-off-by: Hector Sanjuan <hector@protocol.ai>
2017-01-23 20:56:35 +01:00
Hector Sanjuan
365c549d7c Fix #5: Rename apps to ipfs-cluster-service and ipfs-cluster-ctl
License: MIT
Signed-off-by: Hector Sanjuan <hector@protocol.ai>
2017-01-23 13:34:22 +01:00
Hector Sanjuan
2983544561 Fix #27: Add captain's log and ROADMAP
License: MIT
Signed-off-by: Hector Sanjuan <hector@protocol.ai>
2017-01-23 13:16:20 +01:00
Hector Sanjuan
b5bb6e9cc3 Readme: Fix "pin rm" example
License: MIT
Signed-off-by: Hector Sanjuan <hector@protocol.ai>
2017-01-17 19:29:52 +01:00
Hector Sanjuan
19c75fdbfe Expand ipfs-cluster-server usage section
License: MIT
Signed-off-by: Hector Sanjuan <hector@protocol.ai>
2017-01-15 16:18:22 +01:00
Hector Sanjuan
95e31ace87 Address small typos pointed out by @mateon1
License: MIT
Signed-off-by: Hector Sanjuan <hector@protocol.ai>
2017-01-15 16:06:47 +01:00
Hector Sanjuan
b92b598db1 ipfscluster tool. A CLI app wrapping the Cluster API.
License: MIT
Signed-off-by: Hector Sanjuan <hector@protocol.ai>
2016-12-22 17:14:15 +01:00