DRBD
DRBD is the service used for synchronisation of data (usually web and database files) on a cluster or HA solution. Not to be confused with Unision (which is typically used for synchronisation of config files due to not updating files as quickly as DRBD).
Installing
yum install drbd-utils* drbd-dkms
apt-get install drbd-utils* drbd-dkms
may need to add repos for this.
The above installs both the DRBD service files, as well as the required kernel module.
Check that the kernel module is loaded with:
modprobe drbd
Configuration of disks for DRBD
https://clusterlabs.org/pacemaker/doc/2.1/Clusters_from_Scratch/epub/shared-storage.html
DRBD will need its own block device on each node.
In this example, I've added a 10GB disk to each node,
root@b4sed-02:/etc# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS
sda 8:0 0 19.1G 0 disk
├─sda1 8:1 0 18.8G 0 part /
├─sda14 8:14 0 1M 0 part
└─sda15 8:15 0 256M 0 part /boot/efi
sdb 8:16 0 10G 0 disk
└─VG_data-DRBD2 253:0 0 10G 0 lvm
sr0 11:0 1 1024M 0 rom
root@b4sed-02:/home# pvcreate /dev/sdb
Physical volume "/dev/sdb" successfully created.
root@b4sed-02:/home# vgcreate VG_data /dev/sdb
Volume group "VG_data" successfully created
root@b4sed-02:/home# vgdisplay | grep -e Name -e Free
VG Name VG_data
Free PE / Size 2559 / <10.00 GiB
root@b4sed-02:/home# lvcreate --name DRBD2 -l2559 VG_data
Logical volume "DRBD2" created.
Configuration of DRBD
typically configured via /etc/drbd.conf
example configuration from my setup:
resource wwwdata {
protocol C;
meta-disk internal;
device /dev/drbd1;
syncer {
verify-alg sha1;
}
net {
allow-two-primaries;
}
on b4sed-01 {
disk /dev/VG_data/DRBD1;
address 10.0.0.2:7789;
}
on b4sed-02 {
disk /dev/VG_data/DRBD2;
address 10.0.0.3:7789;
}
}
Once configuration file is in place, DRBD can be deployed via the below commands:
drbdadm create-md resourcename #wwwdata in my example
modprobe drbd
drbdadm up resourcename
as a side note, in my example I was getting errors relating to the kernel module, a kernel update and reboot resolved this.
Check status
drbdadm status
or
cat /proc/drbd