After split brain recovery filesystem not mounted

clusterdrbdfailoverhigh-availabilitypacemaker

I have an active/passive high availability cluster with pacemaker+split brain. After split brain condition I use automatic split-brain recovery to recover my systems.

The problem is that since file system resource is managed by CRM it is not mounted after split brain recovery. Nothing is mounted after split brain recovery!

It seems I should use stonith devices, but my boss ask me to solve it without any extra device! How can I notify the split brain situation to pacemaker so it will remount the file system resource?

EDIT: my crm config

node drbd3
node drbd4
primitive apache ocf:heartbeat:apache \
        params configfile="/etc/apache2/apache2.conf" httpd="/usr/sbin/apache2" \
        op monitor interval="5s"
primitive drbd_disk ocf:linbit:drbd \
        params drbd_resource="r0" \
        op monitor interval="15s"
primitive fs_drbd ocf:heartbeat:Filesystem \
        params device="/dev/drbd/by-res/r0" directory="/mnt" fstype="ext4"
primitive ip1 ocf:heartbeat:IPaddr2 \
        params ip="10.8.0.95" nic="eth0"
group group1 ip1 apache
ms ms_drbd drbd_disk \
        meta master-max="1" master-node-max="1" clone-max="2" clone-node-max="1" notify="true"
colocation mnt_on_master inf: fs_drbd ms_drbd:Master
order apache_after_ip inf: ip1:start apache:start
order mount_after_drbd inf: ms_drbd:promote fs_drbd:start
property $id="cib-bootstrap-options" \
        dc-version="1.0.8-042548a451fce8400660f6031f4da6f0223dd5dd" \
        cluster-infrastructure="openais" \
        expected-quorum-votes="2" \
        stonith-enabled="false" \
        no-quorum-policy="ignore"

and my drdb config:

global { usage-count no; }
common { syncer { rate 100M; } }
resource r0 {
        protocol C;
        startup {
                wfc-timeout  1;
                degr-wfc-timeout 1;
        }
#       disk{
#               fencing resource-only;
#       }
        handlers {
                #split-brain "/usr/lib/drbd/notify-split-brain.sh root";
#                fence-peer "/usr/lib/drbd/crm-fence-peer.sh";
#                after-resync-target "/usr/lib/drbd/crm-unfence-peer.sh";

        }

        net {
                cram-hmac-alg sha1;
                shared-secret "test";
               # allow-two-primaries;
                after-sb-0pri discard-zero-changes;
                after-sb-1pri discard-secondary;
                after-sb-2pri call-pri-lost-after-sb;
        }
        on drbd3 {
                device /dev/drbd0;
                disk /dev/sda1;
                address 10.8.0.93:7788;
                meta-disk internal;
        }
        on drbd4 {
                device /dev/drbd0;
                disk /dev/sda1;
                address 10.8.0.94:7788;
                meta-disk internal;
        }
}
#include "drbd.d/global_common.conf";
#include "drbd.d/*.res";
~                          

Best Answer

For the above scenario you can add the following lines to /etc/rc.local which will resolve the issue -

#drbdadm secondary resource-name<resource> 
#drbdadm disconnect resource-name<resource>
#drbdadm -- --discard-my-data connect resource-name<resource>

Add the above commands to NODE-1[primary/Active node] /etc/rc.local file

drbdadm connect resource-name<resource>

Add the above command to NODE-2[Secondary/Passive node] /etc/rc.local file

Related Topic