From a7f6861d1df89007377175860abf9ff5d0ca6043 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bjo=CC=88rn=20Antonsson?= Date: Thu, 22 Aug 2013 12:43:13 +0200 Subject: [PATCH] =doc #3539 Update the cluster spec * The cluster spec has been rearranged into two sections describing the current cluster and future enhancements/additions. * The state diagram has been replaced with a new one describing the current cluster implementation. * A number of small additons and changes to the text. --- akka-docs/rst/common/cluster.rst | 275 ++++---- akka-docs/rst/images/member-states.png | Bin 39317 -> 29571 bytes akka-docs/rst/images/member-states.svg | 908 +++++++++++++++++++++++++ 3 files changed, 1049 insertions(+), 134 deletions(-) create mode 100644 akka-docs/rst/images/member-states.svg diff --git a/akka-docs/rst/common/cluster.rst b/akka-docs/rst/common/cluster.rst index a311a19899..d691990d71 100644 --- a/akka-docs/rst/common/cluster.rst +++ b/akka-docs/rst/common/cluster.rst @@ -5,71 +5,57 @@ Cluster Specification ###################### -.. note:: This document describes the design concepts of the clustering. Not everything described here is implemented yet, - and such parts have been marked with footnote :ref:`[*] `. Actor partitioning and stateful actor replication have not been - implemented yet. +.. note:: This document describes the design concepts of the clustering. + It is divided into two parts, where the first part describes what is + currently implemented and the second part describes what is planned as + future enhancements/additions. References to unimplemented parts have + been marked with the footnote :ref:`[*] ` + + +The Current Cluster +******************* + Intro ===== -Akka Cluster provides a fault-tolerant, elastic, decentralized peer-to-peer -cluster with no single point of failure (SPOF) or single point of bottleneck -(SPOB). It implements a Dynamo-style system using gossip protocols, automatic -failure detection, automatic partitioning :ref:`[*] `, handoff :ref:`[*] `, and cluster -rebalancing :ref:`[*] `. But with some differences due to the fact that it is not just -managing passive data, but actors - active, sometimes stateful, components that -also have requirements on message ordering, the number of active instances in -the cluster, etc. +Akka Cluster provides a fault-tolerant decentralized peer-to-peer based cluster +`membership`_ service with no single point of failure or single point of bottleneck. +It does this using `gossip`_ protocols and an automatic `failure detector`_. Terms ===== -These terms are used throughout the documentation. - **node** A logical member of a cluster. There could be multiple nodes on a physical - machine. Defined by a `hostname:port` tuple. + machine. Defined by a `hostname:port:uid` tuple. **cluster** - A set of nodes. Contains distributed Akka applications. - -**partition** :ref:`[*] ` - An actor or subtree of actors in the Akka application that is distributed - within the cluster. - -**partition point** :ref:`[*] ` - The actor at the head of a partition. The point around which a partition is - formed. - -**partition path** :ref:`[*] ` - Also referred to as the actor address. Has the format `actor1/actor2/actor3` - -**instance count** :ref:`[*] ` - The number of instances of a partition in the cluster. Also referred to as the - ``N-value`` of the partition. - -**instance node** :ref:`[*] ` - A node that an actor instance is assigned to. - -**partition table** :ref:`[*] ` - A mapping from partition path to a set of instance nodes (where the nodes are - referred to by the ordinal position given the nodes in sorted order). + A set of nodes joined together through the `membership`_ service. **leader** A single node in the cluster that acts as the leader. Managing cluster convergence, - partitions, fail-over, rebalancing etc. + partitions :ref:`[*] `, fail-over :ref:`[*] `, rebalancing :ref:`[*] ` + etc. Membership ========== A cluster is made up of a set of member nodes. The identifier for each node is a -``hostname:port`` pair. An Akka application is distributed over a cluster with -each node hosting some part of the application. Cluster membership and -partitioning :ref:`[*] ` of the application are decoupled. A node could be a member of a +``hostname:port:uid`` tuple. An Akka application can be distributed over a cluster with +each node hosting some part of the application. Cluster membership and partitioning +:ref:`[*] ` of the application are decoupled. A node could be a member of a cluster without hosting any actors. +The node identifier internally also contains a UID that uniquely identifies this +actor system instance at that ``hostname:port``. Akka uses the UID to be able to +reliably trigger remote death watch. This means that the same actor system can never +join a cluster again once it's been removed from that cluster. To re-join an actor +system with the same ``hostname:port`` to a cluster you have to stop the actor system +and start a new one with the same ``hotname:port`` which will then receive a different +UID. Gossip ------ @@ -89,40 +75,34 @@ by issuing a ``Join`` command to one of the nodes in the cluster to join. Vector Clocks ^^^^^^^^^^^^^ -`Vector clocks`_ are an algorithm for generating a partial ordering of events in -a distributed system and detecting causality violations. +`Vector clocks`_ are a type of data structure and algorithm for generating a partial +ordering of events in a distributed system and detecting causality violations. We use vector clocks to reconcile and merge differences in cluster state during gossiping. A vector clock is a set of (node, counter) pairs. Each update to the cluster state has an accompanying update to the vector clock. -One problem with vector clocks is that their history can over time be very long, -which will both make comparisons take longer time as well as take up unnecessary -memory. To solve that problem we do pruning of the vector clocks according to -the `pruning algorithm`_ in Riak. - .. _Vector Clocks: http://en.wikipedia.org/wiki/Vector_clock -.. _pruning algorithm: http://wiki.basho.com/Vector-Clocks.html#Vector-Clock-Pruning Gossip Convergence ^^^^^^^^^^^^^^^^^^ -Information about the cluster converges at certain points of time. This is when -all nodes have seen the same cluster state. Convergence is recognised by passing -a map from node to current state version during gossip. This information is -referred to as the gossip overview. When all versions in the overview are equal -there is convergence. Gossip convergence cannot occur while any nodes are -unreachable, either the nodes become reachable again, or the nodes need to be -moved into the ``down`` or ``removed`` states (see section on `Member states`_ -below). +Information about the cluster converges locally at a node at certain points in time. +This is when a node can prove that the cluster state he is observing has been observed +by all other nodes in the cluster. Convergence is implemented by passing a map from +node to current state version during gossip. This information is referred to as the +gossip overview. When all versions in the overview are equal there is convergence. +Gossip convergence cannot occur while any nodes are ``unreachable``. The nodes need +to be moved to the ``down`` or ``removed`` states (see the `Membership Lifecycle`_ +section below). Failure Detector ^^^^^^^^^^^^^^^^ The failure detector is responsible for trying to detect if a node is -unreachable from the rest of the cluster. For this we are using an +``unreachable`` from the rest of the cluster. For this we are using an implementation of `The Phi Accrual Failure Detector`_ by Hayashibara et al. An accrual failure detector decouple monitoring and interpretation. That makes @@ -143,6 +123,14 @@ default ``threshold`` is 8 and is appropriate for most situations. However in cloud environments, such as Amazon EC2, the value could be increased to 12 in order to account for network issues that sometimes occur on such platforms. +In a cluster each node is monitored by a few (default maximum 5) other nodes, and when +any of these detects the node as ``unreachable`` that information will spread to +the rest of the cluster through the gossip. In other words, only one node needs to +mark a node ``unreachable`` to have the rest of the cluster mark that node ``unreachable``. +Right now there is no way for a node to come back from ``unreachable``. This is planned +for the next release of Akka. It also means that the ``unreachable`` node needs to be moved +to the ``down`` or ``removed`` states (see the `Membership Lifecycle`_ section below). + .. _The Phi Accrual Failure Detector: http://ddg.jaist.ac.jp/pub/HDY+04.pdf @@ -153,32 +141,25 @@ After gossip convergence a ``leader`` for the cluster can be determined. There i ``leader`` election process, the ``leader`` can always be recognised deterministically by any node whenever there is gossip convergence. The ``leader`` is simply the first node in sorted order that is able to take the leadership role, where the preferred -member states for a ``leader`` are ``up`` and ``leaving`` (see below for more -information about member states). +member states for a ``leader`` are ``up`` and ``leaving`` (see the `Membership Lifecycle`_ +section below for more information about member states). The role of the ``leader`` is to shift members in and out of the cluster, changing -``joining`` members to the ``up`` state or ``exiting`` members to the -``removed`` state, and to schedule rebalancing across the cluster. Currently -``leader`` actions are only triggered by receiving a new cluster state with gossip -convergence but it may also be possible for the user to explicitly rebalance the -cluster by specifying migrations :ref:`[*] `, or to rebalance :ref:`[*] ` the cluster automatically -based on metrics from member nodes. Metrics may be spread using the gossip -protocol or possibly more efficiently using a *random chord* method, where the -``leader`` contacts several random nodes around the cluster ring and each contacted -node gathers information from their immediate neighbours, giving a random -sampling of load information. +``joining`` members to the ``up`` state or ``exiting`` members to the ``removed`` +state. Currently ``leader`` actions are only triggered by receiving a new cluster +state with gossip convergence. The ``leader`` also has the power, if configured so, to "auto-down" a node that -according to the Failure Detector is considered unreachable. This means setting -the unreachable node status to ``down`` automatically. +according to the `Failure Detector`_ is considered ``unreachable``. This means setting +the ``unreachable`` node status to ``down`` automatically. Seed Nodes ^^^^^^^^^^ -The seed nodes are configured contact points for inital join of the cluster. -When a new node is started started it sends a message to all seed nodes and -then sends join command to the one that answers first. +The seed nodes are configured contact points for initial join of the cluster. +When a new node is started it sends a message to all seed nodes and then sends +a join command to the seed node that answers first. It is possible to not use seed nodes and instead join any node in the cluster manually. @@ -223,67 +204,33 @@ the gossip can use the gossip version to determine whether: If the recipient and the gossip have the same version then the gossip state is not sent or requested. -The main structures used in gossiping are the gossip overview and the gossip -state:: - - GossipState { - version: VectorClock, - members: SortedSet[Member], - unreachable: Set[Node], - seen: Map[Node, VectorClock], - partitions: Tree[PartitionPath, Node], - pending: Set[PartitionChange], - meta: Option[Map[String, Array[Byte]]] - } - -Some of the other structures used are:: - - Node = InetSocketAddress - - Member { - node: Node, - status: MemberStatus - } - - MemberStatus = Joining | Up | Leaving | Exiting | Down | Removed - - PartitionChange { - from: Node, - to: Node, - path: PartitionPath, - status: PartitionChangeStatus - } - - PartitionChangeStatus = Awaiting | Complete - Membership Lifecycle -------------------- A node begins in the ``joining`` state. Once all nodes have seen that the new node is joining (through gossip convergence) the ``leader`` will set the member -state to ``up`` and can start assigning partitions :ref:`[*] ` to the new node. +state to ``up``. If a node is leaving the cluster in a safe, expected manner then it switches to -the ``leaving`` state. The ``leader`` will reassign partitions :ref:`[*] ` across the cluster -(it is possible for a leaving node to itself be the ``leader``). When all partition -handoff :ref:`[*] ` has completed then the node will change to the ``exiting`` state. Once -all nodes have seen the exiting state (convergence) the ``leader`` will remove the -node from the cluster, marking it as ``removed``. +the ``leaving`` state. Once the leader sees the convergence on the node in the +``leaving`` state, the leader will then move it to ``exiting``. Once all nodes +have seen the exiting state (convergence) the ``leader`` will remove the node +from the cluster, marking it as ``removed``. -If a node is unreachable then gossip convergence is not possible and therefore +If a node is ``unreachable`` then gossip convergence is not possible and therefore any ``leader`` actions are also not possible (for instance, allowing a node to -become a part of the cluster, or changing actor distribution). To be able to -move forward the state of the unreachable nodes must be changed. If the -unreachable node is experiencing only transient difficulties then it can be -explicitly marked as ``down`` using the ``down`` user action. This node must be -restarted and go through the joining process again. If the unreachable node will be -permanently down then it can be removed from the cluster directly by shutting the actor -system down or killing it through an external ``SIGKILL`` signal, invocation of -``System.exit(status)`` or similar. The cluster can, through the leader, also *auto-down* a node. +become a part of the cluster). To be able to move forward the state of the +``unreachable`` nodes must be changed. Currently the only way forward is to mark the +node as ``down``. If the node is to join the cluster again the actor system must be +restarted and go through the joining process again. The cluster can, through the +leader, also *auto-down* a node. -This means that nodes can join and leave the cluster at any point in time, i.e. -provide cluster elasticity. +.. note:: If you have *auto-down* enabled and the failure detector triggers, you + can over time end up with a lot of single node clusters if you don't put + measures in place to shut down nodes that have become ``unreachable``. This + follows from the fact that the ``unreachable`` node will likely see the rest of + the cluster as ``unreachable``, become its own leader and form its own cluster. State Diagram for the Member States @@ -305,7 +252,7 @@ Member States states during graceful removal - **down** - marked as down/offline/unreachable + marked as down (no longer part of cluster decisions) - **removed** tombstone state (no longer a member) @@ -322,7 +269,7 @@ User Actions tell a node to leave the cluster gracefully - **down** - mark a node as temporarily down + mark a node as down Leader Actions @@ -336,14 +283,56 @@ The ``leader`` has the following duties: - exiting -> removed -- partition distribution :ref:`[*] ` - - scheduling handoffs (pending changes) +Failure Detection and Unreachability +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - - setting the partition table (partition path -> base node) +- fd* + the failure detector of one of the monitoring nodes has triggered + causing the monitored node to be marked as unreachable - - Automatic rebalancing based on runtime metrics in the system (such as CPU, - RAM, Garbage Collection, mailbox depth etc.) +- unreachable* + unreachable is not a real member state but more of a flag in addition + to the state signaling that the cluster is unable to talk to this node + + +Future Cluster Enhancements and Additions +***************************************** + + +Goal +==== + +In addition to membership also provide automatic partitioning :ref:`[*] `, +handoff :ref:`[*] `, and cluster rebalancing :ref:`[*] ` of actors. + + +Additional Terms +================ + +These additional terms are used in this section. + +**partition** :ref:`[*] ` + An actor or subtree of actors in the Akka application that is distributed + within the cluster. + +**partition point** :ref:`[*] ` + The actor at the head of a partition. The point around which a partition is + formed. + +**partition path** :ref:`[*] ` + Also referred to as the actor address. Has the format `actor1/actor2/actor3` + +**instance count** :ref:`[*] ` + The number of instances of a partition in the cluster. Also referred to as the + ``N-value`` of the partition. + +**instance node** :ref:`[*] ` + A node that an actor instance is assigned to. + +**partition table** :ref:`[*] ` + A mapping from partition path to a set of instance nodes (where the nodes are + referred to by the ordinal position given the nodes in sorted order). Partitioning :ref:`[*] ` @@ -412,6 +401,25 @@ of pending changes, and when each change is complete the ``leader`` will update partition table. +Additional Leader Responsibilities +---------------------------------- + +After moving a member from joining to up, the leader can start assigning partitions +:ref:`[*] ` to the new node, and when a node is ``leaving`` the ``leader`` will +reassign partitions :ref:`[*] ` across the cluster (it is possible for a leaving +node to itself be the ``leader``). When all partition handoff :ref:`[*] ` has +completed then the node will change to the ``exiting`` state. + +On convergence the leader can schedule rebalancing across the cluster, +but it may also be possible for the user to explicitly rebalance the +cluster by specifying migrations :ref:`[*] `, or to rebalance :ref:`[*] ` +the cluster automatically based on metrics from member nodes. Metrics may be spread +using the gossip protocol or possibly more efficiently using a *random chord* method, +where the ``leader`` contacts several random nodes around the cluster ring and each +contacted node gathers information from their immediate neighbours, giving a random +sampling of load information. + + Handoff ------- @@ -632,7 +640,6 @@ storage on top of the Akka Cluster as described in this document are: .. _Read Repair: http://wiki.apache.org/cassandra/ReadRepair - .. _niy: [*] Not Implemented Yet @@ -642,4 +649,4 @@ storage on top of the Akka Cluster as described in this document are: * Actor handoff * Actor rebalancing * Stateful actor replication - +* Node becoming ``reachable`` after it has been marked as ``unreachable`` diff --git a/akka-docs/rst/images/member-states.png b/akka-docs/rst/images/member-states.png index f11aee7dbfc53203beb52a8fa8cd0ef195ee8661..7dee278dfe5daa03d2553697021b683dc3cdeb84 100644 GIT binary patch literal 29571 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 literal 39317 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 F2>=n%l<)um diff --git a/akka-docs/rst/images/member-states.svg b/akka-docs/rst/images/member-states.svg new file mode 100644 index 0000000000..f009dc1815 --- /dev/null +++ b/akka-docs/rst/images/member-states.svg @@ -0,0 +1,908 @@ + + + +image/svg+xmlunreachable* +joining +up +leaving +exiting +down +(leader action) +(fd*) +(fd*) +(fd*) +(fd*) +leave +(leader action) +(leader action) +join +removed + \ No newline at end of file