As a further extension to using DRBD and Heartbeat together, you can enable dopd. The dopd daemon handles the situation where a DRBD node is out of date compared to the master and prevents the slave from being promoted to master in the event of a failure. This stops a situation where you have two machines that have been masters ending up different data on the underlying device.
For example, imagine that you have a two server DRBD setup, master and slave. If the DRBD connectivity between master and slave fails then the slave would be out of the sync with the master. If Heartbeat identifies a connectivity issue for master and then switches over to the slave, the slave DRBD device will be promoted to the primary device, even though the data on the slave and the master is not in synchronization.
      In this situation, with dopd enabled, the
      connectivity failure between the master and slave would be
      identified and the metadata on the slave would be set to
      Outdated. Heartbeat will then refuse to switch
      over to the slave even if the master failed. In a dual-host
      solution this would effectively render the cluster out of action,
      as there is no additional fail over server. In an HA cluster with
      three or more servers, control would be passed to the slave that
      has an up to date version of the DRBD device data.
    
      To enable dopd, you need to modify the
      Heartbeat configuration and specify dopd as
      part of the commands executed during the monitoring process. Add
      the following lines to your ha.cf file:
    
respawn hacluster /usr/lib/heartbeat/dopd apiauth dopd gid=haclient uid=hacluster
Make sure you make the same modification on both your primary and secondary nodes.
You will need to reload the Heartbeat configuration:
root-shell> /etc/init.d/heartbeat reload
      You will also need to modify your DRBD configuration by
      configuration the outdate-peer option. You will
      need to add the configuration line into the
      common section of
      /etc/drbd.conf on both hosts. An example of
      the full block is shown below:
    
common {
  handlers {
    outdate-peer "/usr/lib/heartbeat/drbd-peer-outdater";
  }
}
      Finally, set the fencing option on your DRBD
      configured resources:
    
resource my-resource {
  disk {
    fencing    resource-only;
  }
}
Now reload your DRBD configuration:
root-shell> drbdadmin adjust all
      You can test the system by unplugging your DRBD link and
      monitoring the output from /proc/drbd.
    


User Comments
Add your own comment.