Distributed Replicated Block Device(DRBD)是一个用软件实现的、无共享的、服务器之间镜像块设备内容的存储复制解决方案。
数据镜像:实时、透明、同步(所有服务器都成功后返回)、异步(本地服务器成功后返回)
DBRD的核心功能通过Linux的内核实现,最接近系统的IO栈,但它不能神奇地添加上层的功能比如检测到EXT3文件系统的崩溃。
DBRD的位置处于文件系统以下,比文件系统更加靠近操作系统内核及IO栈。
实验背景:
本实验部署DRBD + Heartbeat + NFS 环境,建立一个高可用(HA)的文件服务器集群。在方案中,通过DRBD保证了服务器数据的完整性和一致性。DRBD类似于一个网络RAID-1功能。当你将数据写入本地文件系统时,数据还将会被发送到网络中另一台主机上,以相同的形式记录在一个另文件系统中。主节点与备节点的数据可以保证实时相互同步。当本地主服务器出现故障时,备份服务器上还会保留有一份相同的数据,可以继续使用。在高可用(HA)中使用DRBD功能,可以代替使用一个共享盘阵。因为数据同时存在于本地主服务器和备份服务器上。切换时,远程主机只要使用它上面的那份备份数据,就可以继续提供主服务器上相同的服务,并且client用户对主服务器的故障无感知。
实验拓扑:
实验步骤:
一、准备环境
1、系统环境
# uname –r #内核版本
2.6.18-164.el5
# cat /etc/RedHat-release #查看系统信息
Red Hat Enterprise Linux Server release 5.4 (Tikanga)
2、修改主机名称等
在节点1上进行修改
# hostname node1.a.com #修改主机名称
# vim /etc/sysconfig/network #修改文件
NETWORKING=yes
NETWORKING_IPV6=no
HOSTNAME=node1.a.com
之后退出再次登陆
# hostname #查看名称
node1.a.com
# vim /etc/hosts #修改hosts文件
127.0.0.1 localhost.localdomain localhost
::1 localhost6.localdomain6 localhost6
192.168.10.20 node1.a.com
192.168.10.30 node2.a.com
在节点2上进行修改
# hostname node2.a.com #修改主机名称
# vim /etc/sysconfig/network #修改文件
NETWORKING=yes
NETWORKING_IPV6=no
HOSTNAME=node2.a.com
之后退出再次登陆
# vim /etc/hosts #修改hosts文件
127.0.0.1 localhost.localdomain localhost
::1 localhost6.localdomain6 localhost6
192.168.10.20 node1.a.com
192.168.10.30 node2.a.com
3、同步时钟
要求两个节点上的始终必须要一致。
[root@node2 ~]# hwclock -s #同步时钟
[root@node1 ~]# hwclock –s
4、新建分区
在节点1上新建分区
[root@node1 ~]# fdisk /dev/sda
1) software that runs at boot time (e.g., old versions of LILO)
2) booting and partitioning software from other OSs
(e.g., DOS FDISK, OS/2 FDISK)
Command (m for help): n #增加一个新分区
Command action
e extended
p primary partition (1-4)
e #增加一个扩展分区
Selected partition 4
First cylinder (1799-3916, default 1799):
Using default value 1799
Last cylinder or +size or +sizeM or +sizeK (1799-3916, default 3916):
Using default value 3916
Command (m for help): p #显示分区内容
Disk /dev/sda: 32.2 GB, 32212254720 bytes
255 heads, 63 sectors/track, 3916 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Device Boot Start End Blocks Id System
/dev/sda1 * 1 13 104391 83 Linux
/dev/sda2 14 1543 12289725 83 Linux
/dev/sda3 1544 1798 2048287+ 82 Linux swap / Solaris
/dev/sda4 1799 3916 17012835 5 Extended
Command (m for help): n
First cylinder (1799-3916, default 1799):
Using default value 1799
Last cylinder or +size or +sizeM or +sizeK (1799-3916, default 3916): +1g
Command (m for help): p
Disk /dev/sda: 32.2 GB, 32212254720 bytes
255 heads, 63 sectors/track, 3916 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Device Boot Start End Blocks Id System
/dev/sda1 * 1 13 104391 83 Linux
/dev/sda2 14 1543 12289725 83 Linux
/dev/sda3 1544 1798 2048287+ 82 Linux swap / Solaris
/dev/sda4 1799 3916 17012835 5 Extended
/dev/sda5 1799 1921 987966 83 Linux
Command (m for help): w #保存以上操作
重新读取sda这块盘上的分区表
[root@node1 ~]# partprobe /dev/sda
[root@node1 ~]# cat /proc/partitions
major minor #blocks name
8 0 31457280 sda
8 1 104391 sda1
8 2 12289725 sda2
8 3 2048287 sda3
8 4 0 sda4
8 5 987966 sda5
在节点2上创建一个扩展分区和一个逻辑分区
[root@node2 ~]# fdisk /dev/sda
1) software that runs at boot time (e.g., old versions of LILO)
2) booting and partitioning software from other OSs
(e.g., DOS FDISK, OS/2 FDISK)
Command (m for help): n
Command action
e extended
p primary partition (1-4)
e
Selected partition 4
First cylinder (1354-2610, default 1354):
Using default value 1354
Last cylinder or +size or +sizeM or +sizeK (1354-2610, default 2610):
Using default value 2610
Command (m for help): n
First cylinder (1354-2610, default 1354):
Using default value 1354
Last cylinder or +size or +sizeM or +sizeK (1354-2610, default 2610): +1g #两个节点的分区大小要一致
Command (m for help): p #显示分区
Disk /dev/sda: 21.4 GB, 21474836480 bytes
255 heads, 63 sectors/track, 2610 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Device Boot Start End Blocks Id System
/dev/sda1 * 1 13 104391 83 Linux
/dev/sda2 14 1288 10241437+ 83 Linux
/dev/sda3 1289 1353 522112+ 82 Linux swap / Solaris
/dev/sda4 1354 2610 10096852+ 5 Extended
/dev/sda5 1354 1476 987966 83 Linux
Command (m for help): w #保存以上操作
重新加载sda这块盘上的分区
[root@node2 ~]# partprobe /dev/sda