Setting up DRBD with OCSF2 on a Ubuntu 12.04 server for Primary/Primary

We run in a virtual environment and so we thought we would go with the virtual kernel for the latest linux kernls
We learned that we should NOT not in the case we want to use the OCFS2 distributed locking files system because ocfs2 did not have the correct modules so we would have had to doa  custom build of the modules so we decided against it.   we just went with the latest kernel,   and would install ocfs2 tools from the package manager.

DRBD on the other hand had to be downloaded, compiled and installed regardless of kernel,   here are the procedures,  these must be run on each of a pair of machines.
We assume that /dev/xvdb has a similar sized device on both machines.

apt-get install make gcc flex
wget xzvf drbd-8.4.4.tar.gz 
cd drbd-8.4.4/
./configure --prefix=/usr --localstatedir=/var --sysconfdir=/etc --with-km
make all

Connfigure both systems to be aware of eachother without dns /etc/hosts server1 server2

Create a configuration file at /etc/drbd.d/disk.res

resource r0 {
protocol C;
syncer { rate 1000M; }
startup {
wfc-timeout 15;
degr-wfc-timeout 60;
become-primary-on both;
net {
#requires a clustered filesystem ocfs2 for 2 prmaries, mounted simultaneously
after-sb-0pri discard-zero-changes;
after-sb-1pri discard-secondary;
after-sb-2pri disconnect;
cram-hmac-alg sha1;
shared-secret "sharedsanconfigsecret";
on server1 {
device /dev/drbd0;
disk /dev/xvdb;
meta-disk internal;
on server2 {
device /dev/drbd0;
disk /dev/xvdb;
meta-disk internal;


configure drbd to start on reboot verify that DRBD is running on both machines and reboot,  and verify again

update-rc.d drbd defaults
/etc/init.d/drbd start
drbdadm -- --force create-md r0
drbdadm up r0
cat /proc/drbd

at this point  you should see that both devices are connected Secondary/Secondary and Inconsistent/Inconsistent.
Now we start the sync fresh,   on server1 only both sides are blank so drbd should manage any changes from here on.  cat /proc/drbd will show UpToDate/UpToDate
Then we mark both primary and reboot to verify everything comes back up

server1>drbdadm -- --clear-bitmap new-current-uuid r0
server1>drbdadm primary r0
server2>drbdadm primary r0

I took a snapshot at this point
Now it is time to setup the OCFS2 clustered file system on top of the device first setup a /etc/ocfs2/cluster.conf

node_count = 2
name = mycluster
ip_port = 7777
ip_address =
number = 1
name = server1
cluster = mycluster
ip_port = 7777
ip_address =
number = 2
name = server2
cluster = mycluster

get the needed packages, configure them and setup for reboot,  when reconfiguring,   remember to put the name  of the cluster you want to start at boot up mycluster run the below on both machines

apt-get install ocfs2-tools
dpkg-reconfigure ocfs2-tools
mkfs.ocfs2 -L mycluster /dev/drbd0 #only run this on server1
mkdir -p /data
echo "/dev/drbd0  /data  ocfs2  noauto,noatime,nodiratime,_netdev  0 0" >> /etc/fstab
mount /data
touch /data/testfile.`hostname`
stat /data/testfile.*
rm /data/testfile* # you will only have to run this on one machine

So,  everything should be running on both computers at this point when things come backup make sure everythign is connected.
You can run these commands from either server

/etc/init.d/o2cb status
cat /proc/drbd