[Sheepdog] Sheepdog reliability

Dennis Jacobfeuerborn dennisml at conversis.de
Thu Nov 18 15:48:01 CET 2010


On 11/18/2010 09:45 AM, MORITA Kazutaka wrote:
> Hi,
>
> At Wed, 17 Nov 2010 14:44:34 +0100,
> Dennis Jacobfeuerborn wrote:
>>
>> Hi,
>> I've been following Sheepdog for a while and now that patches are being
>> sent to include it in libvirt I want to start testing it. One question I
>> have is how I can ensure the reliability of the Sheepdog cluster as a
>> whole. Specifically I'm looking at two cases:
>>
>> Lets assume a setup with 4 nodes and a redundancy of 3.
>>
>> If one node fails what are the effects both for the cluster and the clients
>> (e.g. potential i/o delays, messages, etc.)
>
> Until Sheepdog starts a new round of membership, the cluster suspends
> any requests to data objects and the clients I/O is waited.  How long
> to wait is up to the value of totem/consensus in corosync.conf.  The
> default value is 1200 ms.  If you want to run Sheepdog with large
> number of nodes, the value need to be larger number and the delay time
> becomes larger.

Wouldn't it be better to decouple the client requests from these cluster 
timings? This looks like a unnecessary bottleneck that gets worse as the 
cluster gets larger. Why not let the client request have it's own timeout 
of say 1 second and if no response arrives retry the request to one of the 
nodes that carry one of the redundant copy of the blocks?
That way a node failure would have less of an impact on the applications 
and delays for the application request would become independent of the 
cluster size.

>> and what needs to be done once
>> the node is replaced to get the cluster back into a healthy state?
>
> All you need to do is only starting a sheep daemon again.  If it
> doesn't work, please let me know.

So when the node goes down will the cluster copy all of the lost blocks to 
another node automatically to re-establish the redundancy requirement of 3 
copies?

If the new node is added to the cluster will it stay empty or will the 
cluster rebalance the blocks according to some load criterium?

>>
>> What happens if *all* nodes fail due to e.g. a power outage? What needs to
>> be done to bring the cluster back up again?
>
> If no VM is running when all nodes fail, all you need to do is
> starting all sheep daemons again.  However, if I/O requests are
> processed when all nodes fail, Sheepdog needs to recover the objects
> whose replicas are in inconsistent states (and it is not implemented
> yet).
>

What is the timeframe for this implementation after all this has to be 
implemented before Sheepdog can go into productive use.

Regards,
   Dennis



More information about the sheepdog mailing list