Example haresources from $charity

server-nfs-01 charitynfs IPaddr::10.0.1.90/27/eth0 drbddisk::nfs Filesystem::/dev/drbd1::/srv/nfs::xfs

Example ha.cf from $charity

# debug output
debugfile /var/log/ha-debug.log
# all other logs
logfile /var/log/ha-log.log
logfacility local0
keepalive 1
deadtime 10
warntime 3
initdead 20
bcast eth0
auto_failback off
# STONITH
#stonith_host * external/ssh 10.0.1.90 root nottherootpassword
node server-nfs-01
node server-nfs-02

Example DRBD conf from $charity

global {
     usage-count no;
}
common {
     syncer {
        rate 100M;
    }
}
resource nfs {
    protocol C;
    startup {
       degr-wfc-timeout 120; # 2 minutes.
   }
   disk {
      # on-io-error detach;
   }
   net {
      cram-hmac-alg sha1;
      shared-secret "removed";
   }
   on server-nfs-01 {
      device /dev/drbd1;
      disk /dev/mapper/ubuntu-SrvNfs;
      address 10.0.1.91:7788;
      meta-disk /dev/mapper/ubuntu-drbd[0];
   }
   on server-nfs-02
      device /dev/drbd1;
      disk /dev/mapper/ubuntu-SrvNfs;
      address 10.0.1.92:7788;
      meta-disk /dev/mapper/ubuntu-drbd[0];
   }
}

Playing with CouchDB

Experimenting with a bunch of VMs and CouchDB for
scalable, replicated filesystem purposes.

I like the way it stores any object as a 'document' in its database, doesn't depend on another
database backend like MogileFS seems to.

I'm slightly wary of the fact that the replication isn't built as part of the daemon's
responsibility automatically on the fly, by way of which you could control via the config ini
file. Instead replication is a manually executed process either via the web interface or via

Howto: Highly available Zimbra cluster using Heartbeat and DRBD

This morning I successfully set up a clustered, high availability pair of Zimbra (VMware virtual) servers, synced with DRBD and using Heartbeat to failover to the secondary standby server.

This is a howto that tries to cover *all* the steps, as there seems to be a great series of Howto's on the subject that in one way or another, leave something out with 'I am assuming you already (insert service here) working and will not cover this' clauses. In particular I ran into a few small hurdles with DRBD and hostnames and whatnot, so tried to document what I needed to do to make it work.