summaryrefslogtreecommitdiffstats
path: root/accepted/GlusterD2.md
diff options
context:
space:
mode:
authorAtin Mukherjee <amukherj@redhat.com>2016-01-14 13:08:52 +0530
committerKaushal M <kaushal@redhat.com>2016-01-27 21:54:01 -0800
commit063b5556d7271bfe06ec80b6a1957fbd5cacec51 (patch)
treea370786039866e5442c00fdb0e4b779cc170cf4f /accepted/GlusterD2.md
parent9968356e8e0b04fe87213e5ed2795d6afe65bff1 (diff)
Add GD2 Design
Change-Id: I8ba55fd9a0f904d3bc57ac398babc7663036c62c Signed-off-by: Atin Mukherjee <amukherj@redhat.com> Reviewed-on: http://review.gluster.org/13237 Reviewed-by: Prashanth Pai <ppai@redhat.com> Tested-by: Prashanth Pai <ppai@redhat.com>
Diffstat (limited to 'accepted/GlusterD2.md')
-rw-r--r--accepted/GlusterD2.md68
1 files changed, 68 insertions, 0 deletions
diff --git a/accepted/GlusterD2.md b/accepted/GlusterD2.md
new file mode 100644
index 0000000..a807c51
--- /dev/null
+++ b/accepted/GlusterD2.md
@@ -0,0 +1,68 @@
+## GlusterD 2.0
+
+### Goal
+Thousand-node scalability for glusterd
+
+### Summary
+This "feature" is really a set of infrastructure changes that will enable glusterd to manage a thousand servers gracefully.
+
+### Owners
+
+Kaushal M <kaushal@redhat.com>
+
+Jeff Darcy <jdarcy@redhat.com>
+
+Atin Mukherjee <amukherj@redhat.com>
+
+### Current Status
+Feature accepted and under development
+
+### Detailed Description
+There are three major areas of change included in this proposal.
+
+* Replace the current order-n-squared heartbeat/membership protocol with a much smaller "monitor cluster" based on Paxos or [https://ramcloud.stanford.edu/wiki/download/attachments/11370504/raft.pdf Raft], to which I/O servers check in.
+
+* Use the monitor cluster to designate specific functions or roles - e.g. self-heal, rebalance, leadership in an NSR subvolume - to I/O servers in a coordinated and globally optimal fashion.
+
+* Replace the current system of replicating configuration data on all servers (providing practically no guarantee of consistency if one is absent during a configuration change) with storage of configuration data in the monitor cluster.
+
+### Benefits to GlusterFS
+Scaling of our management plane to thousands of nodes to support new use cases like cloud based deployments
+
+### Scope
+
+### Nature of proposed change
+Functionality very similar to what we need in the monitor cluster already exists in some of the Raft implementations, notably [https://github.com/coreos/etcd etcd]. Such a component could provide the services described above to a modified glusterd running on each server. The changes to glusterd would mostly consist of removing the current heartbeat and config-storage code, replacing it with calls into (and callbacks from) the monitor cluster.
+
+### Implications on manageability
+Enabling/starting monitor daemons on those few nodes that have them must be done separately from starting glusterd. Since the changes mostly are to how each glusterd interacts with others and with its own local storage back end, interactions with the CLI or with glusterfsd need not change.
+
+### Implications on presentation layer
+N/A
+
+### Implications on persistence layer
+N/A
+
+### Implications on 'GlusterFS' backend
+N/A
+
+### Modification to GlusterFS metadata
+All GlusterD's configuration metadata will be maintained and managed by etcd
+
+### Implications on 'glusterd'
+Drastic, See section above
+
+### How to Test
+A new set of tests for the monitor-cluster functionality will need to be developed, perhaps derived from those for the external project if we adopt one. Most tests related to our multi-node testing facilities (cluster.rc) will also need to change. Tests which merely invoke the CLI should require little if any change.
+
+### User Experience
+Minimal change.
+
+### Dependencies
+etcd
+
+### Documentation
+TBD.
+
+### Status
+Under active development