[Pacemaker] symmetric anti-collocation

Alan Jones falancluster at gmail.com
Fri Nov 12 16:27:43 UTC 2010


On Thu, Nov 11, 2010 at 11:31 PM, Andrew Beekhof <andrew at beekhof.net> wrote:
>> colocation X-Y -2: X Y
>> colocation Y-X -2: Y X
>
> the second one is implied by the first and is therefore redundant

If only that were true!
What happens with the first rule is that other constraints that force
Y to a node will evict X but not the other way around.
What I'm doing is to first apply a "slight" preference for each
resource to each node:
location X-nodeA X 1: nodeA
location Y-nodeB Y 1: nodeB
And then impose absolute constraints that come from the outside environment.
In the particular case that has a problem, the constraint looks like:
location X-not-nodeA X -inf: nodeA
The behavior I expected was for X to be placed on nodeB and Y to
"anti-colocate" onto nodeA because our colocation rule is stronger
than the node preference rule.  What happens instead is that both X
and Y run on nodeB.
The similar constraint on Y (by itself) does work:
location Y-not-nodeB Y -inf: nodeB
and results in Y running on nodeA and X running on nodeB.  This is the
case whether I have one colocation rule or two, i.e. the second
colocation rule is ignored.

Looking at the code, I think the solution would be to short-circuit
the recursion when you can only run on one node due to -inf rules
rather than on a loop.  Obviously, it would not be a simple change and
needs some thought.
If you have any other suggestions let me know.
Alan




More information about the Pacemaker mailing list