[Pacemaker] DRBD promotion timeout after pacemaker stop on other node
Vladislav Bogdanov
bubble at hoster-ok.com
Tue Nov 12 15:13:56 UTC 2013
12.11.2013 09:56, Vladislav Bogdanov wrote:
...
> Ah, then in_ccm will be set to false only when corosync (2) is stopped
> on a node, not when pacemaker is stopped?
>
> Thus, current drbd agent/fencing logic does not (well) support just stop
> of pacemaker in my use-case, messaging layer should be stopped as well.
>
> May be it should also look at the "shutdown" attribute...
Just for the thread completeness.
With the patch below and latest pacemaker "tip" from beekhof repository
drbd fence handler returns almost immediately and drbd resource is promoted
without delays on another node after shutdown of pacemaker instance which has
it promoted.
--- a/scripts/crm-fence-peer.sh 2013-09-27 10:47:52.000000000 +0000
+++ b/scripts/crm-fence-peer.sh 2013-11-12 13:45:52.274674803 +0000
@@ -500,6 +500,21 @@ guess_if_pacemaker_will_fence()
[[ $crmd = "banned" ]] && will_fence=true
if [[ ${expected-down} = "down" && $in_ccm = "false" && $crmd != "online" ]]; then
: "pacemaker considers this as clean down"
+ elif [[ $crmd/$join/$expected = "offline/down/down" ]] ; then
+ # Check if pacemaker is simply shutdown, but membership/quorum is possibly still established (corosync2/cman)
+ # 1.1.11 will set expected="down" on a clean shutdown too
+ # Look for "shutdown" transient node attribute
+ local node_attributes=$(set +x; echo "$cib_xml" | awk "/<node_state [^\n]*uname=\"$DRBD_PEER\"/,/<\/instance_attributes>/"| grep -F -e "<nvpair ")
+ if [ -n "${node_attributes}" ] ; then
+ local shut_down=$(set +x; echo "$node_attributes" | awk '/ name="shutdown"/ {if (match($0, /value=\"([[:digit:]]+)\"/, values)) {print values[1]} }')
+ if [ -n "${shut_down}" ] ; then
+ : "pacemaker considers this as clean down"
+ else
+ will_fence=true
+ fi
+ else
+ will_fence=true
+ fi
elif [[ $in_ccm = false ]] || [[ $crmd != "online" ]]; then
will_fence=true
fi
More information about the Pacemaker
mailing list