On 12/11/2009 04:58 PM, Sandy Pratt wrote:


-----Original Message-----
From: Alan Conway [mailto:[email protected]]
Sent: Friday, December 11, 2009 1:35 PM
To: [email protected]
Cc: qpid-dev-apache
Subject: Re: [c++ cluster] User doc for persistent clusters.

On 12/11/2009 03:59 PM, Sandy Pratt wrote:

-----Original Message-----
From: Alan Conway [mailto:[email protected]]
Sent: Tuesday, November 24, 2009 7:56 AM
To: Jonathan Robie; qpid-dev-apache
Subject: [c++ cluster] User doc for persistent clusters.

I put up a user view of the peristent cluster changes, coming soon.
Would
appreaciate any feedback on the doc or the feature it describes.


http://cwiki.apache.org/confluence/display/qpid/Persistent+Cluster+Rest
art+Design+Note


Hi Alan,

Looks like a great step forward for clustering.  Any hints on what's
involved in the manual intervention to enable restart from a full
cluster crash?  I'm eager to kick the tires.


Basically it amounts to picking the "best" store and marking it clean
by putting
a UUID in<data_dir>/cluster/shutdown.uuid, i.e. pretend it was shut
down cleanly.


Simple enough, thanks!

I'm working on providing some help to identify the "best" store and
ultimately
hope to provide a tool for doing all this a bit more automatically. It
will
probably mean running the tool on the data-directory of each cluster
member
initially which is a pain - assumes remote logins or shared file
systems.

I'd like to find a way to do this from one location without assuming
shared
filesystems or remote logins. There was a suggestion that if there's a
total
faliure the brokers come up in "admin mode" where they don't accept any
clients
except an admin tool. The brokers would collect the info needed to pick
the
clean store and mark it clean driven remotely by the admin tool. Does
this sound
like a good direction, or do you have any other suggestions on how to
approach this?

That does sound like a good approach to me.

Suppose the cluster has crashed because of a power or network failure (single 
brokers crashing due to OS or hardware problems isn't the issue here, if I 
understand correctly).

Then the common case is that they all power back up without issue, and can 
unanimously pick the correct journal while having access to all candidate 
journals (hand waving a bit here, maybe*).

In the event of a total failure like this I'm a little uneasy about the cluster picking the best store automatically. I had been considering this to be a manual intervention case, with some tools that make it fairly trivial but still requiring human intervention.


The uncommon case is that they all die for whatever reason, then some member of 
the cluster fails to come back up.  At this point, full information from all 
candidate journals is not available, and a unanimous decision cannot be 
reached.  Manual intervention sounds fine here.

*I noticed in some of the JIRA notes that the message store changes are labeled 
with a monotonically increasing sequence number.  Is this derived from the 
Lamport clock implemented by openais (in which case all the events are 
conveniently serialized by the CPG)?  I could be misunderstanding the way the 
CPG works, but if not it sounds like an excellent way to get the cluster back 
in sync.

The sequence number is the frame counter maintained by qpidd, but the cluster join protocol is designed so that all members will have the same frame count for the same frame regarless when they join the cluster. It's currently not persisted so can't be used in recovery for 2 reasons

- the cost of persisting it every frame time is significant compared to the cost to store a message. - a frame counter persisted separately from the message store does not necessarily reflect the state of the store.

My current thinking is to use a config-change counter (counts membership changes) in conjunction with a counter recorded by the store in the same transaction with a message called the Persistence ID or PID.
The PID is not the same across the clsuter but but we can resolve that:
 - record the config-change-counter and current PID with every config change.
- on recovery compare the actual store PID values relative to the PID value recorded for the same config change.

I'll be working on this in the coming week or two so any input you have is very timely.
Cheers,
Alan.

---------------------------------------------------------------------
Apache Qpid - AMQP Messaging Implementation
Project:      http://qpid.apache.org
Use/Interact: mailto:[email protected]

Reply via email to