[Pacemaker] resource moving unnecessarily due to ping race condition

Brad Johnson bjohnson at ecessa.com
Thu Sep 8 18:59:59 UTC 2011


We have a 2 node cluster with a single resource. The resource must run 
on only a single node at one time. Using the pacemaker:ocf:ping RA we 
are pinging a WAN gateway and a LAN host on each node so the resource 
runs on the node with the greatest connectivity. The problem is when a 
ping host goes down (so both nodes lose connectivity to it), the 
resource moves to the other node due to timing differences in how fast 
they update the score attribute. The dampening value has no effect, 
since it delays both nodes by the same amount. These unnecessary 
fail-overs aren't acceptable since they are disruptive to the network 
for no reason.
Is there a way to dampen the ping update by different amounts on the 
active and passive nodes? Or some other way to configure the cluster to 
try to keep the resource where it is during these tie score scenarios?

We are running Pacemaker 1.0.10 with Heartbeat 3.0.5. Here are our 
current resource and constraints sections:

<resources>
<group id="group_1">
<meta_attributes id="group-group_1.meta"/>
<primitive class="heartbeat" id="pld_1" type="pld">
<meta_attributes id="primitive-pld_1.meta"/>
<operations>
<op id="pld_1_mon" interval="20s" name="monitor" timeout="60s"/>
</operations>
<meta_attributes id="pld_1-meta_attributes">
<nvpair id="pld_1-resource-stickiness" name="resource-stickiness" 
value="1000"/>
</meta_attributes>
</primitive>
</group>
<clone id="Connected">
<primitive id="pld_pingd" provider="pacemaker" class="ocf" type="ping">
<instance_attributes id="ping-attrs">
<nvpair id="pingd-dampen" name="dampen" value="12s"/>
<nvpair id="pingd-multiplier" name="multiplier" value="2000"/>
<nvpair id="pingd-hosts" name="host_list" value="173.160.121.110 
192.168.10.98"/>
<nvpair id="pingd-attempts" name="attempts" value="3"/>
<nvpair id="pingd-timeout" name="timeout" value="4"/>
</instance_attributes>
<operations>
<op id="ping-monitor-interval" interval="13s" name="monitor"/>
</operations>
</primitive>
</clone>
</resources>
<constraints>
<rsc_location id="pingd-constraint" rsc="group_1">
<rule id="pingd-constraint-rule" score-attribute="pingd">
<expression id="expression.id2244454" attribute="pingd" 
operation="defined"/>
</rule>
</rsc_location>
</constraints>

Thanks in advance,
Brad




More information about the Pacemaker mailing list