Reip(ing) riak node created two copies in the cluster

Jon Meredith jmeredith at basho.com
Wed May 2 12:12:51 EDT 2012


Hi Nitish, for this to work you'll have to stop all the nodes at the same
time, clear the ring on all nodes, start up all nodes, then rejoin

If you clear the rings one node at a time, when you rejoin the nodes the
ring with the old and new style names will be gossipped back to it and
you'll still have both names.

I didn't realize you had a large amount of data - originally you
said "Currently, we are hosting limited amount of data", but 200mil docs
per node seems like a fair amount.  Rebuilding that size cluster may take a
long time.

Your options as I see them are
  1) If you have backups of the ring files, you could revert the node name
changes and get the cluster stable again on riak at IP.  The ring files have a
timestamp associated with them, but we only keep a few of the last ring
files, so if enough gossip has happened then the pre-rename rings will have
been destroyed.  You will have to stop all nodes, put the ring files back
as they were before the change and fix the names in vm.args and then
restart the nodes.

  2) you can continue on the rebuild plan.  stop all nodes, set the new
names in vm.args, start the nodes again and rebuild the cluster, adding as
many nodes as you can at once so they rebalance at the same time.  When new
nodes are added the claimant node works out ownership changes and will
start a sequence of transfers.  If new nodes are added once a sequence is
under way the claimant will wait for that to complete, then check if there
are any new nodes and repeat until all nodes are assigned.  If you add all
the nodes at once you will do less transfers over all.


If the cluster cannot be stopped, there are other things we might be able
to do, but they're a bit more complex.  What are your uptime requirements?

Jon



On Wed, May 2, 2012 at 9:57 AM, Nitish Sharma <sharmanitishdutt at gmail.com>wrote:

> Hi Jon,
> Thanks for your input. I've already started working on that lines.
> I stopped all the nodes, moved ring directory from one node, brought that
> one up, and issued join command to one other node (after moving the ring
> directory) - node2. While they were busy re-distributing the partitions, I
> started another node (node3) and issued join command (before risk_kv was
> running, since it takes some time to load existing data).
> But after this, data handoffs are occurring only between node1 and node2.
> "member_status" says that node 3 owns 0% of the ring and 0% are pending.
> We have a lot of data - each node serves around 200 million documents.
> Riak cluster is running 1.1.2.
> Any suggestions?
>
> Cheers
> Nitish
> On May 2, 2012, at 5:31 PM, Jon Meredith wrote:
>
> Hi Nitish,
>
> If you rebuild the cluster with the same ring size, the data will
> eventually get back to the right place.  While the rebuild is taking place
> you may have notfounds for gets until the data has been handed off to the
> newly assigned owner (as it will be secondary handoff, not primary
> ownership handoff to get teh data back).  If you don't have a lot of data
> stored in the cluster it shouldn't take too long.
>
> The process would be to stop all nodes, move the files out of the ring
> directory to a safe place, start all nodes and rejoin.  If you're using
> 1.1.x and you have capacity in your hardware you may want to increase
> handoff_concurrency to something like 4 to permit more transfers to happen
> across the cluster.
>
>
> Jon.
>
>
>
> On Wed, May 2, 2012 at 9:05 AM, Nitish Sharma <sharmanitishdutt at gmail.com>wrote:
>
>> Hi,
>> We have a 12-node Riak cluster. Until now we were naming every new node
>> as riak@<ip_address>. We then decided to rename the all the nodes to
>> riak@<hostname>, which makes troubleshooting easier.
>> After issuing reip command to two nodes, we noticed in the "status" that
>> those 2 nodes were now appearing in the cluster with the old name as well
>> as the new name. Other nodes were trying to handoff partitions to the "new"
>> nodes, but apparently they were not able to. After this the whole cluster
>> went down and completely stopped responding to any read/write requests.
>> member_status displayed old Riak name in "legacy" mode. Since this is our
>> production cluster, we are desperately looking for some quick remedies.
>> Issuing "force-remove" to the old names, restarting all the nodes, changing
>> the riak names back to the old ones -  none of it helped.
>> Currently, we are hosting limited amount of data. Whats an elegant way to
>> recover from this mess? Would shutting off all the nodes, deleting the ring
>> directory, and again forming the cluster work?
>>
>> Cheers
>> Nitish
>> _______________________________________________
>> riak-users mailing list
>> riak-users at lists.basho.com
>> http://lists.basho.com/mailman/listinfo/riak-users_lists.basho.com
>>
>
>
>
> --
> Jon Meredith
> Platform Engineering Manager
> Basho Technologies, Inc.
> jmeredith at basho.com
>
>
>


-- 
Jon Meredith
Platform Engineering Manager
Basho Technologies, Inc.
jmeredith at basho.com
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.basho.com/pipermail/riak-users_lists.basho.com/attachments/20120502/e210525c/attachment.html>


More information about the riak-users mailing list