On Sat, Nov 27, 2010 at 10:16:54AM -0700, Alan Robertson wrote:
> 
> I was talking about a half-dozen or so nodes.  Not to /implement/ a
> cloud, but to /run in/ a cloud someone else implemented.

I know. Of course.

Maybe we should have stuck closer to the original subject ;)
Yes, as was my first (one line) answer: there such a feature like you
proposed (reconfiguring unicast peers at runtime) could come in handy.

But again:
We will have to address the messaging size limits with heartbeat,
if it is going to be used with pacemaker 1.1.4/1.2.

Even on a 3-node cluster, pacemaker 1.1.4 and "standard" cts generated
cib breaks on current heartbeat with -EMSGSIZE.

So that's relevant to your half-dozen or so nodes case.

It is because pacemaker now, mainly for performance reasons, hands down
up to 128k (I think) FT_STRING fields, before starting bz2'ing the
payload itself (and handing it down as FT_BINARY.
Unless you configure heartbeat to use "traditional compression"
(compressing every packet > threshold, including control fields,
so every node will have to uncompress it before it knows that this was a
node message to someone else and can be dropped), that'll obviously end
up with broken communication.

Sure, the threshold when pacemaker starts bz2'ing is only a define.
And pacemaker could also pass down FT_UNCOMPRESS or whatever it was
(it sometimes does).

But I think it should be address in the comm layer anyways.

The heartbeat ipc layer should know that to pass data between various
processes on the same node, it does not need to compress/decompress
anything. (There is also too much memcpy'ing going on in there, but
let's not go there yet.)
Once a message actually hits a media type (leaves a node), it should,
depending on media type, be able to transparently compress messages --
without the ipc client knowing too much about the internals.  And it
should not mix ipc layer internal (crontrol) fields and client payload
fields in the same client visible and manipulatible name space.

Thus my suggestion to, for starters, encapsulate all client payload
in a sub-message, which can then be compressed, either partially, or
fully, even using the existing infrastruture.

Sure, "if it ain't broke, don't fix it".
But, just because we can "make it work", does not mean it could not do
with a little fixing here and there. Since, if we have to "make" it
work, that hints at things being at least slightly broken, some way.

Anyways.

Once the things I mentioned above cause so much pain that either
heartbeat gets fixed, or replaced, I can just say "I told you so"

But until then, you could probably already have implemented your
original proposal in the cumulative man hours spent writing and reading
this thread, and I'm sure I will get used. So please, just go ahead.

Cheers,


-- 
: Lars Ellenberg
: LINBIT | Your Way to High Availability
: DRBD/HA support and consulting http://www.linbit.com

DRBD® and LINBIT® are registered trademarks of LINBIT, Austria.
_______________________________________________________
Linux-HA-Dev: Linux-HA-Dev@lists.linux-ha.org
http://lists.linux-ha.org/mailman/listinfo/linux-ha-dev
Home Page: http://linux-ha.org/

Reply via email to