[Pacemaker] advisory colocation constraint group->service

Andrew Beekhof beekhof at gmail.com
Wed Oct 29 14:56:13 UTC 2008


On Oct 29, 2008, at 2:12 PM, Andreas Kurz wrote:

> On Wednesday 29 October 2008 11:28:30 Andrew Beekhof wrote:
>> On Fri, Oct 24, 2008 at 21:33, Andrew Beekhof <beekhof at gmail.com>  
>> wrote:
>>> Sorry for the delay...
>>> This might be a bug, but I see:
>>>
>>> info: native_merge_weights: service_bgp-upc: Breaking dependancy  
>>> loop
>>>
>>> in the logs, which makes me suspicious about the colocation
>>> constraints (since this shouldn't really happen)
>>
>> ok, i was correct up to here.
>>
>> I'm pretty sure you want:
>
> hmm .... not really.
>
>>
>> --- cib_group-res-constr.orig.xml	2008-10-29 11:09:47.000000000 +0100
>> +++ cib_group-res-constr.xml	2008-10-29 11:26:13.000000000 +0100
>> @@ -265,7 +265,7 @@
>>        <rsc_colocation id="bgp-upc-colocate-with-ip_upc"
>> from="service_bgp-upc" to="service_ip_upc" score="INFINITY"/>
>>        <rsc_order id="bgp-telekom-after-ip_telekom"
>> from="service_bgp-telekom" type="after" to="service_ip_telekom"
>> score="0"/>
>>        <rsc_colocation id="bgp-telekom-colocated-with-ip_telekom"
>> from="service_bgp-telekom" to="service_ip_telekom" score="INFINITY"/>
>> -       <rsc_colocation id="bgp-upc-colocated-with-bgp_telekom"
>> from="service_bgp-upc" to="service_bgp-telekom" score="1"
>> symmetrical="true"/>
>    ^^^^^^^^^^^
>
> My intention for this (^) was to loosely couple them together so  
> they run
> together on the same host. If I decide to stop one of them  and  
> restart it
> after a while it should be colocated again with its "partner" ... if  
> i decide
> to migrate only one of the  two resources to another node the other  
> resource
> should stay where it is running.

This is not at all related what symmetrical does.
Symmetrical was a work-around for a problem a long time ago and no-one  
should be setting it to true.

>> +       <rsc_colocation id="bgp-upc-colocated-with-bgp_telekom"
>> from="service_bgp-upc" to="service_bgp-telekom" score="1"/>
>>        <rsc_order id="ospf-dmz-after-ips" from="service_ospf-dmz"
>> type="after" to="group_routing_ips" score="0"/>
>>        <rsc_colocation id="ospf-dmz-colocate-with-ips"
>> from="service_ospf-dmz" to="group_routing_ips" score="INFINITY"/>
>>        <rsc_order id="ospf-default-after-ips"
>> from="service_ospf-default" type="after" to="group_routing_ips"
>> score="0"/>
>> @@ -275,8 +275,8 @@
>>        <rsc_colocation id="ipsec-IP-colocate-with-ips"
>> from="service_ip_IPSEC" to="group_routing_ips" score="1"/>
>>        <rsc_colocation id="mysql-colocate-with-ips" from="mysql"
>> to="group_routing_ips" score="1"/>
>>        <!-- hmm ... the next two constraints work not as expected -->
>> -       	  <rsc_colocation id="ips-colocate-with-bgp_telekom"
>> from="group_routing_ips" to="service_bgp-telekom" score="1"/>
>> -          <rsc_colocation id="ips-colocate-with-bgp_upc"
>> from="group_routing_ips" to="service_bgp-upc" score="1"/>
>
> no, no ... that's fine ;-) start the group of "other ips" where the  
> bgp
> services are running
>
>
> Please correct me if I'am wrong but for me it looks like the score  
> of the
> colocation is ignored and always INFINITY.

not quite

> I expected the advisory colocation
> constraint to not stop an already runing resource to fullfill the
> constraint ... is this a misinterpretion?

no

the problem was how non-matches were handled.
matches gained constraint.score (correct), but non-matches always got  
set to -INFINITY (wrong).

The following patch makes your scenario behave, I just need to run it  
through the regression tests.

diff -r 61b457707d67 pengine/native.c
--- a/pengine/native.c	Thu Oct 23 17:05:06 2008 +0200
+++ b/pengine/native.c	Wed Oct 29 15:53:02 2008 +0100
@@ -762,9 +762,9 @@ colocation_match(
  		    }

  		} else if(do_check == FALSE || constraint->score >= INFINITY) {
-			crm_debug_2("%s: %s.%s = -INFINITY (%s)", constraint->id, rsc_lh- 
 >id,
-				  node->details->uname, do_check?"failed":"unallocated");
-			node->weight = -INFINITY;
+			crm_debug_2("%s: %s.%s -= %d (%s)", constraint->id, rsc_lh->id,
+				    node->details->uname, constraint->score,  
do_check?"failed":"unallocated");
+			node->weight = merge_weights(-constraint->score, node->weight);
  		}
  		
  		);



>
>
> Regards,
> Andreas
>
>> +       	  <rsc_colocation id="ips-colocate-with-bgp_telekom"
>> to="group_routing_ips" from="service_bgp-telekom" score="1"/>
>> +          <rsc_colocation id="ips-colocate-with-bgp_upc"
>> to="group_routing_ips" from="service_bgp-upc" score="1"/>
>>        <!-- #################################################### -->
>>        <rsc_order id="stop-bgp-ta-only-after-bgp-upc-start"
>> from="service_bgp-telekom" action="stop" type="after"
>> to="service_bgp-upc" to_action="start" symmetrical="false"  
>> score="0"/>
>>    </constraints>
>>
>>> On Wed, Oct 15, 2008 at 18:28, Andreas Kurz  
>>> <andreas.kurz at linbit.com>
> wrote:
>>>> On Wednesday 15 October 2008 11:52:49 Andrew Beekhof wrote:
>>>>> On Oct 13, 2008, at 5:31 PM, Andreas Kurz wrote:
>>>>>> Hi,
>>>>>>
>>>>>> I have another constraints problem with a Heartbeat 2.1.3
>>>>>> installation and I
>>>>>> wonder where's my error in the configuration.
>>>>>>
>>>>>> I want to make an advisory colocation of a group of six IPs  
>>>>>> with a
>>>>>> service but
>>>>>> when I stop (target_role=stopped) the service, the group is also
>>>>>> stopped:
>>>>>>
>>>>>> * default-resource-stickiness 10
>>>>>> * all services are started on the same node
>>>>>> * no location constraints
>>>>>>
>>>>>> <rsc_colocation id="ips-colocate-with-srvA"
>>>>>>  from="group_ips" to="srvA"
>>>>>>  score="1"/>
>>>>>>
>>>>>> Is an advisory colocation constraint between a group and a  
>>>>>> service
>>>>>> not supported?
>>>>>
>>>>> It should work.
>>>>> Can you send me the "cibadmin -Q" output just before you set
>>>>> target_role=stopped please?
>>>>
>>>> I attached the cib ..... when I stop e.g the resource  
>>>> "service_ip_upc"
>>>> all services that are advisory colocated to this service are also
>>>> stopped additionally also the following colocation constraint is  
>>>> not
>>>> working:
>>>>
>>>> <rsc_colocation id="bgp-upc-colocated-with-bgp_telekom"
>>>>       from="service_bgp-upc"
>>>>       to="service_bgp-telekom"
>>>>  score="1" symmetrical="true"/>
>>>>
>>>> If I remove these two colocation constraints
>>>> named "ips-colocate-with-bgp_telekom"  and "ips-colocate-with- 
>>>> bgp_upc"
>>>> the constraint above works again.
>>>>
>>>> Thx&Regards,
>>>> Andreas
>>>>
>>>>> _______________________________________________
>>>>> Pacemaker mailing list
>>>>> Pacemaker at clusterlabs.org
>>>>> http://list.clusterlabs.org/mailman/listinfo/pacemaker
>>>>
>>>> --
>>>>
>>>> : Andreas Kurz
>>>> : LINBIT | Your Way to High Availability
>>>> : Tel +43-1-8178292-64, Fax +43-1-8178292-82
>>>> :
>>>> : http://www.linbit.com
>>>>
>>>> DRBD(R) and LINBIT(R) 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
>>
>> _______________________________________________
>> Pacemaker mailing list
>> Pacemaker at clusterlabs.org
>> http://list.clusterlabs.org/mailman/listinfo/pacemaker
>
> _______________________________________________
> Pacemaker mailing list
> Pacemaker at clusterlabs.org
> http://list.clusterlabs.org/mailman/listinfo/pacemaker





More information about the Pacemaker mailing list