[Pacemaker] Ordering clones and primitives

Lars Kellogg-Stedman lars at oddbit.com
Tue Nov 2 13:57:12 UTC 2010


> You should set the interleave=true meta attribute for the clones.
> Hope that that would help. You need collocations as well.

Dejan,

Thanks for the suggestion.  Can you elaborate a little?  The documentation
for the interleave option says:

  Changes the behavior of ordering constraints (between clones/masters) so
  that instances can start/stop as soon as their peer instance has (rather
  than waiting for every instance of the other clone has). Allowed values:
  true, false

I'm not sure exactly what this means.  In particular, I'm not sure what a
"master" is in this case; the documentation only refers to masters in the
context of multi-state resources.  Maybe we could work out an explicit
example?  Let's start with a sample configuration like this:

  primitive def_route ocf:pacemaker:Stateful
  primitive ip_0 ocf:pacemaker:Stateful
  primitive ip_1 ocf:pacemaker:Stateful
  primitive net_route ocf:pacemaker:Stateful
  clone clone_def_route def_route \
          meta interleave="true"
  clone clone_net_route net_route \
          meta interleave="true"

My goal is that:

- net_route must start before def_route, and there must be either ip_0 or
  ip_1 active on a node before either net_route or def_route can start.
- Both ip_0 and ip_1 can run on the same node.
- Only a single instance of net_route and def_route can run on any given
  node.

Without any constraints and everything started, "crm status" looks like
this:

  Online: [ node1 node0 ]

   ip_0   (ocf::pacemaker:Stateful):      Started node1
   ip_1   (ocf::pacemaker:Stateful):      Started node0
   Clone Set: clone_def_route [def_route]
       Started: [ node1 node0 ]
   Clone Set: clone_net_route [net_route]
       Started: [ node1 node0 ]

If I add what I think is the correct collocation constraint (with the
caveat that I don't really understand the semantics of collocating clones
and primitives):

  colocation ip_0_with_routes \
    inf: ip_0 clone_net_route clone_def_route
  colocation ip_1_with_routes \
    inf: ip_1 clone_net_route clone_def_route

I end up with this:

  Online: [ node1 node0 ]

   ip_0   (ocf::pacemaker:Stateful):      Started node1
   ip_1   (ocf::pacemaker:Stateful):      Started node0

All of the clones are missing!  They still show up in the resource list:

  # crm resource list
   ip_0   (ocf::pacemaker:Stateful) Started
   ip_1   (ocf::pacemaker:Stateful) Started
   Clone Set: clone_def_route [def_route]
       Stopped: [ def_route:0 def_route:1 ]
   Clone Set: clone_net_route [net_route]
       Stopped: [ net_route:0 net_route:1 ]

But trying to start them is  no-op.

Thanks for your help!  If we get this working maybe we can turn it into an
example configuration on the wiki.



More information about the Pacemaker mailing list