DRBD在CentOS 4.5上的示例配置
什么是DRBD?
DRBD是分布式复制块设备的缩写。 DRBD是一种旨在构建高可用性群集的块设备。 这是通过(专用)网络镜像整个块设备来完成的。 您可以将其视为网络RAID1。
预配置要求:
我使用以下系统设置的两个节点:
- cnode1.rnd(hostname),IP地址为172.16.4.80。 操作系统CentOS 4.5,18 GB的两个SCSI硬盘。 关于分区我在cnode1.rnd上使用了以下方案:
- cnode2.rnd(hostname),IP地址为172.16.4.81。 操作系统CentOS 4.5一个IDE驱动器10 GB。 在cnode2.rnd上使用了以下分区方案:
/ dev / sda1 / 13257MB ext3主
/ dev / sda2 4095MB交换主
/ dev / sdb1 umounted 128MB ext3 primary(对于DRBD的元数据)
/ dev / sdb2 umounted 4306MB ext3 primary(用作DRBD的磁盘)
/ dev / hda1 / 4503MB ext3主
/ dev / hda2 769MB交换主
/ dev / hda3 unmounted 128MB ext3 primary(用于DRBD的元数据)
/ dev / hda4 unmounted 4306MB ext3; 主要(用作DRBD的磁盘)
分区的大小和名称可能会根据磁盘容量和使用的硬盘而有所不同。 您可以根据需要定义分区方案。
我的/ etc / hosts
文件在两个节点(cnode1.rnd&cnode2.rnd)看起来像这样:
127.0.0.1 localhost.localdomain localhost 172.16.4.80 cnode1.rnd cnode2 172.16.4.81 cnode2.rnd cnode3
DRBD安装:
在cnode1.rnd和cnode2.rnd上安装DRBD软件和DRBD的内核模块:
yum install -y kmod-drbd drbd
使用insmod加载DRBD的内核模块:
insmod /lib/modules/2.6.9-55.0.9.EL/extra/drbd.ko
用lsmod验证该模块是否加载。 如果看到DRBD,则转到样品配置部分。
配置DRBD:
DRBD的配置文件是/etc/drbd.conf
。 因此,我们将编辑此文件并对其进行以下更改,并将其复制到另一个节点( /etc/drbd.conf
在两个节点上都相同)。
在cnode1.rnd上使用任何编辑器编辑这个文件。 我正在使用vi:
vi /etc/drbd.conf
resource r0 { protocol C; incon-degr-cmd "halt -f"; startup { degr-wfc-timeout 120; # 2 minutes. } disk { on-io-error detach; } net { } syncer { rate 3M; group 1; al-extents 257; } on cnode1.rnd { device /dev/drbd0; disk /dev/sdb2; address 172.16.4.80:7789; meta-disk /dev/sdb1[0]; } on cnode2.rnd { device /dev/drbd0; disk /dev/hda4; address 172.16.4.81:7789; meta-disk /dev/hda3[0]; } }
保存更改并将其复制到另一个节点(cnode2.rnd):
scp /etc/drbd.conf root@172.16.4.81:/etc/
现在让我们在两个节点上启动DRBD守护程序,但在此之前,我们要在下次重新启动时启动DRBD守护程序。 为此,我们将在两个节点上使用命令chkconfig。
chkconfig --level 235 drbd on
/etc/init.d/drbd start
您会发现DRBD已经启动了同步过程。 你可以看到它运行:
/etc/init.d/drbd status
要么
cat /proc/drbd
drbd.conf配置技术细节:
协议:
- 数据写入磁盘并发送到网络后,写操作即可完成。
- 一旦接收确认到达,B写操作就完成了。
- 一旦写入确认到达,C写入操作就完成了。
主机名:
应该完全匹配输出
uname -n
设备:
要使用的设备节点:/ dev / drbd0 - DRBD块设备。
地址,端口:
要绑定到本地或连接到伙伴节点的inet地址和端口。
元盘:
用于存储元数据的磁盘。 DRBD允许您将其元数据放在相同的后备设备上,其中放置实际可用的生产数据(内部元数据),或者在单独的块设备(外部元数据)上。 我已经在外部元数据块设备上为元数据分配了128 MB。 但是,您可以关注下面给出的表格来估计元数据大小
阻止装置大小 | DRBD元数据 |
1 GB | 2 MB |
100 GB | 5 MB |
1 TB | 33 MB |
4 TB | 128 MB |
Incon-degr-cmd:
如果集群以降级模式启动,但知道数据不一致(较低级设备报告io-error),应该做什么。
on-io-error分离:
如果较低级设备报告io-error,节点将丢弃其后备存储设备,并以无盘模式继续。
degr-wfc-timeout:
等待连接超时,如果此节点是降级的群集。 这是使用而不是wfc-timeout(等待集群超时)。
同步:
限制重新同步过程使用的带宽。
组:
一组中的所有设备都将重新同步并行。 组的重新同步按升序序列化。
范围:
自动执行热区检测。 通过该参数,您可以控制热区域可以获得多少。 每个扩展区标记4M的后备存储(=低级设备)。 如果主节点意外离开群集,则在重新加入失败节点后,活动集所覆盖的区域必须重新同步。 数据结构存储在元数据区中,因此活动集的每次更改都是对元数据设备的写操作。 更多数量的扩展区域提供更长的重新同步时间,但对元数据的更新更少。
做和不要:
不要尝试将DRBD安装在二级状态。 一旦设置了DRBD,就不要绕过它或直接访问底层设备!
测试DRBD:
使cnode1.rnd主并将主节点(cnode1.rnd)的块设备装载到/ mnt / disk上
:
drbdsetup /dev/drbd0 primary --do-what-I-say
mount /dev/drbd0 /mnt/disk
复制一些文件和文件夹:
cp -r /root/documents /mnt/disk
现在umount DRBD的块设备,并使主节点“secondary”:
umount /mnt/disk/
drbdadm secondary all
将cnode2.rnd主/挂载块设备放在/ mnt / disk上
:
drbdsetup /dev/drbd0 primary --do-what-I-say
mount /dev/drbd0 /mnt/disk
你会发现文件
存在于cnode2.rnd上。