一,什么是drbd
基于块设备在不同的高可用服务器之间同步和镜像数据的软件,块设备可以是磁盘分区,LVM逻辑卷或整块磁盘,相当于网络之间的RAID 1。
二,同步模式
(1)实时同步模式
数据写入到本地磁盘和远端所有服务器磁盘都成功后才会返回成功写入,这是drdb服务的协议C
(2)异步同步模式
当数据写入到本地磁盘后就返回成功写入,不管远端服务器是否写入成功。是drdb服务的协议A,B
三,3种同步复制协议
(1)协议A:异步复制协议,本地写成功后立即返回,数据放在发送buffer中,可能丢失。
(2)协议B:内存同步(半同步)复制协议。本地写成功并将数据发送到对方后立即返回,如果双机掉电,数据可能丢失。
(3)协议C:同步复制协议,本地和对方服务器磁盘都写成功确认后返回成功,如果单机掉电或单机磁盘损坏,数据不会丢失。
四,drdb的安装,两台都一样(环境和上一篇的heartbeat一样)
(1)创建分区
/dev/sdb1 存储设备(ext42G)
/dev/sdb2 meta分区(ext4 1G
(2)安装drbd
yum install gcc kernel-devel kernel-headers flex 备注:kernel-devel和kernel-headrs要和系统的内核版本一致
mkdir -p /usr/local/drbd/var/run/drbd
tar -zxvf drbd-8.4.4.tar.gz
cd drbd-8.4.4
./configure --prefix=/usr/local/drbd --with-km --with-heartbeat--sysconfdir=/etc
备注:
--with-km enable kernel module
- -with-heatbeat enable heartbeat integration
make KDIR=/usr/src/kernels/3.10.0-123.el7.x86_64
make install
modprobe drbd 加载到内核模块
lsmod | grep drbd
六,drbd的配置(两台一样)
1,配置文件
/etc/drbd.conf
#include"drbd.d/global_common.conf";
include "drbd.d/*.res";
common {
syncer {
rate 500M;
verify-alg crc32c;
}
net {
protocol C;
}
}
(2)/etc/drbd.d/r0.res
global {
usage-count no;
}
resource r0 {
onfamily1 {
device /dev/drbd0;
disk /dev/sdb1;
address 192.168.44.21:7788
meta-disk /dev/sdb2[0];
}
onfamily2 {
device /dev/drbd0;
disk /dev/sdb1
address 192.168.44.22:7788
meta-disk /dev/sdb2[0];
}
}
2,启动过程
(1)drbdadm --create-md r0 创建资源
出现如下创建成功
Device'0' is configured!
Command'drbdmeta 0 v08 /dev/sdb1 internal apply-al' terminated with exit code 20
(2)drbdadm up r0 启动资源
(3)drbdadm -- --overwrite-data-of-peerprimary r0 将主节点设置为主
主节点出现 Connected ro: Primary / Secondaryds:UpToDate/UpToDate
备节点出现 Connected ro:Secondary/Primaryds:UpToDate/UpToDate
即为成功同步,且主备都配置好
3,测试挂载及数据同步
(1)mount /dev/drbd0 /datatest 挂载磁盘
(2)cat /proc/drbd查看同步状态
(3) 查看备节点数据:
在主节点上drbdadm secondary all
在备节点上drbdadm primary all
drbdadm down r0
mount /dev/sdb1 /mnt 查看数据
若直接drbdadm down r0第1次会出现Command 'drbdsetup down r0' terminated with exit code 11的错误,测试第2次之后不会出现这样的问题