[Linux-HA] DBRD - split brain - and HA is happily migrating

Thomas Glanzmann thomas at glanzmann.de
Tue Jan 1 14:34:09 MST 2008


Hello,
I have drbd (newest version; same goes for heartbeat) running as a
master/slave ressource on the latest heart beat ressource and had the
following problem. I had a split brain situation and heartbeat made it
possible to migrate from one node to another and I wonder how that is
possible? How do other people handle this situation. My setup so far is
the following:

<configuration>
        <crm_config>
                <cluster_property_set id="cib-bootstrap-options">
                        <attributes>
                        </attributes>
                </cluster_property_set>
        </crm_config>

        <resources>
                <master_slave id="ms-drbd0">
                        <meta_attributes id="ma-ms-drbd0">
                                <attributes>
                                        <nvpair id="ma-ms-drbd0-1" name="clone_max" value="2"/>
                                        <nvpair id="ma-ms-drbd0-2" name="clone_node_max" value="1"/>
                                        <nvpair id="ma-ms-drbd0-3" name="master_max" value="1"/>
                                        <nvpair id="ma-ms-drbd0-4" name="master_node_max" value="1"/>
                                        <nvpair id="ma-ms-drbd0-5" name="notify" value="yes"/>
                                        <nvpair id="ma-ms-drbd0-6" name="globally_unique" value="false"/>
                                </attributes>
                        </meta_attributes>
                        <primitive id="drbd0" class="ocf" provider="heartbeat" type="drbd">
                                <instance_attributes id="ia-drbd0">
                                        <attributes>
                                                <nvpair id="ia-drbd0-1" name="drbd_resource" value="postgres"/>
                                        </attributes>
                                </instance_attributes>
                        </primitive>
                </master_slave>
                <group id="postgres-cluster">
                        <primitive class="ocf" provider="heartbeat" type="Filesystem" id="fs0">
                                <instance_attributes id="ia-fs0">
                                        <attributes>
                                                <nvpair id="ia-fs0-1" name="fstype" value="ext3"/>
                                                <nvpair name="directory" id="ia-fs0-2" value="/srv/postgres"/>
                                                <nvpair id="ia-fs0-3" name="device" value="/dev/drbd0"/>
                                        </attributes>
                                </instance_attributes>
                                <operations>
                                        <op id="fs0-monitor0" name="monitor" interval="60s" timeout="120s" start_delay="1m"/>
                                </operations>
                        </primitive>

                        <primitive class="ocf" provider="heartbeat" type="IPaddr2" id="ip0">
                                <instance_attributes id="ia-ip0">
                                        <attributes>
                                                <nvpair id="ia-ip0-1" name="ip" value="172.17.0.20"/>
                                                <nvpair id="ia-ip0-2" name="cidr_netmask" value="24"/>
                                                <nvpair id="ia-ip0-3" name="nic" value="eth0.2"/>
                                        </attributes>
                                </instance_attributes>
                                <operations>
                                        <op id="ip0-monitor0" name="monitor" interval="60s" timeout="120s" start_delay="1m"/>
                                </operations>
                        </primitive>

                        <primitive class="ocf" provider="heartbeat" type="pgsql" id="pgsql0">
                                <instance_attributes id="ia-pgsql0">
                                        <attributes>
                                                <nvpair id="ia-pgsql0-1" name="pgctl" value="/usr/lib/postgresql/8.1/bin/pg_ctl"/>
                                                <nvpair id="ia-pgsql0-2" name="start_opt" value="--config_file=/srv/postgres/etc/postgresql.conf"/>
                                                <nvpair id="ia-pgsql0-3" name="pgdata" value="/srv/postgres/data"/>
                                                <nvpair id="ia-pgsql0-4" name="logfile" value="/srv/postgres/postgresql.log"/>
                                        </attributes>
                                </instance_attributes>
                                <operations>
                                        <op id="pgsql0-monitor0" name="monitor" interval="60s" timeout="120s" start_delay="1m"/>
                                        <op id="pgsql0-start0" name="start" timeout="60s" prereq="nothing"/>
                                </operations>
                        </primitive>
                </group>
        </resources>

        <constraints>
                <rsc_location id="drbd0-placement-1" rsc="ms-drbd0">
                        <rule id="drbd0-rule-1" score="-INFINITY">
                                <expression id="exp-01" value="postgres-01" attribute="#uname" operation="ne"/>
                                <expression id="exp-02" value="postgres-02" attribute="#uname" operation="ne"/>
                        </rule>
                </rsc_location>

                <rsc_order id="postgres_promotes_ms-drbd0" from="postgres-cluster" action="start" to="ms-drbd0" to_action="promote"/>
                <rsc_colocation id="postgres_on_drbd0" to="ms-drbd0" to_role="master" from="postgres-cluster" score="infinity"/>
        </constraints>
</configuration>

        Thomas


More information about the Linux-HA mailing list