- 实验环境
主机 192.168.119.110 新磁盘 /dev/sdb 主机名 NFS1
从机 192.168.119.111 新磁盘 /dev/sdb 主机名 NFS2
关闭防火墙和SELINUX
两台主机分别添加hosts解析
vim /etc/hosts
- DRBD配置文件
DRBD的主配置文件为/etc/drbd.conf;为了管理的便捷性,目前通常会将些配置文件分成多个部分,且都保存至/etc/drbd.d目录中,主配置文件中仅使用”include”指令将这些配置文件片断整合起来。通常,/etc/drbd.d目录中的配置文件为global_common.conf和所有以.res结尾的文件。其中global_common.conf中主要定义global段和common段,而每一个.res的文件用于定义一个资源。
在配置文件中,global段仅能出现一次,且如果所有的配置信息都保存至同一个配置文件中而不分开为多个文件的话,global段必须位于配置文件的最开始处。目前global段中可以定义的参数仅有minor-count, dialog-refresh, disable-ip-verification和usage-count。
common段则用于定义被每一个资源默认继承的参数,可以在资源定义中使用的参数都可以在common段中定义。实际应用中,common段并非必须,但建议将多个资源共享的参数定义为common段中的参数以降低配置文件的复杂度。
resource段则用于定义drbd资源,每个资源通常定义在一个单独的位于/etc/drbd.d目录中的以.res结尾的文件中。资源在定义时必须为其命名,名字可以由非空白的ASCII字符组成。每一个资源段的定义中至少要包含两个host子段,以定义此资源关联至的节点,其它参数均可以从common段或drbd的默认中进行继承而无须定义。
net:网络配置相关的内容,可以设置是否允许双主节点(allow-two-primaries)等。
startup:启动时候的相关设置,比如设置启动后谁作为primary(或者两者都是primary:become-primary-on both)
syncer: 同步相关的设置。可以设置“重新”同步(re-synchronization)速度(rate)设置,也可以设置是否在线校验节点之间的数据一致性 (verify-alg 检测算法有md5,sha1以及crc32等)。数据校验可能是一个比较重要的事情,在打开在线校验功能后,我们可以通过相关命令(drbdadm verify resource_name)来启动在线校验。在校验过程中,drbd会记录下节点之间不一致的block,但是不会阻塞任何行为,即使是在该不一致的 block上面的io请求。当不一致的block发生后,drbd就需要有re-synchronization动作,而syncer里面设置的rate 项,主要就是用于re-synchronization的时候,因为如果有大量不一致的数据的时候,我们不可能将所有带宽都分配给drbd做re- synchronization,这样会影响对外提提供服务。rate的设置和还需要考虑IO能力的影响。如果我们会有一个千兆网络出口,但是我们的磁盘 IO能力每秒只有50M,那么实际的处理能力就只有50M,一般来说,设置网络IO能力和磁盘IO能力中最小者的30%的带宽给re- synchronization是比较合适的(官方说明)。另外,drbd还提供了一个临时的rate更改命令,可以临时性的更改syncer的rate值: drbdsetup /dev/drbd0 syncer -r 100M。这样就临时的设置了re-synchronization的速度为100M。不过在re-synchronization结束之后,你需要通过 drbdadm adjust resource_name 来让drbd按照配置中的rate来工作。
vim /etc/drbd.d/global_common.conf
global {
usage-count yes;
}
common {
protocol C;
handlers {
pri-on-incon-degr "/usr/lib/drbd/notify-pri-on-incon-degr.sh; /usr/lib/drbd/notify-emergency-reboot.sh; echo b > /proc/sysrq-trigger ; reboot - f";
pri-lost-after-sb "/usr/lib/drbd/notify-pri-lost-after-sb.sh; /usr/lib/drbd/notify-emergency-reboot.sh; echo b > /proc/sysrq-trigger ; reboot - f";
local-io-error "/usr/lib/drbd/notify-io-error.sh; /usr/lib/drbd/notify-emergency-shutdown.sh; echo o > /proc/sysrq-trigger ; halt -f";
}
startup {
}
options {
}
disk {
on-io-error detach;
}
net {
}
}
vim /etc/drbd.d/nfsdrbd.res #(配置资源文件)"/etc/drbd.d/"下是没有*.res这个文件的需要手动创建
resource web { #资源名为"web"
on NFS1 { #设置节点cluster1,注意名字要与`uname -n` 名字一致,否则会报错
device /dev/drbd0; #指出drbd的标示名,在双方节点上,此DRBD设备的设备文件;一般为/dev/drbdN
disk /dev/sdb1; #指出作为drbd的设备,提供存储的设备
address 192.168.119.110:7789; #指定ip和端口号
meta-disk internal; #网络通信属性,指定drbd的元数据在本机
}
on NFS2 {
device /dev/drbd0;
disk /dev/sdb1;
address 192.168.119.111:7789;
meta-disk internal;
}
}
复制上述两份文件到另外一台server上
- 在两个节点上初始化已定义的资源并启动服务
创建设备元数据(两台server都需要操作)
drbdadm create-md web(resource名字,自定义)
启动
drbdadm up web 也可以用 systemctl start drbd
常看状态
drbd-overview 也可以用 drbdadm status web
查看另一台 server状态
可以看到两台server都是secondary状态,我们需要将一台server设置成primary状态
在要设置为Primary的server上执行如下命令(我这里是NFS1上)
drbdadm primary web
再次查看状态
可以看到NFS1上状态已经为primary
- 创建文件系统(CentOS7默认使用xfs文件系统)
将新磁盘/dev/sdb分区(两台server操作)
fdisk /dev/sdb
注意:文件系统的挂载只能在Primary节点进行,因此,也只有在设置了主节点后才能对drbd设备进行格式化:
mkfs.xfs /dev/drbd0
mkdir /data -p
mount /dev/drbd0 /data
- Primary和Secondary节点的切换
要切换两个节点的角色,只能在先将原有的Primary节点设置为Secondary后,才能原来的Secondary节点设置为Primary。
主节点上操作
先将/data umount掉
umount /data
在将drbd降级
drbdadm secondary web
然后在从节点上操作
drbdadm primary web
mkdir -p /data
mount /dev/drbd0 /data