数据镜像:实时、透明、同步(所有服务器都成功后返回)、异步(本地服务器成功后返回)
DRBD的核心功能通过Linux的内核实现,最接近系统的IO栈,但它不能神奇地添加上层的功能比如检测到EXT3文件系统的崩溃。
DRBD的位置处于文件系统以下,比文件系统更加靠近操作系统内核及IO栈。
工具:
drbdadm:高级管理工具,管理/etc/drbd.conf,向drbdsetup和drbdmeta发送指令,
drbdsetup:配置装载进kernel的DRBD模块,平时很少直接用
drbdmeta:管理META数据结构,平时很少直接用。
在DRBD中,资源是特指某复制的存储设备的所有方面。包括资源名称、DRBD设备(/dev/drbdm,这里m是设备最小号,最大号可到147)、磁盘配置(使本地数据可以为DRBD所用)、网络配置(与对方通信)
每个资源有个角色,是Primary或Secondary,下面简称“主”和“备”
主角色的DRBD设备可以不受限制的读和写,比如创建和映射文件系统、对于块设备的raw或直接IO访问。
备角色的DRBD设备接受来自对方的所有修改,但是不能被应用程序读写,甚至只读也不行。
角色可以改变。
复主模式:需要采用共享cluster文件系统,如GFS和OCFS2。用于需要从2个节点并发访问数据的场合,需要特别配置。
复制模式:3种模式:
协议A:异步复制协议。本地写成功后立即返回,数据放在发送buffer中,可能丢失。
协议B:内存同步(半同步)复制协议。本地写成功并将数据发送到对方后立即返回,如果双机掉电,数据可能丢失。
协议C:同步复制协议。本地和对方写成功确认后返回。如果双机掉电或磁盘同时损坏,则数据可能丢失。
一般用协议C。选择协议将影响流量,从而影响网络时延。
有效的同步:按线性而不是当初写的顺序同步块。同步损坏时间内的不一致数据。
在线的设备检验:一端顺序计算底层存储,得到一个数字,传给另一端,另一端也计算,如果不一致,则稍后进行同步。建议一周或一月一次。
复制过程的一致性检验:加密后,对方若不一致则要求重传。防止网卡、缓冲等问题导致位丢失、覆盖等错误。
Split brain:当网络出现暂时性故障,导致两端都自己提升为Primary。两端再次连通时,可以选择email通知,建议手工处理这种情况。
当数据写在缓冲区里,没有真正写到磁盘上时,系统崩溃会导致数据丢失。而disk flush是指将数据真正写到磁盘上后才返回。
有些带电池的硬盘控制器,如带电池的带点出Dell PERC Raid卡,不但自带缓存而且自带电池,会在系统意外断电或者崩溃后将最后的数据写入磁盘,对这类控制器,可以使用disk flush,从而在保证性能的前提下提高了数据的安全性。
磁盘错误处理策略:
传递给上层:可能造成文件系统remounting成只读,不推荐。
对上层屏蔽:用另一端的相应块进行读写,应用不中断。可以在任何方便的时候再切换。
不一致的(inconsistent)数据:不能以任何方式访问和使用的数据。如正在同步时的目标节点数据,这些数据不能识别,不能mount,甚至不能通过磁盘的自动检测。
过期的(outdated)数据:在备机上的数据,与主机一致,但不需要同步。如主备机网络中断后,备机上的数据就是过期的。
DRBD有接口允许应用程序在网络中断时将备机数据标识为过期的。DRBD拒绝将这个节点提升为主角色。这些管理接口在Heartbeat框架上得到完整实现。
一旦过期资源的复制链接恢复,他的过期标志自动清除,接着进行后台同步。
切换时,远程主机只要使用它上面的那份备份数据,就可以继续进行服务了.
DRBD的工作原理如下图:
+--------+ | 文件系统 | +--------+
|
V
+--------+| 块设备层 | | (/dev/drbd1) +--------+
| |
V V
| 本地硬盘 | | (/dev/hdb1) | | 远程主机硬盘 | | (/dev/hdb1) |
网络文件系统是FreeBSD支持的文件系统中的一种,也被称为NFS. NFS允许一个系统在网络上与他人共享目录和文件。通过使用NFS,用户和程序可以像访问本地文件一样访问远端系统上的文件。
以下是NFS最显而易见的好处:
1.本地工作站使用更少的磁盘空间,因为通常的数据可以存放在一台机器上而且可以通过网络访问到。
2.用户不必在每个网络上机器里头都有一个home目录。Home目录 可以被放在NFS服务器上并且在网络上处处可用。
3.诸如软驱,CDROM,和 Zip(是指一种高储存密度的磁盘驱动器与磁盘)之类的存储设备可以在网络上面被别的机器使用。这可以减少整个网络上的可移动介质设备的数量。
1.多个机器共享一台CDROM或者其他设备。这对于在多台机器中安装软件来说更加便宜跟方便。
2.在大型网络中,配置一台中心 NFS 服务器用来放置所有用户的home目录可能会带来便利。这些目录能被输出到网络以便用户不管在哪台工作站上登录,总能得到相同的home目录。
3.几台机器可以有通用的/usr/ports/distfiles 目录。这样的话,当您需要在几台机器上安装port时,您可以无需在每台设备上下载而快速访问源码。
1 在NFS服务器这端,确认/etc/rc.conf 文件里头以下开关都配上了:
rpcbind_enable="YES"
nfs_server_enable="YES"
mountd_flags="-r"
只要NFS服务被置为enable,mountd 就能自动运行。
2 在客户端一侧,确认下面这个开关出现在 /etc/rc.conf里头:
nfs_client_enable="YES"
/etc/exports文件指定了哪个文件系统 NFS应该输出(有时被称为“共享”)。 /etc/exports里面每行指定一个输出的文件系统和哪些机器可以访问该文件系统。在指定机器访问权限的同时,访问选项开关也可以被指定。
一:准备工作》
1.1配置node1的地址:
1.2构建一个新的磁盘空间有利于实现DRBD技术
[root@nodel drbd.d]# fdisk -l
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+ 83 Linux
[root@nodel drbd.d]# fdisk /dev/sda
The number of cylinders for this disk is set to 2610.
There is nothing wrong with that, but this is larger than 1024,
and could in certain setups cause problems with:
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
You must delete some partition and add an extended partition first
Command (m for help): d
Partition number (1-4): 4
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): +1G
Command (m for help): n
First cylinder (1354-1476, default 1354):
Using default value 1354
Last cylinder or +size or +sizeM or +sizeK (1354-1476, default 1476): +1G
Command (m for help): w
The partition table has been altered!
Calling ioctl() to re-read partition table.
WARNING: Re-reading the partition table failed with error 16: 设备或资源忙.
The kernel still uses the old table.
The new table will be used at the next reboot.
Syncing disks.
[root@nodel drbd.d]#
[root@nodel drbd.d]# fdisk -l
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 1476 987997+ 5 Extended
/dev/sda5 1354 1476 987966 83 Linux
[root@nodel drbd.d]# partprobe /dev/sda
[root@nodel drbd.d]# cat /proc/partitions
major minor #blocks name
8 0 20971520 sda
8 1 104391 sda1
8 2 10241437 sda2
8 3 522112 sda3
8 4 0 sda4
8 5 987966 sda5
1.4配置node2的地址:
[root@node2 ~]# hostname
node2.a.com
1.5构建一个新的磁盘空间有利于实现DRBD技术
[root@node2 ~]# fdisk /dev/sdb
Device contains neither a valid DOS partition table, nor Sun, SGI or OSF disklabel
Building a new DOS disklabel. Changes will remain in memory only,
until you decide to write them. After that, of course, the previous
content won't be recoverable.
The number of cylinders for this disk is set to 2610.
There is nothing wrong with that, but this is larger than 1024,
and could in certain setups cause problems with:
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)
Warning: invalid flag 0x0000 of partition table 4 will be corrected by w(rite)
Command (m for help): p
Disk /dev/sdb: 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
Command (m for help): n
Command action
e extended
p primary partition (1-4)
e
Partition number (1-4): 1
First cylinder (1-2610, default 1):
Using default value 1
Last cylinder or +size or +sizeM or +sizeK (1-2610, default 2610): +1000M
Command (m for help): n
Command action
l logical (5 or over)
p primary partition (1-4)
p
Partition number (1-4): 1
Partition 1 is already defined. Delete it before re-adding it.
Command (m for help): n
Command action
l logical (5 or over)
p primary partition (1-4)
p
Partition number (1-4): 2
First cylinder (124-2610, default 124):
Using default value 124
Last cylinder or +size or +sizeM or +sizeK (124-2610, default 2610): +1000M
Command (m for help): n
Command action
l logical (5 or over)
p primary partition (1-4)
p
Partition number (1-4): 3
First cylinder (247-2610, default 247):
Using default value 247
Last cylinder or +size or +sizeM or +sizeK (247-2610, default 2610): +1000M
Command (m for help): n
Command action
l logical (5 or over)
p primary partition (1-4)
p
Selected partition 4
First cylinder (370-2610, default 370):
Using default value 370
Last cylinder or +size or +sizeM or +sizeK (370-2610, default 2610): +1000M
Command (m for help): w
The partition table has been altered!
Calling ioctl() to re-read partition table.
Syncing disks.
[root@node2 ~]# fdisk -l
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 2610 20860402+ 8e Linux LVM
Disk /dev/sdb: 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/sdb1 1 123 987966 5 Extended
/dev/sdb2 124 246 987997+ 83 Linux
/dev/sdb3 247 369 987997+ 83 Linux
/dev/sdb4 370 492 987997+ 83 Linux
[root@node2 ~]# partprobe /dev/sdb
[root@node2 ~]# cat /proc/partitions
major minor #blocks name
8 0 20971520 sda
8 1 104391 sda1
8 2 20860402 sda2
8 16 20971520 sdb
8 17 0 sdb1
8 18 987997 sdb2
8 19 987997 sdb3
8 20 987997 sdb4
253 0 19791872 dm-0
253 1 1048576 dm-1
[root@node2 ~]#
1.6在node1和node2上配置ssh密钥信息,有利于以后在一个节点对另一节点直接操作:
在node1上配置ssh密钥信息
[root@node1 ~]# ssh-keygen -t rsa
[root@node1 ~]# ssh-copy-id -i .ssh/id_rsa.pub [email protected]
在node2上配置ssh密钥信息
[root@node2 ~]# ssh-keygen -t rsa
[root@node2 ~]# ssh-copy-id -i .ssh/id_rsa.pub [email protected]
二、DRBD安装配置步骤
在node1和node2做以下操作:
我下载的软件包是:(放在/root/下了)
drbd83-8.3.8-1.el5.centos.i386.rpm
kmod-drbd83-8.3.8-1.el5.centos.i686.rpm
2.1、安装DRBD 套件
[root@node1 ~]# rpm -ivh drbd83-8.3.8-1.el5.centos.i386.rpm
[root@node1 ~]# rpm -ivh kmod-drbd83-8.3.8-1.el5.centos.i686.rpm
[root@node2 ~]# rpm -ivh drbd83-8.3.8-1.el5.centos.i386.rpm
[root@node2 ~]# rpm -ivh kmod-drbd83-8.3.8-1.el5.centos.i686.rpm
2.2、加载DRBD 模块
[root@node1 ~]# modprobe drbd
[root@node1 ~]# lsmod | grep drbd
drbd 228528 0
[root@node1 ~]#
[root@node2 ~]# modprobe drbd
[root@node2 ~]# lsmod | grep drbd
drbd 228528 0
[root@node2 ~]#
2.3、修改配置文件
drbd.conf配置文件DRBD运行时,会读取一个配置文件/etc/drbd.conf.这个文件里描述了DRBD设备与硬盘分区的映射关系
2.3.1 在node1上作以下配置
[root@node1 ~]# cd /etc/drbd.d/
[root@node1 drbd.d]# ll
total 4
-rwxr-xr-x 1 root root 1418 Jun 4 2010 global_common.conf
[root@node1 drbd.d]# cp global_common.conf global_common.conf.bak
修改全局配置文件:vim global_common.conf
修改资源配置文件:vim /etc/drbd.d/nfs.res
2.3.2 复制配置到node2上:
[root@nodel drbd.d]# scp /etc/drbd.conf node2.a.com:/etc/
drbd.conf 100% 133 0.1KB/s 00:00
[root@nodel drbd.d]# scp /etc/drbd.d/* node2.a.com:/etc/drbd.d/
global_common.conf 100% 1148 1.1KB/s 00:00
global_common.conf.bak 100% 1418 1.4KB/s 00:00
nfs.res 100% 352 0.3KB/s 00:00
2.4、 检测配置文件
// 检测配置文件
[root@nodel drbd.d]# drbdadm adjust nfs
[root@nodel drbd.d]# drbdadm create-md nfs
Device '0' is configured!
Command 'drbdmeta 0 v08 /dev/sda5 internal create-md' terminated with exit code 20
drbdadm create-md nfs: exited with code 20
[root@nodel drbd.d]#
2.5、创建nfs 的资源
2.5.1 在node1上创建nfs 的资源
[root@node1 drbd.d]# drbdadm create-md nfs
Device '0' is configured!
Command 'drbdmeta 0 v08 /dev/sda5 internal create-md' terminated with exit code 20
drbdadm create-md nfs: exited with code 20
2.5.2 在node2上创建nfs 的资源
[root@nodel drbd.d]# ssh node2.a.com 'drbdadm create-md nfs'
NOT initialized bitmap
Writing meta data...
initializing activity log
New drbd meta data block successfully created.
[root@nodel drbd.d]#
2.6 启动DRBD服务
[root@node2 ~]# service drbd start
Starting DRBD resources: drbdsetup 0 show:5: delay-probe-volume 0k => 0k out of range [4..1048576]k.
[root@node2 ~]# ssh node2.a.com 'service drbd start'
The authenticity of host 'node2.a.com (192.168.145.99)' can't be established.
RSA key fingerprint is b5:21:65:8a:4b:b1:5a:71:92:81:cc:89:06:56:9a:77.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added 'node2.a.com,192.168.145.99' (RSA) to the list of known hosts.
[email protected]'s password:
Starting DRBD resources: drbdsetup 0 show:5: delay-probe-volume 0k => 0k out of range [4..1048576]k.
[root@node2 ~]#
2.7 启动DRBD服务,查看DRBD状态
[root@nodel drbd.d]# service drbd status
drbd driver loaded OK; device status:
version: 8.3.8 (api:88/proto:86-94)
GIT-hash: d78846e52224fd00562f7c225bcc25b2d422321d build by [email protected], 2010-06-04 08:04:16
m:res cs ro ds p mounted fstype
0:nfs WFConnection Secondary/Unknown Inconsistent/DUnknown C
[root@nodel drbd.d]# ssh node2.a.com 'service drbd status'
drbd driver loaded OK; device status:
version: 8.3.8 (api:88/proto:86-94)
GIT-hash: d78846e52224fd00562f7c225bcc25b2d422321d build by [email protected], 2010-06-04 08:04:16
m:res cs ro ds p mounted fstype
0:nfs Unconfigured
[root@nodel drbd.d]# drbd-overview
0:nfs WFConnection Secondary/Unknown Inconsistent/DUnknown C r----
[root@nodel drbd.d]# ssh node2.a.com 'drbd-overview'
0:nfs Unconfigured . . . .
[root@nodel drbd.d]# chkconfig drbd on
[root@nodel drbd.d]# ssh node2.a.com 'chkconfig drbd on'
[root@nodel drbd.d]# ssh node2.a.com 'chkconfig --list drbd'
drbd 0:关闭 1:关闭 2:启用 3:启用 4:启用 5:启用 6:关闭
[root@nodel drbd.d]#
2.8 在node1主节点上进行以下配置,并查看挂载信息。
[root@node1 drbd.d]# mkdir /mnt/nfs
[root@node1 drbd.d]# ssh node2.a.com 'mkdir /mnt/nfs'
[root@node1 drbd.d]# drbdsetup /dev/drbd0 primary -o
[root@node1 drbd.d]# mkfs.ext3 /dev/drbd0
[root@node1 drbd.d]# mount /dev/drbd0 /mnt/nfs/
[root@nodel drbd.d]# service drbd status
drbd driver loaded OK; device status:
version: 8.3.8 (api:88/proto:86-94)
GIT-hash: d78846e52224fd00562f7c225bcc25b2d422321d build by [email protected], 2010-06-04 08:04:16
m:res cs ro ds p mounted fstype
0:nfs WFConnection Primary/Unknown UpToDate/Outdated C /mnt/nfs ext3
[root@nodel drbd.d]# drbd-overview
0:nfs WFConnection Primary/Unknown UpToDate/Outdated C r---- /mnt/nfs ext3 950M 18M 885M 2%
[root@nodel drbd.d]# ssh node2.a.com 'service drbd status'
drbd driver loaded OK; device status:
version: 8.3.8 (api:88/proto:86-94)
GIT-hash: d78846e52224fd00562f7c225bcc25b2d422321d build by [email protected], 2010-06-04 08:04:16
m:res cs ro ds p mounted fstype
0:nfs Unconfigured
[root@nodel drbd.d]# ssh node2.a.com 'drbd-overview'
0:nfs Unconfigured . . . .
[root@nodel drbd.d]# ll /mnt/nfs
总计 16
drwx------ 2 root root 16384 10-17 15:02 lost+found
[root@nodel drbd.d]#
至此DRBD配置成功!!!
三、NFS配置
两台服务器都修改nfs 配置文件,都修改nfs 启动脚本,如下:
vim /etc/exports
[root@nodel ~]# chkconfig portmap on
[root@nodel ~]# chkconfig --list portmap
portmap 0:关闭 1:关闭 2:启用 3:启用 4:启用 5:启用 6:关闭
[root@nodel ~]# service portmap start
启动 portmap: [确定]
[root@nodel ~]# chkconfig nfs on
[root@nodel ~]# chkconfig --list nfs
nfs 0:关闭 1:关闭 2:启用 3:启用 4:启用 5:启用 6:关闭
[root@nodel ~]# service nfs start
启动 NFS 服务: [确定]
关掉 NFS 配额: [确定]
启动 NFS 守护进程: [确定]
启动 NFS mountd: [确定]
[root@nodel ~]#
vim /etc/init.d/nfs
node2上:
[root@node2 ~]# vim /etc/exports
[root@node2 ~]# chkconfig portmap on
[root@node2 ~]# chkconfig --list portmap
portmap 0:关闭 1:关闭 2:启用 3:启用 4:启用 5:启用 6:关闭
[root@node2 ~]# service protmap start
protmap: 未被识别的服务
[root@node2 ~]# service portmap start
启动 portmap: [确定]
[root@node2 ~]# chkconfig nfs on
[root@node2 ~]# chkconfig --list nfs
nfs 0:关闭 1:关闭 2:启用 3:启用 4:启用 5:启用 6:关闭
[root@node2 ~]# service nfs start
启动 NFS 服务: [确定]
关掉 NFS 配额: [确定]
启动 NFS 守护进程: [确定]
启动 NFS mountd: [确定]
[root@node2 ~]# vim /etc/init.d/nfs
[root@node2 ~]#
四、Heartbeat配置
在server1和server2做以下操作:
1、安装Heartbeat套件
[root@node1 ~]# yum localinstall -y heartbeat-2.1.4-9.el5.i386.rpm heartbeat-pils-2.1.4-10.el5.i386.rpm heartbeat-stonith-2.1.4-10.el5.i386.rpm libnet-1.1.4-3.el5.i386.rpm perl-MailTools-1.77-1.el5.noarch.rpm --nogpgcheck
[root@node2 ~]# yum localinstall -y heartbeat-2.1.4-9.el5.i386.rpm heartbeat-pils-2.1.4-10.el5.i386.rpm heartbeat-stonith-2.1.4-10.el5.i386.rpm libnet-1.1.4-3.el5.i386.rpm perl-MailTools-1.77-1.el5.noarch.rpm �Cnogpgcheck
2、拷贝配置文档
[root@node1 ~]# cd /usr/share/doc/heartbeat-2.1.4/
[root@node1 heartbeat-2.1.4]# cp authkeys ha.cf haresources /etc/ha.d/
[root@node1 heartbeat-2.1.4]# cd /etc/ha.d/
vim /etc/ha.d/ha.cf
vim /etc/ha.d/haresources
vim /etc/ha.d/authkeys
[root@node2 heartbeat-2.1.4]# cd /etc/ha.d/
[root@node2 ha.d]# echo "killall -9 nfsd; /etc/init.d/nfs restart; exit 0" >>resource.d/killnfsd
[root@node2 ha.d]# chmod 600 /etc/ha.d/authkeys
[root@node2 ha.d]# chmod 755 /etc/ha.d/resource.d/killnfsd
[root@node2 ha.d]# scp ha.cf authkeys haresources
haresources: Not a directory
[root@node2 ha.d]# hostname server1.a.com
[root@node2 ha.d]# vim /hosts
[root@node2 ha.d]# vim /etc/hosts
[root@node2 ha.d]# vim /etc/sysconfig/net
netconsole network networking/ network-scripts/
[root@node2 ha.d]# vim /etc/sysconfig/network
[root@node2 ha.d]# scp ha.cf authkeys haresources server2.a.com:/etc/ha.d/
The authenticity of host 'server2.a.com (192.168.145.102)' can't be established.
RSA key fingerprint is 0c:84:f6:dd:8b:bd:9c:5b:b0:4c:cc:5c:6a:a6:32:f5.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added 'server2.a.com,192.168.145.102' (RSA) to the list of known hosts.
[email protected]'s password:
ha.cf 100% 10KB 10.3KB/s 00:00
authkeys 100% 643 0.6KB/s 00:00
haresources 100% 6014 5.9KB/s 00:00
[root@node2 ha.d]# vim /hosts
[root@server1 ~]# cd /etc/ha.d/
[root@server1 ha.d]# scp resource.d/killnfsd server2.a.com:/etc/ha.d/resource.d/killnfsd
[email protected]'s password:
killnfsd 100% 49 0.1KB/s 00:00
[root@server1 ha.d]#
server2.a.com上:
vim ha.cf
配置server1的地址:
[root@server1 ha.d]# service heartbeat restart
Stopping High-Availability services:
[确定]
Waiting to allow resource takeover to complete:
[确定]
Starting High-Availability services:
2012/10/10_03:39:13 INFO: Resource is stopped
[确定]
[root@server1 ha.d]# ifconfig eth0:0
eth0:0 Link encap:Ethernet HWaddr 00:0C:29:13:81:77
inet addr:192.168.145.103 Bcast:192.168.145.255 Mask:255.255.255.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
Interrupt:193 Base address:0x2000
1、在测试机上将192.168.145.103:/mnt/nfs挂到本地/data下
[root@client ~]# mkdir /data
[root@client ~]# mount 192.168.145.103:/mnt/nfs/ /data/
[root@client ~]# cd /data/
[root@client data]# ll
total 20
-rw-r--r-- 1 root root 4 Feb 8 17:41 f1
drwx------ 2 root root 16384 Feb 8 14:57 lost+found
[root@client data]# touch f-client-1
[root@client data]# ll
total 20
-rw-r--r-- 1 root root 0 Feb 8 19:50 f-client-1
-rw-r--r-- 1 root root 4 Feb 8 17:41 f1
drwx------ 2 root root 16384 Feb 8 14:57 lost+found
[root@client data]#cd
[root@client ~]#
2、在测试机上创建测试shell,每秒一次
3、将主节点node1 的heartbeat服务停止,则备节点node2 接管服务
[root@node1 ha.d]# service heartbeat stop
Stopping High-Availability services:
[ OK ]
[root@node1 ha.d]# drbd-overview
0:nfs Connected Secondary/Primary UpToDate/UpToDate C r----
[root@node1 ha.d]# ifconfig eth0:0
eth0:0 Link encap:Ethernet HWaddr 00:0C:29:AE:83:D1
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
Interrupt:67 Base address:0x2000
[root@node1 ha.d]#
[root@node2 ha.d]# drbd-overview
0:nfs Connected Primary/Secondary UpToDate/UpToDate C r---- /mnt/nfs ext3 950M 18M 885M 2%
[root@node2 ha.d]# ifconfig eth0:0
eth0:0 Link encap:Ethernet HWaddr 00:0C:29:D1:D4:32
inet addr:192.168.145.103 Bcast:192.168.145.254 Mask:255.255.255.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
Interrupt:67 Base address:0x2000
[root@node2 ha.d]#
4、在客户端上运行nfs.sh测试文件,一直显示的信息如下:
[root@client ~]# ./nfs.sh
---> trying touch x : Wed Feb 8 20:00:58 CST 2012
<----- done touch x : Wed Feb 8 20:00:58 CST 2012
---> trying touch x : Wed Feb 8 20:00:59 CST 2012
<----- done touch x : Wed Feb 8 20:00:59 CST 2012
---> trying touch x : Wed Feb 8 20:01:00 CST 2012
<----- done touch x : Wed Feb 8 20:01:00 CST 2012
---> trying touch x : Wed Feb 8 20:01:01 CST 2012
<----- done touch x : Wed Feb 8 20:01:01 CST 2012
---> trying touch x : Wed Feb 8 20:01:02 CST 2012
<----- done touch x : Wed Feb 8 20:01:02 CST 2012
---> trying touch x : Wed Feb 8 20:01:03 CST 2012
<----- done touch x : Wed Feb 8 20:01:03 CST 2012
---> trying touch x : Wed Feb 8 20:01:04 CST 2012
<----- done touch x : Wed Feb 8 20:01:04 CST 2012
---> trying touch x : Wed Feb 8 20:01:05 CST 2012
<----- done touch x : Wed Feb 8 20:01:05 CST 2012
5、查看客户端的挂载信息如下,磁盘可正常使用:
[root@client ~]# mount
/dev/sda2 on / type ext3 (rw)
proc on /proc type proc (rw)
sysfs on /sys type sysfs (rw)
devpts on /dev/pts type devpts (rw,gid=5,mode=620)
/dev/sda1 on /boot type ext3 (rw)
tmpfs on /dev/shm type tmpfs (rw)
none on /proc/sys/fs/binfmt_misc type binfmt_misc (rw)
sunrpc on /var/lib/nfs/rpc_pipefs type rpc_pipefs (rw)
nfsd on /proc/fs/nfsd type nfsd (rw)
192.168.101.210:/mnt/nfs on /data type nfs (rw,addr=192.168.101.210)
[root@client ~]#
[root@client ~]# ll /data/
total 20
-rw-r--r-- 1 root root 0 Feb 8 19:50 f-client-1
-rw-r--r-- 1 root root 4 Feb 8 17:41 f1
drwx------ 2 root root 16384 Feb 8 14:57 lost+found
[root@client ~]#
至此,node2 接管服务成功,实验已实现所需的功能;也可手动在nfs挂载目录里建立文件,来回切换node1和node2的drbd服务来进行测试。
5、恢复node1为主要节点
[root@node1 ha.d]# service heartbeat start
Starting High-Availability services:
2012/02/08_20:04:49 INFO: Resource is stopped
[ OK ]
[root@node1 ha.d]# drbd-overview
0:nfs Connected Primary/Secondary UpToDate/UpToDate C r---- /mnt/nfs ext3 950M 18M 885M 2%
[root@node1 ha.d]#
至此DRBD+Heartbeat+NFS已经实现成功!!!