[Pacemaker] DRBD Split Brain after each reboot

andschais at gmail.com andschais at gmail.com
Tue Dec 22 03:26:44 EST 2009


Hi Michel,
Yes, I have try with a simpler configuration, I follow this steps:
1) Master/Slave ocf:linbit:drbd RA + ocf:heartbeat:Filesystem RA-> shutdown
-r now -> Ok, no split brain
2) ..+ ocf:heartbeat:IPaddr2 RA -> shutdown -r now -> Ok
3) ..+ heartbeat:drbdlinks RA -> shutdown -r now -> Ok
4) ..+ ocf:heartbeat:pgsql RA -> shutdown -r now -> Ok
5) ..+ ocf:custom:Asterisk RA -> shutdown -r now -> Ok
6) ..+ ocf:heartbeat:apache RA -> shutdown -r now -> Ok
7) ..+ lsb:postfix RA -> shutdown -r now -> Ok
8) ..+ lsb:dhcp3-server -> shutdown -r now -> Ok
9) ..+ lsb:lsb:atftpd -> shutdown -r now -> FAIL, Split brain
At this point I get the first split brain, after a lot of google search I
finally add a start-delay of ten seconds to Start and Promote operations for
drbd RA. After that I reboot a couple times and everything works fine, no
more split brain.
10) ..+ ocf:custom:JBoss RA -> shutdown -r now -> FAIL, Split brain
With this resource enabled I always get a split brain after "normal" reboot.
I tryed to
increase start-delay time on both.start and promote operation to 40 seconds,
that time is more than required to stop JBoss.
If I remove start-delay , I can see in secondary logs:

Dec 21 23:38:02 secondary drbd[17758]: DEBUG: r0: Calling drbdadm -c
/etc/drbd.conf primary r0
Dec 21 23:38:03 secondary lrmd: [19818]: info: RA output:
(drbd:0:promote:stderr) 0: State change failed: (-1) Multiple primaries not
allowed by config
Dec 21 23:38:03 secondary lrmd: [19818]: info: RA output:
(drbd:0:promote:stderr) Command 'drbdsetup 0 primary' terminated with exit
code 11
Dec 21 23:38:03 secondary drbd[17758]: ERROR: r0: Called drbdadm -c
/etc/drbd.conf primary r0
Dec 21 23:38:03 secondary lrmd: [19818]: info: RA output:
(drbd:0:promote:stderr) 2009/12/21_23:38:03 ERROR: r0: Called drbdadm -c
/etc/drbd.conf primary r0
Dec 21 23:38:03 secondary drbd[17758]: ERROR: r0: Exit code 11
Dec 21 23:38:03 secondary lrmd: [19818]: info: RA output:
(drbd:0:promote:stderr) 2009/12/21_23:38:03 ERROR: r0: Exit code 11
Dec 21 23:38:03 secondary drbd[17758]: ERROR: r0: Command output:
Dec 21 23:38:03 secondary lrmd: [19818]: info: RA output:
(drbd:0:promote:stderr) 2009/12/21_23:38:03 ERROR: r0: Command output:
Dec 21 23:38:03 secondary lrmd: [19818]: info: RA output:
(drbd:0:promote:stdout)
Dec 21 23:38:03 secondary drbd[17758]: DEBUG: r0: Calling drbdadm -c
/etc/drbd.conf primary r0
Dec 21 23:38:04 secondary kernel: [215495.004740] tg3: eth1: Link is down.
Dec 21 23:38:04 secondary lrmd: [19818]: info: RA output:
(drbd:0:promote:stderr) 0: State change failed: (-1) Multiple primaries not
allowed by config
Dec 21 23:38:04 secondary lrmd: [19818]: info: RA output:
(drbd:0:promote:stderr) Command 'drbdsetup 0 primary' terminated with exit
code 11
Dec 21 23:38:04 secondary drbd[17758]: ERROR: r0: Called drbdadm -c
/etc/drbd.conf primary r0
Dec 21 23:38:04 secondary lrmd: [19818]: info: RA output:
(drbd:0:promote:stderr) 2009/12/21_23:38:04 ERROR: r0: Called drbdadm -c
/etc/drbd.conf primary r0
Dec 21 23:38:04 secondary drbd[17758]: ERROR: r0: Exit code 11
Dec 21 23:38:04 secondary lrmd: [19818]: info: RA output:
(drbd:0:promote:stderr) 2009/12/21_23:38:04 ERROR: r0: Exit code 11
Dec 21 23:38:04 secondary drbd[17758]: ERROR: r0: Command output:
Dec 21 23:38:04 secondary lrmd: [19818]: info: RA output:
(drbd:0:promote:stderr) 2009/12/21_23:38:04 ERROR: r0: Command output:
Dec 21 23:38:04 secondary lrmd: [19818]: info: RA output:
(drbd:0:promote:stdout)
Dec 21 23:38:05 secondary drbd[17758]: DEBUG: r0: Calling drbdadm -c
/etc/drbd.conf primary r0
Dec 21 23:38:06 secondary kernel: [215496.595684] block drbd0: PingAck did
not arrive in time.
Dec 21 23:38:06 secondary kernel: [215496.602119] tg3: eth1: Link is up at
100 Mbps, full duplex.
Dec 21 23:38:06 secondary kernel: [215496.602122] tg3: eth1: Flow control is
off for TX and off for RX.
Dec 21 23:38:06 secondary kernel: [215496.638538] block drbd0: peer( Primary
-> Unknown ) conn( Connected -> NetworkFailure ) pdsk( UpToDate -> DUnknown
)
Dec 21 23:38:06 secondary kernel: [215496.638547] block drbd0: asender
terminated
Dec 21 23:38:06 secondary kernel: [215496.638550] block drbd0: Terminating
asender thread
Dec 21 23:38:06 secondary kernel: [215496.638589] block drbd0: short read
expecting header on sock: r=-512
Dec 21 23:38:06 secondary kernel: [215496.697734] block drbd0: Connection
closed
Dec 21 23:38:06 secondary kernel: [215496.697734] block drbd0: conn(
NetworkFailure -> Unconnected )
Dec 21 23:38:06 secondary kernel: [215496.697734] block drbd0: receiver
terminated
Dec 21 23:38:06 secondary kernel: [215496.697734] block drbd0: Restarting
receiver thread
Dec 21 23:38:06 secondary kernel: [215496.697734] block drbd0: receiver
(re)started
Dec 21 23:38:06 secondary kernel: [215496.697734] block drbd0: helper
command: /sbin/drbdadm fence-peer minor-0
Dec 21 23:38:07 secondary crm-fence-peer.sh[17839]: invoked for r0

Means that I'm having communication failure due to network goes down too
fast or that secondary wants to be Master before primary can be slave?...or
both? :-)

Thanks for help!!
Andres



2009/12/21 andschais at gmail.com <andschais at gmail.com>

> Hi all,
>
> I'm getting troubles with a Pacemaker+DRBD 2 nodes cluster. I am trying to
> solve it for about a week, I really need help!!!
> If I disconnect power cord the failover works great, resources migrate to
> secondary node and back to primary when I turn it on.
> But when turn off primary node with a "shutdown -r now" command, I always
> finish with a split brian. That's not all, If a put just a few resources
> (for example: virtual IP, DRBD, Apache and PostgreSQL) split brain does not
> take place, but at the moment I put 8 or 9 resources (specially when one of
> those resources is JBoss AS) I always get split brain...
> Can someone give me some hints?
>
> My systems are:
>
> OS: Debian Lenny 2.6.26-2-686
> Corosync 1.1.2
> DRBD 8.3.6
>
> And my configuration files are:
>
> /etc/corosync/corosync.conf
>
> # Please read the openais.conf.5 manual page
> totem {
>         version: 2
>         # How long before declaring a token lost (ms)
>         token: 3000
>         # How many token retransmits before forming a new configuration
>         token_retransmits_before_loss_const: 10
>         # How long to wait for join messages in the membership protocol
> (ms)
>         join: 60
>         # How long to wait for consensus to be achieved before starting a
> new round of membership configuration (ms)
>         consensus: 1500
>         # Turn off the virtual synchrony filter
>         vsftype: none
>         # Number of messages that may be sent by one processor on receipt
> of the token
>         max_messages: 20
>         # Limit generated nodeids to 31-bits (positive signed integers)
>         clear_node_high_bit: yes
>         # Disable encryption
>         secauth: on
>         # How many threads to use for encryption/decryption
>         threads: 0
>         # Optionally assign a fixed node id (integer)
>         # nodeid: 1234
>         # This specifies the mode of redundant ring, which may be none,
> active, or passive.
>         rrp_mode: passive
>         interface {
>                 # The following values need to be set based on your
> environment
>                 ringnumber: 0
>                 bindnetaddr: 172.16.1.0
>                 mcastaddr: 226.94.1.1
>                 mcastport: 5405
>         }
>         interface {
>                 # The following values need to be set based on your
> environment
>                 ringnumber: 1
>                 bindnetaddr: 10.186.68.0
>                 mcastaddr: 226.94.2.1
>                 mcastport: 5405
>         }
> }
> amf {
>         mode: disabled
> }
> service {
>         # Load the Pacemaker Cluster Resource Manager
>         ver:       0
>         name:      pacemaker
> }
> aisexec {
>         user:   root
>         group:  root
> }
> logging {
>     to_stderr: yes
>     debug: on
>     timestamp: on
>     to_file: yes
>     logfile: /var/log/corosync.log
>     to_syslog: no
>     syslog_facility: daemon
> }
> }
>
>
> /etc/drbd.conf
>
> global {
>     usage-count yes;
> }
> common {
>     syncer { rate 33M; }
> }
> resource r0 {
>     protocol C;
>     handlers {
>        pri-on-incon-degr "/usr/lib/drbd/notify-pri-on-incon-degr.sh;
> /usr/lib/drbd/notify-emergency-reboot.sh; echo b > /proc/sysrq-trigger ;
> reboot -f";
>        pri-lost-after-sb "/usr/lib/drbd/notify-pri-lost-after-sb.sh;
> /usr/lib/drbd/notify-emergency-reboot.sh; echo b > /proc/sysrq-trigger ;
> reboot -f";
>        local-io-error "/usr/lib/drbd/notify-io-error.sh;
> /usr/lib/drbd/notify-emergency-shutdown.sh; echo o > /proc/sysrq-trigger ;
> halt -f";
>        fence-peer "/usr/lib/drbd/crm-fence-peer.sh";
>        after-resync-target "/usr/lib/drbd/crm-unfence-peer.sh";
>        outdate-peer "/usr/lib/drbd/outdate-peer.sh";
>        split-brain "/usr/lib/drbd/notify-split-brain.sh root at localhost";
>     }
>     startup {
>         degr-wfc-timeout 30;
>         wfc-timeout 30;
>     }
>     disk {
>         fencing resource-only;
>         on-io-error   detach;
>     }
>     net {
>         after-sb-0pri disconnect;
>         after-sb-1pri disconnect;
>         after-sb-2pri disconnect;
>         rr-conflict disconnect;
>     }
>
>     on primary {
>         device     /dev/drbd0;
>         disk       /dev/vg00/drbd;
>         address    172.16.1.1:7788;
>         meta-disk  internal;
>     }
>     on secondary {
>         device     /dev/drbd0;
>         disk       /dev/vg00/drbd;
>         address    172.16.1.2:7788;
>         meta-disk  internal;
>     }
> }
>
>
> and my crm config
>
> <configuration>
>     <crm_config>
>       <cluster_property_set id="cib-bootstrap-options">
>         <nvpair id="cib-bootstrap-options-no-quorum-policy"
> name="no-quorum-policy" value="ignore"/>
>         <nvpair id="cib-bootstrap-options-stonith-enabled"
> name="stonith-enabled" value="false"/>
>         <nvpair id="cib-bootstrap-options-expected-quorum-votes"
> name="expected-quorum-votes" value="2"/>
>         <nvpair id="cib-bootstrap-options-last-lrm-refresh"
> name="last-lrm-refresh" value="1261424411"/>
>         <nvpair id="cib-bootstrap-options-dc-version" name="dc-version"
> value="1.0.6-cebe2b6ff49b36b29a3bd7ada1c4701c7470febe"/>
>         <nvpair id="cib-bootstrap-options-cluster-infrastructure"
> name="cluster-infrastructure" value="openais"/>
>       </cluster_property_set>
>     </crm_config>
>     <nodes>
>       <node uname="primary" type="normal" id="primary">
>         <instance_attributes id="nodes-primary">
>           <nvpair name="standby" id="nodes-primary-standby" value="off"/>
>         </instance_attributes>
>       </node>
>       <node uname="secondary" type="normal" id="secondary">
>         <instance_attributes id="nodes-secondary">
>           <nvpair name="standby" id="nodes-secondary-standby" value="off"/>
>         </instance_attributes>
>       </node>
>     </nodes>
>     <resources>
>       <master id="ms-drbd">
>         <meta_attributes id="ms-drbd-meta_attributes">
>           <nvpair id="ms-drbd-meta_attributes-master-max" name="master-max"
> value="1"/>
>           <nvpair id="ms-drbd-meta_attributes-master-node-max"
> name="master-node-max" value="1"/>
>           <nvpair id="ms-drbd-meta_attributes-clone-max" name="clone-max"
> value="2"/>
>           <nvpair id="ms-drbd-meta_attributes-clone-node-max"
> name="clone-node-max" value="1"/>
>           <nvpair id="ms-drbd-meta_attributes-notify" name="notify"
> value="true"/>
>           <nvpair id="ms-drbd-meta_attributes-globally-unique"
> name="globally-unique" value="false"/>
>           <nvpair name="target-role"
> id="ms-drbd-meta_attributes-target-role" value="Started"/>
>         </meta_attributes>
>         <primitive class="ocf" id="drbd" provider="linbit" type="drbd">
>           <instance_attributes id="drbd-instance_attributes">
>             <nvpair id="drbd-instance_attributes-drbd_resource"
> name="drbd_resource" value="r0"/>
>           </instance_attributes>
>           <operations>
>             <op id="drbd-monitor-59s" interval="59s" name="monitor"
> role="Master" timeout="30s"/>
>             <op id="drbd-monitor-60s" interval="60s" name="monitor"
> role="Slave" timeout="30s"/>
>             <op id="drbd-start-0s" interval="0s" name="start"
> start-delay="10s"/>
>             <op id="drbd-promote-0s" interval="0s" name="promote"
> start-delay="10s"/>
>           </operations>
>         </primitive>
>       </master>
>       <group id="p-group">
>         <primitive class="ocf" id="fs" provider="heartbeat"
> type="Filesystem">
>           <instance_attributes id="fs-instance_attributes">
>             <nvpair id="fs-instance_attributes-fstype" name="fstype"
> value="ext3"/>
>             <nvpair id="fs-instance_attributes-directory" name="directory"
> value="/drbd"/>
>             <nvpair id="fs-instance_attributes-device" name="device"
> value="/dev/drbd0"/>
>           </instance_attributes>
>           <meta_attributes id="fs-meta_attributes">
>             <nvpair id="fs-meta_attributes-is-managed" name="is-managed"
> value="true"/>
>           </meta_attributes>
>         </primitive>
>         <primitive class="ocf" id="ip" provider="heartbeat" type="IPaddr2">
>           <instance_attributes id="ip-instance_attributes">
>             <nvpair id="ip-instance_attributes-ip" name="ip"
> value="10.186.68.1"/>
>             <nvpair id="ip-instance_attributes-broadcast" name="broadcast"
> value="10.186.68.127"/>
>             <nvpair id="ip-instance_attributes-cidr_netmask"
> name="cidr_netmask" value="25"/>
>           </instance_attributes>
>           <operations>
>             <op id="ip-monitor-10s" interval="10s" name="monitor"/>
>           </operations>
>         </primitive>
>         <primitive class="heartbeat" id="drbdlinks" type="drbdlinks">
>           <operations>
>             <op id="drbdlinks-monitor-60s" interval="60s" name="monitor"/>
>           </operations>
>         </primitive>
>         <primitive class="ocf" id="postgresql" provider="heartbeat"
> type="pgsql">
>           <instance_attributes id="postgresql-instance_attributes">
>             <nvpair id="postgresql-instance_attributes-pgctl" name="pgctl"
> value="/usr/lib/postgresql/8.3/bin/pg_ctl"/>
>             <nvpair id="postgresql-instance_attributes-psql" name="psql"
> value="/usr/bin/psql"/>
>             <nvpair id="postgresql-instance_attributes-pgdata"
> name="pgdata" value="/var/lib/postgresql/8.3/main"/>
>             <nvpair id="postgresql-instance_attributes-pgdba" name="pgdba"
> value="postgres"/>
>             <nvpair id="postgresql-instance_attributes-pgdb" name="pgdb"
> value="postgres"/>
>             <nvpair id="postgresql-instance_attributes-logfile"
> name="logfile" value="/var/log/postgresql/postgresql-8.3-main.log"/>
>           </instance_attributes>
>           <operations>
>             <op id="postgresql-monitor-60s" interval="60s" name="monitor"
> timeout="30s"/>
>           </operations>
>         </primitive>
>         <primitive class="ocf" id="asterisk" provider="custom"
> type="Asterisk">
>           <operations>
>             <op id="asterisk-monitor-60s" interval="60s" name="monitor"
> start-delay="30s" timeout="30s"/>
>           </operations>
>         </primitive>
>         <primitive class="lsb" id="postfix" type="postfix"/>
>         <primitive class="ocf" id="apache2" provider="heartbeat"
> type="apache">
>           <instance_attributes id="apache2-instance_attributes">
>             <nvpair id="apache2-instance_attributes-configfile"
> name="configfile" value="/etc/apache2/apache2.conf"/>
>           </instance_attributes>
>           <operations>
>             <op id="apache2-monitor-60s" interval="60s" name="monitor"/>
>           </operations>
>         </primitive>
>         <primitive class="lsb" id="dhcp" type="dhcp3-server"/>
>         <primitive class="ocf" id="jboss" provider="custom" type="JBoss">
>           <instance_attributes id="jboss-instance_attributes">
>             <nvpair id="jboss-instance_attributes-java_home"
> name="java_home" value="/opt/java/"/>
>             <nvpair id="jboss-instance_attributes-jboss_home"
> name="jboss_home" value="/opt/jboss"/>
>           </instance_attributes>
>           <operations>
>             <op id="jboss-monitor-60s" interval="60s" name="monitor"
> start-delay="100s" timeout="30s"/>
>             <op id="jboss-start-0s" interval="0s" name="start"
> timeout="99s"/>
>           </operations>
>         </primitive>
>       </group>
>     </resources>
>     <constraints>
>       <rsc_colocation id="p-group-on-ms-drbd" rsc="p-group"
> score="INFINITY" with-rsc="ms-drbd" with-rsc-role="Master"/>
>       <rsc_location id="ms-drbd-master-on-primary" rsc="ms-drbd">
>         <rule id="ms-drbd-master-on-primary-rule" role="Master"
> score="100">
>           <expression attribute="#uname"
> id="ms-drbd-master-on-primary-expression" operation="eq" value="primary"/>
>         </rule>
>       </rsc_location>
>       <rsc_order first="ms-drbd" first-action="promote"
> id="ms-drbd-before-group" score="INFINITY" then="p-group"
> then-action="start"/>
>     </constraints>
>     <rsc_defaults/>
>     <op_defaults/>
>   </configuration>
>
> Thanks in advance.
> Andres.
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://oss.clusterlabs.org/pipermail/pacemaker/attachments/20091222/a546cc80/attachment-0001.htm>


More information about the Pacemaker mailing list