[ClusterLabs] Unbounded master scoring

Alexander T mittspamkonto at gmail.com
Fri Apr 10 04:29:45 EDT 2015


Hello!

I have a situation where I would like to set master preferences based on
practically unbounded measurements, for instance age or connection count. I
am trying to figure out how this can be done safely with the current
scoring model.

If I for instance choose to set the score directly based on age in minutes,
I will be limited to something like 100000 minutes - 70 days. If I want
second resolution, I will only get 100000 seconds ~ 27 hours.

The problem gets even worse if I want to select primarily on age but
secondly on for instance active connection count. That is to make sure that
connection count only matters if age is equal. How can I locally compute a
single score which reflects this logic? Tricky to say the least, especially
if the measurements are non-bounded.

I am imagining a situation where a node can set local attributes, like {
lastModificationTime: X, activeConnections: Y }, and I can provide a score
or "master preference" function. I am here illustrating the concept with a
simplified function which would only work in a two-node situation:

compute_scores(node0_lastModificationTime,
               node0_activeConnections,
               node1_lastModificationTime,
               node1_activeConnections) {
    winner = compare(node0_lastModificationTime,
node1_lastModificationTime);
    if (winner == None) {
        winner = compare(node0_activeConnections, node1_activeConnections);

    }
    if (winner == None) {
        //tie
        return { node0: 0, node1: 0 }
    } else if (winner == node0) {
        return { node0: 1, node1: 0 }
    } else {
       return { node0: 0, node1: 1 }
    }
}

Is something like this possible today? Has anyone done this already?

If I am to implement this myself I suppose I could store per-node
attributes in the CIB and aggregate them on each node, compare and compute
each local score on 'monitor' or 'notify'. I am unsure whether this will
give me the result which I need, though. I am primarily concerned that the
CIB attributes and/or my score won't be updated by the time that scores are
evaluated. I am relying on age today to choose the right master after
partitioning and split brain. For a transition to this new model, I would
need pacemaker to call my function before making any decision. And I'm not
sure it would.

Any advice/ideas?

Best regards,

Alexander Torstling
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.clusterlabs.org/pipermail/users/attachments/20150410/9ee19704/attachment-0002.html>


More information about the Users mailing list