From: David Carter (no email)
Date: Sun Sep 19 2004 - 06:37:58 EDT
On Sun, 19 Sep 2004, David Lang wrote:
> 5. Active/Active
> designate one of the boxes as primary and identify all items in the
> datastore that absolutly must not be subject to race conditions between
> the two boxes (message UUID for example). In addition to implementing
> the replication needed for #1 modify all functions that need to update
> these critical pieces of data to update them on the master and let the
> master update the other box.
We may be talking at cross purposes (and its entirely likely that I've
got the wrong end of the stick!), but I consider active-active to be
the case where there is no primary: users can make changes to either
system, and if the two systems lose touch with each other they have
to resolve their differences when contact is reestablished.
UUIDs aren't a problem (each machine in a cluster owns its own fraction of
the address space). Message UIDs are a big problem. I guess in the case of
conflict, you could bump the UIDvalidity value on a mailbox and reassign
UIDs for all the messages, using timestamps determine the eventual
ordering of messages. Now that I think about it, maybe that's not a
totally absurd idea. It would involve a lot of work though.
> best use of available hardware as the load is split almost evenly between
> the boxes.
> best availability becouse if there is a failure half of the clients won't
> see it at all
Actually this is what I do right now by having two live mailstores. Half
the mailboxes on each system are active, the remainder are passive.
-- David Carter Email: University Computing Service, Phone: (01223) 334502 New Museums Site, Pembroke Street, Fax: (01223) 334679 Cambridge UK. CB2 3QH. --- Cyrus Home Page: http://asg.web.cmu.edu/cyrus Cyrus Wiki/FAQ: http://cyruswiki.andrew.cmu.edu List Archives/Info: http://asg.web.cmu.edu/cyrus/mailing-list.html