1.Drbd概念:
分布式复制块设备(DRBD技术)是一种基于软件的,无共享,复制的存储解决方案,在服务器之间的对块设备(硬盘,分区,逻辑卷等)进行镜像。
Drbd是由内核模块和相关脚本而构成的,用以构建高可用的集群,其实现方法是通过整个网络来镜像整个设备,运行用户在远程主机上建立一个本地块设备的实时镜像,与心跳线结合使用,也可以看作是一种网络RADI。
2.Drbd如何工作:
Drbd负责接收数据,把数据写到本地磁盘,然后发送给另一个主机,另一个主机将数据存到自己的磁盘中,目前,Drbd每次只运行对一个节点进行读写访问,对于网络故障切换已经够用,以后多版本将致支持两个节点进行读写存取。
3.Drbd与Ha的集群关系
一个Drbd系统是由两个节点构成,与Ha集群类似,也有主用节点和备用节点之分,在带有主要设备的节点上,应用程序和操作系统可以运行和访问Drbd设备(/dev/nbx)
在主节点写入的数据通过Drbd设备存储到主节点的磁盘设备中,同时,这个数据也会自动发送到备用节点相应的Drbd设备,最终写入备用节点的磁盘设备中,在备用节点上,Drbd只是将数据从Drbd设备写入到备用节点的磁盘设备中。
4.内部实现原理
5.Drbd协议说明
A数据一旦写入磁盘并发送到网络中就认为完成写入操作。
B收到接受确认就认为完成了写入操作。
C收到写入确认就认为完成了写入操作。
6.Drbd设备的三个进程
每个设备会有三个进程:
Drbd_worker 主程序。
Drbd_asender是prinmay上Drbd0的数据发送进程。
Drbd_receiver是secondary上Drbd0的数据接收进程。
7.安装Drbd
如图
8.磁盘准备
[root@node1 ~]# fdisk /dev/sdb
[root@node1 ~]# fdisk /dev/sdb
Device contains neither a valid DOS partition table, nor Sun, SGI or OSF disklabel
Building a new DOS disklabel with disk identifier 0xed7730ee.
Changes will remain in memory only, until you decide to write them.
After that, of course, the previous content won't be recoverable.
Warning: invalid flag 0x0000 of partition table 4 will be corrected by w(rite)
WARNING: DOS-compatible mode is deprecated. It's strongly recommended to
switch off the mode (command 'c') and change display units to
sectors (command 'u').
Command (m for help): p
Disk /dev/sdb: 5368 MB, 5368709120 bytes
255 heads, 63 sectors/track, 652 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0xed7730ee
Device Boot Start End Blocks Id System
Command (m for help): n
Command action
e extended
p primary partition (1-4)
p
Partition number (1-4): 1
First cylinder (1-652, default 1):
Using default value 1
Last cylinder, +cylinders or +size{K,M,G} (1-652, default 652): +1G
Command (m for help): w
The partition table has been altered!
Calling ioctl() to re-read partition table.
Syncing disks.
[root@node1 ~]# partx -a /dev/sdb 初始化磁盘
9.安装Drbd软件
配置前提:要保证时间同步,基于主机名访问。
[root@kali1 ~]# uname -a
Linux kali1.com 2.6.32-504.el6.x86_64 #1 SMP Wed Oct 15 04:27:16 UTC 2014 x86_64 x86_64 x86_64 GNU/Linux
http://drbd.linbit.com/download/mainline/
本地下载:http://yunpan.cn/cwRx7R6DRff99 访问密码 99bb
官方说明,最低系统内核要求2.6.33通过第三方下载以下两包并安装:
drbd84-utils-8.9.1-1.el6.elrepo.x86_64 提供配置文件和管理工具等
kmod-drbd84-8.4.5-504.1.el6.x86_64 提供库文件
[root@kali ~]# rpm -ivh kmod-drbd84-8.4.5-504.1.el6.x86_64.rpm drbd84-utils-8.9.1-1.el6.elrepo.x86_64.rpm
10.相关脚本配置文件
管理工具:
/usr/sbin/drbdadm
/usr/sbin/drbdmeta
/usr/sbin/drbdsetup
启动脚本:
/etc/rc.d/init.d/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的默认中进行继承而无须定义。
11.配置Drbd前需要注意:
1)mount drbd设备以前必须把设备切换到primary状态。
2)两个节点中,同一刻只能有一台处于primary状态,另一台处于secondary状态。
3)处于secondary状态的服务器上不能加载drbd设备。
4)主备服务器同步的两个分区大小最好相同,否则会浪费空间,因为drbd相当于RAID1。