I have some ideas about Swift multi-cluster organisation. Please give feedback on<div><br><a href="https://lists.launchpad.net/openstack/msg08518.html">https://lists.launchpad.net/openstack/msg08518.html</a></div><div><br>
<div class="gmail_quote">On Sat, Mar 10, 2012 at 5:58 PM, John Leach <span dir="ltr"><<a href="mailto:john@brightbox.co.uk">john@brightbox.co.uk</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
Hi,<br>
<br>
I'm looking at deploying swift across two data-centres - I'd like to<br>
write 3 replicas: two in one data-centre and the third in the other<br>
another (doesn't matter which way around). I'd like to be able to<br>
tolerate the failure of (or loss of connectivity to) either data centre.<br>
<br>
If I create one zone per data-centre, I can't write 3 replicas (as each<br>
replica needs to go in a different zone).<br>
<br>
I can create two zones per data-centre, which appears at first to do the<br>
job, but I can't add any more zones to either data centre (without<br>
increasing the replica count to ensure at least one copy is always in<br>
the other data-centre). So if I lose access to one data-centre, and lose<br>
one zone in the remaining data-centre, I can no longer make writes to<br>
the required minimum 2 zones.<br>
<br>
I could use container replication here of course, but then I'll be<br>
writing 6 replicas in all.<br>
<br>
I think what I need here is hierarchical zones - I'd define one parent<br>
zone per data-centre, and then multiple child zones within each<br>
(representing racks or whatever).<br>
<br>
Swift would be configured to write 3 replicas in 3 child zones, aiming<br>
for at least 1 one replica per parent zone (handing off if the parent<br>
zone is unavailable).<br>
<br>
Apache Cassandra can do this kind of thing with it's RackAwareStrategy<br>
replication strategy. You define which servers are in which racks and<br>
which racks are in which data-centres.<br>
<br>
I saw an oscon 2011 swift talk slide that mentioned "layered zones" as<br>
future dev work - mentioning "cabinets, not zones".  Extrapolating from<br>
these 5 words, this is exactly what I need, when will it be ready? ;)<br>
<br>
Any thoughts on this?  Can the existing Ring implementation be extended<br>
to do this kind of thing? Is the code modular enough to be able to make<br>
the Ring implementation pluggable?<br>
<br>
Thanks!<br>
<br>
John.<br>
--<br>
Brightbox UK Cloud - <a href="http://brightbox.com" target="_blank">http://brightbox.com</a><br>
<br>
_______________________________________________<br>
Mailing list: <a href="https://launchpad.net/~openstack" target="_blank">https://launchpad.net/~openstack</a><br>
Post to     : <a href="mailto:openstack@lists.launchpad.net">openstack@lists.launchpad.net</a><br>
Unsubscribe : <a href="https://launchpad.net/~openstack" target="_blank">https://launchpad.net/~openstack</a><br>
More help   : <a href="https://help.launchpad.net/ListHelp" target="_blank">https://help.launchpad.net/ListHelp</a><br>
</blockquote></div><br><br clear="all"><div><br></div>-- <br>Kind regards<div>Dmitry Ukov</div><div>IT Engineer</div><div><div>Mirantis, Inc.</div></div><div><br></div><br>
</div>