[ClusterLabs] [DRBD-user] DRBD fencing issue on failover causes resource failure
Tim Walberg
twalberg at gmail.com
Wed Mar 16 18:51:16 CET 2016
Is there a way to make this work properly without STONITH? I forgot to mention
that both nodes are virtual machines (QEMU/KVM), which makes STONITH a minor
challenge. Also, since these symptoms occur even under "pcs cluster standby",
where STONITH *shouldn't* be invoked, I'm not sure if that's the entire answer.
On 03/16/2016 13:34 -0400, Digimer wrote:
>> On 16/03/16 01:17 PM, Tim Walberg wrote:
>> > Having an issue on a newly built CentOS 7.2.1511 NFS cluster with DRBD
>> > (drbd84-utils-8.9.5-1 with kmod-drbd84-8.4.7-1_1). At this point, the
>> > resources consist of a cluster address, a DRBD device mirroring between
>> > the two cluster nodes, the file system, and the nfs-server resource. The
>> > resources all behave properly until an extended failover or outage.
>> >
>> > I have tested failover in several ways ("pcs cluster standby", "pcs
>> > cluster stop", "init 0", "init 6", "echo b > /proc/sysrq-trigger", etc.)
>> > and the symptoms are that, until the killed node is brought back into
>> > the cluster, failover never seems to complete. The DRBD device appears
>> > on the remaining node to be in a "Secondary/Unknown" state, and the
>> > resources end up looking like:
>> >
>> > # pcs status
>> > Cluster name: nfscluster
>> > Last updated: Wed Mar 16 12:05:33 2016 Last change: Wed Mar 16
>> > 12:04:46 2016 by root via cibadmin on nfsnode01
>> > Stack: corosync
>> > Current DC: nfsnode01 (version 1.1.13-10.el7_2.2-44eb2dd) - partition
>> > with quorum
>> > 2 nodes and 5 resources configured
>> >
>> > Online: [ nfsnode01 ]
>> > OFFLINE: [ nfsnode02 ]
>> >
>> > Full list of resources:
>> >
>> > nfsVIP (ocf::heartbeat:IPaddr2): Started nfsnode01
>> > nfs-server (systemd:nfs-server): Stopped
>> > Master/Slave Set: drbd_master [drbd_dev]
>> > Slaves: [ nfsnode01 ]
>> > Stopped: [ nfsnode02 ]
>> > drbd_fs (ocf::heartbeat:Filesystem): Stopped
>> >
>> > PCSD Status:
>> > nfsnode01: Online
>> > nfsnode02: Online
>> >
>> > Daemon Status:
>> > corosync: active/enabled
>> > pacemaker: active/enabled
>> > pcsd: active/enabled
>> >
>> > As soon as I bring the second node back online, the failover completes.
>> > But this is obviously not a good state, as an extended outage for any
>> > reason on one node essentially kills the cluster services. There's
>> > obviously something I've missed in configuring the resources, but I
>> > haven't been able to pinpoint it yet.
>> >
>> > Perusing the logs, it appears that, upon the initial failure, DRBD does
>> > in fact promote the drbd_master resource, but immediately after that,
>> > pengine calls for it to be demoted for reasons I haven't been able to
>> > determine yet, but seems to be tied to the fencing configuration. I can
>> > see that the crm-fence-peer.sh script is called, but it almost seems
>> > like it's fencing the wrong node... Indeed, I do see that it adds a
>> > -INFINITY location constraint for the surviving node, which would
>> > explain the decision to demote the DRBD master.
>> >
>> > My DRBD resource looks like this:
>> >
>> > # cat /etc/drbd.d/drbd0.res
>> > resource drbd0 {
>> >
>> > protocol C;
>> > startup { wfc-timeout 0; degr-wfc-timeout 120; }
>> >
>> > disk {
>> > on-io-error detach;
>> > fencing resource-only;
>>
>> This should be 'resource-and-stonith;', but alone won't do anything
>> until pacemaker's stonith is working.
>>
>> > }
>> >
>> > handlers {
>> > fence-peer "/usr/lib/drbd/crm-fence-peer.sh";
>> > after-resync-target "/usr/lib/drbd/crm-unfence-peer.sh";
>> > }
>> >
>> > on nfsnode01 {
>> > device /dev/drbd0;
>> > disk /dev/vg_nfs/lv_drbd0;
>> > meta-disk internal;
>> > address 10.0.0.2:7788 <http://10.0.0.2:7788>;
>> > }
>> >
>> > on nfsnode02 {
>> > device /dev/drbd0;
>> > disk /dev/vg_nfs/lv_drbd0;
>> > meta-disk internal;
>> > address 10.0.0.3:7788 <http://10.0.0.3:7788>;
>> > }
>> > }
>> >
>> > If I comment out the three lines having to do with fencing, the failover
>> > works properly. But I'd prefer to have the fencing there in the odd
>> > chance that we end up with a split brain instead of just a node outage...
>> >
>> > And, here's "pcs config --full":
>> >
>> > # pcs config --full
>> > Cluster Name: nfscluster
>> > Corosync Nodes:
>> > nfsnode01 nfsnode02
>> > Pacemaker Nodes:
>> > nfsnode01 nfsnode02
>> >
>> > Resources:
>> > Resource: nfsVIP (class=ocf provider=heartbeat type=IPaddr2)
>> > Attributes: ip=10.0.0.1 cidr_netmask=24
>> > Operations: start interval=0s timeout=20s (nfsVIP-start-interval-0s)
>> > stop interval=0s timeout=20s (nfsVIP-stop-interval-0s)
>> > monitor interval=15s (nfsVIP-monitor-interval-15s)
>> > Resource: nfs-server (class=systemd type=nfs-server)
>> > Operations: monitor interval=60s (nfs-server-monitor-interval-60s)
>> > Master: drbd_master
>> > Meta Attrs: master-max=1 master-node-max=1 clone-max=2
>> > clone-node-max=1 notify=true
>> > Resource: drbd_dev (class=ocf provider=linbit type=drbd)
>> > Attributes: drbd_resource=drbd0
>> > Operations: start interval=0s timeout=240 (drbd_dev-start-interval-0s)
>> > promote interval=0s timeout=90 (drbd_dev-promote-interval-0s)
>> > demote interval=0s timeout=90 (drbd_dev-demote-interval-0s)
>> > stop interval=0s timeout=100 (drbd_dev-stop-interval-0s)
>> > monitor interval=29s role=Master
>> > (drbd_dev-monitor-interval-29s)
>> > monitor interval=31s role=Slave
>> > (drbd_dev-monitor-interval-31s)
>> > Resource: drbd_fs (class=ocf provider=heartbeat type=Filesystem)
>> > Attributes: device=/dev/drbd0 directory=/exports/drbd0 fstype=xfs
>> > Operations: start interval=0s timeout=60 (drbd_fs-start-interval-0s)
>> > stop interval=0s timeout=60 (drbd_fs-stop-interval-0s)
>> > monitor interval=20 timeout=40 (drbd_fs-monitor-interval-20)
>> >
>> > Stonith Devices:
>> > Fencing Levels:
>> >
>> > Location Constraints:
>> > Ordering Constraints:
>> > start nfsVIP then start nfs-server (kind:Mandatory)
>> > (id:order-nfsVIP-nfs-server-mandatory)
>> > start drbd_fs then start nfs-server (kind:Mandatory)
>> > (id:order-drbd_fs-nfs-server-mandatory)
>> > promote drbd_master then start drbd_fs (kind:Mandatory)
>> > (id:order-drbd_master-drbd_fs-mandatory)
>> > Colocation Constraints:
>> > nfs-server with nfsVIP (score:INFINITY)
>> > (id:colocation-nfs-server-nfsVIP-INFINITY)
>> > nfs-server with drbd_fs (score:INFINITY)
>> > (id:colocation-nfs-server-drbd_fs-INFINITY)
>> > drbd_fs with drbd_master (score:INFINITY) (with-rsc-role:Master)
>> > (id:colocation-drbd_fs-drbd_master-INFINITY)
>> >
>> > Resources Defaults:
>> > resource-stickiness: 100
>> > failure-timeout: 60
>> > Operations Defaults:
>> > No defaults set
>> >
>> > Cluster Properties:
>> > cluster-infrastructure: corosync
>> > cluster-name: nfscluster
>> > dc-version: 1.1.13-10.el7_2.2-44eb2dd
>> > have-watchdog: false
>> > maintenance-mode: false
>> > stonith-enabled: false
>>
>> Configure *and test* stonith in pacemaker first, then DRBD will hook
>> into it and use it properly. DRBD simply asks pacemaker to do the fence,
>> but you currently don't have it setup.
>>
>> --
>> Digimer
>> Papers and Projects: https://alteeve.ca/w/
>> What if the cure for cancer is trapped in the mind of a person without
>> access to education?
>> _______________________________________________
>> drbd-user mailing list
>> drbd-user at lists.linbit.com
>> http://lists.linbit.com/mailman/listinfo/drbd-user
End of included message
--
twalberg at gmail.com
More information about the Users
mailing list