On Thu, Sep 8, 2011 at 03:12, Joseph Blomstedt <j...@basho.com> wrote: > Given that 1.0 prerelease packages are now available, I wanted to > mention some changes to Riak's clustering capabilities in 1.0. In > particular, there are some subtle semantic differences in the > riak-admin commands. More complete docs will be updated in the near > future, but I hope a quick email suffices for now. > > [nodeB/riak-admin join nodeA] is now strictly one-way. It joins nodeB > to the cluster that nodeA is a member of. This is semantically > different than pre-1.0 Riak in which join essentially joined clusters > together rather than joined a node to a cluster. As part of this > change, the joining node (nodeB in this case) must be a singleton > (1-node) cluster. > > In pre-1.0, leave and remove were essentially the same operation, with > leave just being an alias for 'remove this-node'. This has changed. > Leave and remove are now very different operations. > > [nodeB/riak-admin leave] is the only safe way to have a node leave the > cluster, and it must be executed by the node that you want to remove. > In this case, nodeB will start leaving the cluster, and will not leave > the cluster until after it has handed off all its data. Even if nodeB > is restarted (crashed/shutdown/whatever), it will remain in the leave > state and continue handing off partitions until done. After handoff, > it will leave the cluster, and eventually shutdown. > > [nodeA/riak-admin remove nodeB] immediately removes nodeB from the > cluster, without handing off its data. All replicas held by nodeB are > therefore lost, and will need to be re-generated through read-repair. > Use this command carefully. It's intended for nodes that are > permanently unrecoverable and therefore for which handoff doesn't make > sense. By the final 1.0 release, this command may be renamed > "force-remove" just to make the distinction clear. > > There are now two new commands that provide additional insight into > the cluster. [riak-admin member_status] and [riak-admin ring_status]. > > Underneath, the clustering protocol has been mostly re-written. The > new approach has the following advantages: > 1. It is no longer necessary to wait on [riak-admin ringready] in > between adding/removing nodes from the cluster, and adding/removing is > also much more sound/graceful. Starting up 16 nodes and issuing > [nodeX: riak-admin join node1] for X=1:16 should just work. > > 2. Data is first transferred to new partition owners before handing > over partition ownership. This change fixes numerous bugs, such as > 404s/not_founds during ownership changes. The Ring/Pending columns in > [riak-admin member_status] visualize this at a high-level, and the > full transfer status in [riak-admin ring_status] provide additional > insight. > > 3. All partition ownership decisions are now made by a single node in > the cluster (the claimant). Any node can be the claimant, and the duty > is automatically taken over if the previous claimant is removed from > the cluster. [riak-admin member_status] will list the current > claimant. > > 4. Handoff related to ownership changes can now occur under load; > hinted handoff still only occurs when a vnode is inactive. This change > allows a cluster to scale up/down under load, although this needs to > be further benchmarked and tuned before 1.0. > > To support all of the above, a new limitation has been introduced. > Cluster changes (member addition/removal, ring rebalance, etc) can > only occur when all nodes are up and reachable. [riak-admin > ring_status] will complain when this is not the case. If a node is > down, you must issue [riak-admin down <node>] to mark the node as > down, and the remaining nodes will then proceed to converge as usual. > Once the down node comes back online, it will automatically > re-integrate into the cluster. However, there is nothing preventing > client requests being served by a down node before it re-integrates. > Before issuing [down <node>], make sure to update your load balancers > / connection pools to not include this node. Future releases of Riak > may make offlining a node an automatic operation, but it's a > user-initiated action in 1.0. > > -Joe
Hello! I'm quite happy to see that things related to clustering have been worked on, so "Nice work!". :) My guess is that all this went actually in the Riak-Core repository (I haven't looked over the repository). Thus -- as I'm a user of Riak-Core -- what else notable has changed in Riak-Core. Thanks, Ciprian. _______________________________________________ riak-users mailing list riak-users@lists.basho.com http://lists.basho.com/mailman/listinfo/riak-users_lists.basho.com