[Pacemaker] Order Constraint for: stop rscA only when rscB is running ?

Andrew Beekhof beekhof at gmail.com
Thu Oct 9 07:58:26 EDT 2008


On Oct 9, 2008, at 12:40 PM, Andreas Kurz wrote:

> On Monday 06 October 2008 15:36:31 Andrew Beekhof wrote:
>> On Thu, Oct 2, 2008 at 10:23, Andreas Kurz  
>> <andreas.kurz at linbit.com> wrote:
>>> Hi,
>>>
>>> I have a Heartbeat 2.1.3 two-node cluster and I wonder if there is  
>>> a way
>>> to create constraints that work like that:
>>>
>>> * Two resources (rscA and rscB) of class "heartbeat" that should run
>>> together on one node .... simple advisory colocation constraint
>>>
>>> <rsc_colocation id="rscA-colocated-with-rscB"
>>>       from="rscA" to="rscB"
>>>       score="1" symmetrical="true"/>
>>>
>>> * When doing maintenance on one node I put the node into standby  
>>> mode and
>>> want rscA only stop and migrate away if rscB is already up and  
>>> running on
>>> the other node and vice versa because  there must always run at  
>>> least one
>>> of these resources in the cluster.
>>>
>>> I added two order_constraints and tested it with ptest on an  
>>> adapted live
>>> cib but they seem to produce a loop:
>>
>> This is logical if you draw it out (and remember that Stop X always
>> precedes Start X)
>
> Yes, I expected a loop and I had a slide hope there is some
> cool "prevent-loops" logic available ;-)

Possible in theory - but there is no way to know where the "right"  
place to break the chain is.

>
>
>>
>> Any reason not to just use the following?
>>
>> <rsc_order id="always-start-A-after-B"
>>       from="service_rscB" action="start"
>>       type="before"
>>       to="service_rscA" to_action="start"
>>       symmetrical="true" score="0"/>
>
> The reason is that first rscA then rscB ist stopped ... so they are  
> both down
> before they are restarted in this order on the other node.
>
> The idea is ... in case of a manual switchover of all services from  
> nodeA to
> nodeB during regular failover tests, rscA should be stopped on nodeA  
> _after_
> rscB is already _started_ on nodeB.

But in normal operation rscB should start after rscA?

>
>
> Regards,
> Andreas
>
>>
>>> <rsc_order id="stop-rscA-only-after-rscB-start"
>>>       from="service_rscA" action="stop"
>>>       type="after"
>>>       to="service_rscB" to_action="start"
>>>       symmetrical="false" score="0"/>
>>>
>>> <rsc_order id="stop-rscB-only-after-rscA-start"
>>>       from="service_rscB" action="stop"
>>>       type="after"
>>>       to="service_rscA" to_action="start"
>>>       symmetrical="false" score="0"/>
>>>
>>> Is there a way to get the requested behavior or is a manual resource
>>> after resource migration the only way to achieve this?
>>>
>>> Regards,
>>> Andreas
> ...
>
> -- 
> : Andreas Kurz					
> : LINBIT | Your Way to High Availability
> : Tel +43-1-8178292-64, Fax +43-1-8178292-82
> :
> : http://www.linbit.com
>
> DRBD® and LINBIT® are registered trademarks of LINBIT, Austria.
>
> This e-mail is solely for use by the intended recipient(s).  
> Information
> contained in this e-mail and its attachments may be confidential,
> privileged or copyrighted. If you are not the intended recipient you  
> are
> hereby formally notified that any use, copying, disclosure or
> distribution of the contents of this e-mail, in whole or in part, is
> prohibited. Also please notify immediately the sender by return e-mail
> and delete this e-mail from your system. Thank you for your co- 
> operation.
> _______________________________________________
> Pacemaker mailing list
> Pacemaker at clusterlabs.org
> http://list.clusterlabs.org/mailman/listinfo/pacemaker





More information about the Pacemaker mailing list