[Pacemaker] DRBD Split Brain after each reboot

andschais at gmail.com andschais at gmail.com
Mon Dec 21 15:22:44 EST 2009


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/20091221/951d4437/attachment-0001.htm>


More information about the Pacemaker mailing list