专注系统运维、网络架构,研究技术解决方案,记录我的思想轨迹、工作学习、生活和关注的领域
分类: 架构设计与优化
2013-07-15 10:17:12
在高可用解决方案(HA)中,为了实现集群中数据的共享,常见两种架构:
1、利用SAN等架构的盘柜存放共享数据
2、在每台集群中的机器本地磁盘中划分一个空间出来,并利用网络等方式,往集群中其他机器同步,以保证每台机器上的数据是一致的。
当然,为了令第二种架构也能用于数据库等应用,同步应以数据块方式,而非文件拷贝的方式进行,而DRBD就是可用于实现第二种架构的软件。
一、什么是 DRBD?
DRBD实际上是一种块设备的实现,它由内核模块和相关程序两部分而组成,通过网络通信来同步镜像整个设备,有点类似于一个网络RAID的功能。也 就是说,当你将数据写入本地的DRBD设备上的文件系统时,数据会同时被发送到网络中的另外一台主机之上,并以完全相同的形式记录在一个文件系统中。本地节点(主机)与远程节点(主机)的数据可以保证实时的同步,并保证数据的一致性。所以当本地节点的主机出现故障时,远程节点的主机上还会保留有一份完全相 同的数据可以继续使用,以达到高可用的目的。
因为DRBD是用网络以块的方式进行数据同步的,所以,其不依赖于文件系统、LVM、软RAID等上层设备,可用于数据库文件的同步(区别于rsync 的文件同步方式)。
二、运行环境
操作系统:CentOS 5.9主机名称:
TM-Master 192.168.137.132 sdb1 10G
TM-Slave 192.168.137.133 sdb1 10G
Heartbeat虚拟IP: 192.168.137.13
网关:192.168.137.1
三、初始设置
1. 分别设置两台服务器的主机名TM-Master , TM-Slave :
# hostname TM-Master
# vi /etc/sysconfig/network
NETWORKING=yes
NETWORKING_IPV6=no
HOSTNAME=TM-Master
2. 修改两台服务器的 /etc/hosts ,内容相同:
# vi /etc/hosts
192.168.137.132 TM-Master
192.168.137.133 TM-Slave
3. 确定两台服务器的本地硬盘,这里我们使用的都是 /dev/sdb ,并为其创建一个单独的分区 /dev/sdb1
# fdisk -l /dev/sdb
Disk /dev/sdb: 10.7 GB, 10737418240 bytes
255 heads, 63 sectors/track, 1305 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Device Boot Start End Blocks Id System
/dev/sdb1 1 1305 10482381 83 Linux
注:DRBD是以数据块方式同步的,因此,在创建镜像磁盘前,不要创建文件系统。
4. 两台服务器都安装 DRBD,这里使用 yum 安装:
# yum -y install drbd kmod-drbd82
5. 确认两台服务器的drbd模块加载是否正常:
# modprobe drbd
# lsmod | grep drbd
drbd 245928 0
四、配置
1. 配置 /etc/drbd.conf ,可参考位置:/usr/share/doc/drbd82-8.2.6/drbd.conf,这里我们先在TM-Master 节点直接编辑它:
[root@TM-Master ~] vi /etc/drbd.conf
resource r0
{
protocol C;
startup {
wfc-timeout 0;
degr-wfc-timeout 120;
}
disk {
on-io-error detach;
}
syncer {
rate 10M;
}
on TM-Master {
device /dev/drbd1;
disk /dev/sdb1;
address 192.168.137.132:7789;
meta-disk internal;
}
on TM-Master S {
device /dev/drbd1;
disk /dev/sdb1;
address 192.168.137.133:7789;
meta-disk internal;
}
}
配置说明:
resource r0; 资源组名称 r0
degr-wfc-timeout 120; 连接超时时间
on-io-error detach; 当磁盘有错误时,不连接
rate 10M; 设置主备节点同步时的网络速率最大值
on TM-Master ; 节点的主机名
device /dev/drbd1; 创建的drbd设备
2. 复制TM-Master 的配置文件到TM-Slave 上:
[root@TM-Slave ~]# scp root@TM-Slave:/etc/drbd.conf /etc/drbd.conf
3. 在两台服务器上分别初始化分区,并启动服务:
# drbdadm create-md r0
Writing meta data…
initialising activity log
NOT initialized bir0ap
New drbd meta data block sucessfully created.
备注:
1) “r0”是在drbd.conf里定义的资源名称.
2) 当执行命令”drbdadm create-md r0”时,出现以下错误信息。
Device size would be truncated, which
would corrupt data and result in
‘access beyond end of device’ errors.
You need to either
* use external meta data (recommended)
* shrink that filesystem first
* zero out the device (destroy the filesystem)
Operation refused.
Command ‘drbdmeta 0 v08 /dev/xvdb internal create-md’ terminated with exit code 40
drbdadm create-md r0: exited with code 40
解决办法:初始化磁盘文件格式, dd if=/dev/zero of=/dev/sdxx bs=1M count=100
# dd if=/dev/zero of=/dev/sdb1 bs=1M count=100
100+0 records in
100+0 records out
104857600 bytes (105 MB) copied, 1.92004 seconds, 54.6 MB/s
启动:
# /etc/init.d/drbd start
Starting DRBD resources: [ d(r0) s(r0) n(r0) ].
……….
这里我用到了r0, 你也可以用你的资源组名称,譬如本例的 db。
查看两台机器的状态,用cat /proc/drbd 或 /etc/init.d/drbd status:
[root@TM-Master ~]# /etc/init.d/drbd status
drbd driver loaded OK; device status:
version: 8.2.6 (api:88/proto:86-88)
GIT-hash: 3e69822d3bb4920a8c1bfdf7d647169eba7d2eb4 build by buildsvn@c5-x8664-build, 2008-10-03 11:30:17
m:res cs st ds p mounted fstype
0:r0 Connected Secondary/Secondary Inconsistent/Inconsistent C
[root@TM-Slave ~]# /etc/init.d/drbd status
drbd driver loaded OK; device status:
version: 8.2.6 (api:88/proto:86-88)
GIT-hash: 3e69822d3bb4920a8c1bfdf7d647169eba7d2eb4 build by buildsvn@c5-x8664-build, 2008-10-03 11:30:17
m:res cs st ds p mounted fstype
0:r0 Connected Secondary/Secondary Inconsistent/Inconsistent C
现在两机器都是处于Secondary,即备机状态。(红色部分标记),如果是Unknow,则检查两台是否配置一样。
5. 设置primary主机:
[root@TM-Master ~] drbdadm primary r0
第一次可能会设置失败,可以使用:
[root@TM-Master ~]# drbdsetup /dev/drbd0 primary -o
将把 TM-Master 作为主机,把 TM-Master 中的数据以块的方式同步到 TM-Slave 中。其中 r0 为资源名,可再次查看状态:
[root@TM-Master ~]# /etc/init.d/drbd status
drbd driver loaded OK; device status:
version: 8.2.6 (api:88/proto:86-88)
GIT-hash: 3e69822d3bb4920a8c1bfdf7d647169eba7d2eb4 build by buildsvn@c5-x8664-build, 2008-10-03 11:30:17
m:res cs st ds p mounted fstype
… sync’ed: 8.8% (9350/10236)M
0:r0 SyncSource Primary/Secondary UpToDate/Inconsistent C
[root@TM-Slave ~]# /etc/init.d/drbd status
drbd driver loaded OK; device status:
version: 8.2.6 (api:88/proto:86-88)
GIT-hash: 3e69822d3bb4920a8c1bfdf7d647169eba7d2eb4 build by buildsvn@c5-x8664-build, 2008-10-03 11:30:17
m:res cs st ds p mounted fstype
… sync’ed: 13.7% (8847/10236)M
0:r0 SyncTarget Secondary/Primary Inconsistent/UpToDate C
通过/proc/drbd,可以查看磁盘的复制状态:
[root@TM-Master ~]# cat /proc/drbd
version: 8.2.6 (api:88/proto:86-88)
GIT-hash: 3e69822d3bb4920a8c1bfdf7d647169eba7d2eb4 build by buildsvn@c5-x8664-build, 2008-10-03 11:30:17
0: cs:SyncSource st:Primary/Secondary ds:UpToDate/Inconsistent C r—
ns:2151328 nr:0 dw:0 dr:2151328 al:0 bm:131 lo:0 pe:0 ua:0 ap:0 oos:8330696
[===>................] sync’ed: 20.6% (8135/10236)M
finish: 0:12:48 speed: 10,804 (10,244) K/sec
[root@TM-Slave ~]# cat /proc/drbd
version: 8.2.6 (api:88/proto:86-88)
GIT-hash: 3e69822d3bb4920a8c1bfdf7d647169eba7d2eb4 build by buildsvn@c5-x8664-build, 2008-10-03 11:30:17
0: cs:SyncTarget st:Secondary/Primary ds:Inconsistent/UpToDate C r—
ns:0 nr:1791904 dw:1791904 dr:0 al:0 bm:109 lo:0 pe:0 ua:0 ap:0 oos:8690120
[==>.................] sync’ed: 17.2% (8486/10236)M
finish: 0:11:18 speed: 12,792 (10,236) K/sec
至此,镜像分区已创建完成,我们在两台服务器上设置为开机自启动:
# chkconfig drbd on
挂载使用
在 Primary 主节点上,即 TM-Master ,格式化文件系统并挂载
[root@TM-Master ~]# mkfs.ext3 /dev/drbd0
[root@TM-Master ~]# tune2fs -c 0 -i 0 /dev/drbd0
[root@TM-Master ~]# mkdir /home/drbd
[root@TM-Master ~]# mount /dev/drbd0 /home/drbd
[root@TM-Master ~]# mount
/dev/drbd0 on /home/drbd type ext3 (rw)
注:drbd 设备只能在 Primary 端使用,为避免误操作,当机器重启后,默认都处于 Secondary 状态,如要使用drbd设备,需手动把其设置为Primary。
五、测试
我们在主节点上进行写入测试:
[root@TM-Master ~]# echo “TM” > /home/drbd/test.txt
[root@TM-Master ~]# cat /home/drbd/test.txt
TM
然后我们在主节点上卸载drbd设备,并把drbd降为Secondary状态:
[root@TM-Master ~]# umount /home/drbd/
[root@TM-Master ~]# drbdadm secondary r0
在从节点上创建挂载点,然后升为 Primary 状态:
[root@TM-Slave ~]# mkdir /home/drbd
[root@TM-Slave ~]# drbdadm primary r0
[root@TM-Slave ~]# /etc/init.d/drbd status
drbd driver loaded OK; device status:
version: 8.2.6 (api:88/proto:86-88)
GIT-hash: 3e69822d3bb4920a8c1bfdf7d647169eba7d2eb4 build by buildsvn@c5-x8664-build, 2008-10-03 11:30:17
m:res cs st ds p mounted fstype
… sync’ed: 54.4% (4673/10236)M
0:r0 SyncTarget Primary/Secondary Inconsistent/UpToDate C
我们可以看到先在TM-Slave 已经是Primary状态了,挂载文件系统:
[root@TM-Slave ~]# mount /dev/drbd0 /home/drbd/
[root@TM-Slave ~]# cat /home/drbd/test.txt
TM
测试成功!
此时TM-Master 状态自动设置Secondary
[root@TM-Master ~]# /etc/init.d/drbd status
drbd driver loaded OK; device status:
version: 8.2.6 (api:88/proto:86-88)
GIT-hash: 3e69822d3bb4920a8c1bfdf7d647169eba7d2eb4 build by buildsvn@c5-x8664-build, 2008-10-03 11:30:17
m:res cs st ds p mounted fstype
0:r0 Connected Secondary/Primary UpToDate/UpToDate C
六、DRBD的状态说明
节点DRBD的状态,下面是其中一些简写的说明:
Field 说明 值:
cs 连接状态 出现的值:
oUnconfigured:设备在等待配置。
o Unconnected:连接模块时的过渡状态。
o WFConnection:设备等待另一测的配置。
o WFReportParams:过渡状态,等待新TCP 连接的第一个数据包时。
.o SyncingAll:正将主节点的所有模块复制到次级节点上。
.o SyncingQuick:通过复制已被更新的模块(因为现在次级节点已经离开了集群)来更新次级节点。
o Connected:一切正常。
o Timeout:过渡状态。
st 状态(设备的作用) 可能的值为:
o 本地/远程一级状态
o 二级状态
o 未知(这不是一种作用)
ns 网络发送 模块号码
nr 网络接收 模块号码
dw 磁盘写入 模块号码
DR 磁盘读取 模块号码
of 运行中(过时的)模块号码
pe 待解决的 模块号码
ua 未答复的 模块号码(最好为0)
七、NFS上的配置
1.安装nfs软件,略
2.编辑共享的文件,两节点都做下面的配置
[root@TM-Master ~]# vim /etc/exports
/home/drbd *(rw) (编辑的内容)
[root@TM-Master ~]#service porr0ap start
[root@TM-Master ~]#service nfs start
[root@TM-Master ~]#showmount -e (两边都配置完后,查看一下共享的文件是否已经可以看到)
[root@masternfs ~]# vim /etc/init.d/nfs (把这个文件的值改一下)
约122行添加
killproc nfsd -9#将/etc/init.d/nfs 脚本中的stop 部分中的killproc#nfsd -2 修改为 -9
同时要启动锁机制,因为同时有两个节点要使用同一份数据,所以需要有总裁,这个尤其是在NFS给mysql 用的时候是必须要用的,对于论坛或网站,要看情况,如果存在对同一文件同时修改的时候必须要启动NFS锁机制,如果没有这种情况,那么建议不要启动,启动 了会降低NFS的性能:/sbin/rpc.lockdecho “/sbin/rpc.lockd” >>/etc/rc.local
八、heartbeat的安装配置
1. 实现heartbeat高可用需要一些软件实现,需要安装上去
#yum install libnet
#yum install heartbeat-devel
#yum install heartbeat-ldirectord
#yum install heartbeat
安装完后会自动建立用户hacluster和组haclient确保两个节点上hacluster用户的的UID和GID相同在两台节点上分别执行:
#cat /etc/passwd | grep hacluster | awk -F “:” ‘{print $3}’cat /etc/passwd | grep hacluster | awk -F “:” ‘{print $4}’cat /etc/group | grep haclient | awk -F “:” ‘{print $3}’结果都相同即可
2. 查看所安装的软件
———————————————–
# rpm -qa | grep heartbeatheartbeat-stonith-2.1.3-3.el5.centos
heartbeat-devel-2.1.3-3.el5.centos
heartbeat-ldirectord-2.1.3-3.el5.centos
heartbeat-pils-2.1.3-3.el5.centos
heartbeat-2.1.3-3.el5.centos
# rpm -qa | grep libnetlibnet-1.1.2.1-2.rf
# rpm -qa | grep ipvsadmipvsadm-1.24-13.el5
———————————————–
在从节点上也作同样的操作
3. 配置主节点的heartbeatHeartbeat的主要配置文件有ha.cf、haresources、authkeys,均在/etc/ha.d目录下,在通过yum安装Heartbeat后,默认并没有这三个文件,可从解压的源码目录中找到,这里手动创建并编辑。
1)主配置文件:ha.cf配置heartbeat的检测机制本次实例中,内容设置如下:
———————————————–
# cat /etc/ha.d/ha.cf
debugfile /var/log/ha-debu
logfile /var/log/ha-log
logfacility local0
keepalive 2
warntime 10
deadtime 30
initdead 120
hopfudge 1
udpport 694
bcast eth0
ucast eth0 192.168.137.133
auto_failback on
node TM-Mater
node TM-Slave
ping 192.168.137.254
respawn root /usr/lib/heartbeat/ipfail
apiauth ipfail gid=root uid=root
———————————————–
说明:
debugfile /var/log/ha-debug #用于记录heartbeat的调试信息
logfile /var/log/ha-log #用于记录heartbeat的日志信息
logfacility local0 #系统日志级别
keepalive 2 #设定心跳(监测)间隔时间,默认单位为秒
warntime 10 ##警告时间,通常为deadtime时间的一半
deadtime 30 # 超出30秒未收到对方节点的心跳,则认为对方已经死亡
initdead 120 #网络启动时间,至少为deadtime的两倍。
hopfudge 1 #可选项:用于环状拓扑结构,在集群中总共跳跃节点的数量
udpport 694 #使用udp端口694 进行心跳监测
bcast eth0
ucast eth0 192.168.137.133 #采用单播,进行心跳监测,IP为对方主机
IPauto_failback on #on表示当拥有该资源的属主恢复之后,资源迁移到属主上
node TM-Mater #设置集群中的节点,节点名须与uname –n相匹配
node TM-Slave #节点2
ping 192.168.137.254 #ping集群以外的节点,这里是网关,用于检测网络的连接性
respawn root /usr/lib/heartbeat/ipfail
apiauth ipfail gid=root uid=root #设置所指定的启动进程的权限
———————————————–
注:heartbeat的两台主机分别为主节点和从节点。主节点在正常情况下占用资源并运行所有的服务,遇到故障时把资源交给从节点并由从节点运行服务。
2)资源文件haresourcesha.cf文件设置了heartbeat的检验机制,没有执行机制。Haresources用来设置当主服务器出现问题时heartbeat的执行机制。 其内容为:当主服务器宕机后,该怎样进行切换操作。切换内容通常有IP地址的切换、服务的切换、共享存储的切换,从而使从服务器具有和主服务器同样的 IP、SERVICE、SHARESTORAGE,从而使client没有察觉。在两个HA节点上该文件必须完全一致。本次实例中,内容设置如下:
———————————————–
配置资源文件,把参数直接追加进去了
#echo “TM-Master IPaddr::10.8.50.13/8/eth0 drbddisk::web Filesystem::/dev/drbd0::/home/drdb::ext3 killnfsd” >> /etc/ha.d/haresources
解释:10.8.50.13,是虚拟ip地址,/home/drdb 是共享的文件还需要创建一个文件关于nfs的,要受到heartbeat的控制
# cd /etc/ha.d/resource.d/
# touch killnfsd#chmod 755 /etc/ha.d/resource.d/killnfsd (改变它的权限)
#echo “killall -9 nfsd; /etc/init.d/nfs restart; exit 0 ” >> /etc/ha.d/resource.d/killnfsd
(把参数追加上去)———————————————–
3)认证文件authkeys用于配置心跳的加密方式,该文件主要是用于集群中两个节点的认证,采用的算法和密钥在集群中节点上必须相同,目前提供了3种算法:md5,sha1和crc。其中crc不能够提供认证,它只能够用于校验数据包是否损坏,而sha1,md5需要一个密钥来进行认证。本次实例中,内容设置如下:
# dd if=/dev/random bs=512 count=1 |openssl md5 (随机产生一个参数用md5加密)
0+1 records in
0+1 records out
128 bytes (128 B) copied, 0.000572 seconds, 224 kB/s
48112364a106901dbd8afc6b0305ad72———————————————
# vim /etc/ha.d/authkeys(编辑认证文件)
auth 3
3 md5 9bf2f23aae3a63c16ea681295ffd7666———————————————–
注:需要更改该文件的属性为600,否则heartbeat启动将失败
#chmod 600 /etc/ha.d/authkeys
4) 配置从节点的heartbeat将主节点上的heartbeat配置文件拷贝到从节点,并确保两个节点上的配置文件权限相同:
———————————————–
# scp /etc/ha.d/ha.cf :/etc/ha.d/
# scp /etc/ha.d/haresources :/etc/ha.d/
# scp /etc/ha.d/authkeys :/etc/ha.d/
———————————————–
ha.cf文件需修改ucast的内容,将其指向主节点:ucast eth1 192.168.137.132 #指定对方IP其他文件内容无需修改。
九、使用NFS服务测试
heartbeat编辑各自主机的测试用文件index.hr0l,放到/home/drbd目录下,内容分别为“TM-Master”和“TM-Slave”
在两机上分别启动NFS服务和heartbeat服务
#service nfs start
#service heartbeat start
再次确认drbb是否工作,主NFS设置drbdadm primary r0
#drbdadm primary r0
#/etc/init.d/drbd status
#ifconfig
eth0:0 Link encap:Ethernet HWaddr 00:0C:29:88:EC:85
inet addr:192.168.137.13 Bcast:192.168.137.255 Mask:255.255.255.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
查看主NFS网卡,发现多了一个,虚拟网卡,主要是把资源征用了
模拟故障
1. 主NFS服务器宕机
[root@TM-Master ~]# shutdown -h now
2 监控从NFS服务器
[root@TM-Slave ~]#tail -f /var/log/ha-log
heartbeat[10419]: 2013/07/12_17:36:14 WARN: node TM-Master: is dead
heartbeat[10419]: 2013/07/12_17:36:14 info: Comm_now_up(): updating status to active
heartbeat[10419]: 2013/07/12_17:36:14 info: Local status now set to: 'active'
heartbeat[10419]: 2013/07/12_17:36:14 info: Starting child client "/usr/lib64/heartbeat/ipfail" (498,496)
heartbeat[10419]: 2013/07/12_17:36:14 WARN: No STONITH device configured.
heartbeat[10419]: 2013/07/12_17:36:14 WARN: Shared disks are not protected.
heartbeat[10419]: 2013/07/12_17:36:14 info: Resources being acquired from TM-Master.
heartbeat[10500]: 2013/07/12_17:36:14 info: Starting "/usr/lib64/heartbeat/ipfail" as uid 498 gid 496 (pid 10500)
heartbeat[10502]: 2013/07/12_17:36:14 info: No local resources [/usr/share/heartbeat/ResourceManager listkeys TM-Slave] to acquire.
heartbeat[10419]: 2013/07/12_17:36:14 info: Initial resource acquisition complete (T_RESOURCES(us))
harc[10501]: 2013/07/12_17:36:14 info: Running /etc/ha.d/rc.d/status status
mach_down[10530]: 2013/07/12_17:36:14 info: Taking over resource group IPaddr::192.168.137.13/24/eth0
ResourceManager[10556]: 2013/07/12_17:36:14 info: Acquiring resource group: TM-Master IPaddr::192.168.137.13/24/eth0 drbddisk::r0 Filesystem::/dev/drbd0::/home/drbd::ext3 killnfsd
IPaddr[10583]: 2013/07/12_17:36:14 INFO: Resource is stopped
ResourceManager[10556]: 2013/07/12_17:36:14 info: Running /etc/ha.d/resource.d/IPaddr 192.168.137.13/24/eth0 start
IPaddr[10681]: 2013/07/12_17:36:14 INFO: Using calculated netmask for 192.168.137.13: 255.255.255.0
IPaddr[10681]: 2013/07/12_17:36:14 INFO: eval ifconfig eth0:0 192.168.137.13 netmask 255.255.255.0 broadcast 192.168.137.255
IPaddr[10652]: 2013/07/12_17:36:14 INFO: Success
ResourceManager[10556]: 2013/07/12_17:36:15 info: Running /etc/ha.d/resource.d/drbddisk r0 start
Filesystem[10829]: 2013/07/12_17:36:15 INFO: Resource is stopped
ResourceManager[10556]: 2013/07/12_17:36:15 info: Running /etc/ha.d/resource.d/Filesystem /dev/drbd0 /home/drbd ext3 start
Filesystem[10910]: 2013/07/12_17:36:15 INFO: Running start for /dev/drbd0 on /home/drbd
Filesystem[10899]: 2013/07/12_17:36:15 INFO: Success
mach_down[10530]: 2013/07/12_17:36:15 info: /usr/share/heartbeat/mach_down: nice_failback: foreign resources acquired
mach_down[10530]: 2013/07/12_17:36:15 info: mach_down takeover complete for node TM-Master.
heartbeat[10419]: 2013/07/12_17:36:15 info: mach_down takeover complete.
heartbeat[10419]: 2013/07/12_17:36:24 info: Local Resource acquisition completed. (none)
heartbeat[10419]: 2013/07/12_17:36:24 info: local resource transition completed.
[root@TM-Slave ~]# ifconfig
eth0 Link encap:Ethernet HWaddr 00:0C:29:5B:3A:C1
inet addr:192.168.137.133 Bcast:192.168.137.255 Mask:255.255.255.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:7671943 errors:0 dropped:0 overruns:0 frame:0
TX packets:2248139 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:11511319129 (10.7 GiB) TX bytes:174620385 (166.5 MiB)
eth0:0 Link encap:Ethernet HWaddr 00:0C:29:5B:3A:C1
inet addr:192.168.137.13 Bcast:192.168.137.255 Mask:255.255.255.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
[root@TM-Slave ~]# mount | grep drbd0
/dev/drbd0 on /home/drbd type ext3 (rw)
已成功接管,重新挂载NFS共享!
重启主NFS服务器:
[root@TM-Master ~]# tail -f /var/log/ha-log
heartbeat[2134]: 2013/07/12_17:56:02 WARN: node TM-Slave: is dead
heartbeat[2134]: 2013/07/12_17:56:02 info: Comm_now_up(): updating status to active
heartbeat[2134]: 2013/07/12_17:56:02 info: Local status now set to: 'active'
heartbeat[2134]: 2013/07/12_17:56:02 info: Starting child client "/usr/lib64/heartbeat/ipfail" (498,496)
heartbeat[2134]: 2013/07/12_17:56:02 WARN: No STONITH device configured.
heartbeat[2134]: 2013/07/12_17:56:02 WARN: Shared disks are not protected.
heartbeat[2134]: 2013/07/12_17:56:02 info: Resources being acquired from TM-Slave.
heartbeat[2183]: 2013/07/12_17:56:02 info: Starting "/usr/lib64/heartbeat/ipfail" as uid 498 gid 496 (pid 2183)
harc[2184]: 2013/07/12_17:56:02 info: Running /etc/ha.d/rc.d/status status
mach_down[2230]: 2013/07/12_17:56:02 info: /usr/share/heartbeat/mach_down: nice_failback: foreign resources acquired
mach_down[2230]: 2013/07/12_17:56:02 info: mach_down takeover complete for node TM-Slave.
heartbeat[2134]: 2013/07/12_17:56:02 info: Initial resource acquisition complete (T_RESOURCES(us))
heartbeat[2134]: 2013/07/12_17:56:02 info: mach_down takeover complete.
IPaddr[2257]: 2013/07/12_17:56:02 INFO: Resource is stopped
heartbeat[2185]: 2013/07/12_17:56:02 info: Local Resource acquisition completed.
harc[2321]: 2013/07/12_17:56:03 info: Running /etc/ha.d/rc.d/ip-request-resp ip-request-resp
ip-request-resp[2321]: 2013/07/12_17:56:03 received ip-request-resp IPaddr::192.168.137.13/24/eth0 OK yes
ResourceManager[2342]: 2013/07/12_17:56:03 info: Acquiring resource group: TM-Master IPaddr::192.168.137.13/24/eth0 drbddisk::r0 Filesystem::/dev/drbd0::/home/drbd::ext3 killnfsd
IPaddr[2369]: 2013/07/12_17:56:03 INFO: Resource is stopped
ResourceManager[2342]: 2013/07/12_17:56:03 info: Running /etc/ha.d/resource.d/IPaddr 192.168.137.13/24/eth0 start
IPaddr[2467]: 2013/07/12_17:56:03 INFO: Using calculated netmask for 192.168.137.13: 255.255.255.0
IPaddr[2467]: 2013/07/12_17:56:03 INFO: eval ifconfig eth0:0 192.168.137.13 netmask 255.255.255.0 broadcast 192.168.137.255
IPaddr[2438]: 2013/07/12_17:56:03 INFO: Success
ResourceManager[2342]: 2013/07/12_17:56:03 info: Running /etc/ha.d/resource.d/drbddisk r0 start
Filesystem[2615]: 2013/07/12_17:56:03 INFO: Resource is stopped
ResourceManager[2342]: 2013/07/12_17:56:03 info: Running /etc/ha.d/resource.d/Filesystem /dev/drbd0 /home/drbd ext3 start
Filesystem[2696]: 2013/07/12_17:56:03 INFO: Running start for /dev/drbd0 on /home/drbd
Filesystem[2685]: 2013/07/12_17:56:04 INFO: Success
heartbeat[2134]: 2013/07/12_17:56:13 info: Local Resource acquisition completed. (none)
heartbeat[2134]: 2013/07/12_17:56:13 info: local resource transition completed.
重新接回来了!
十、常见问题
参考文档:
DRBD配置过程 — http://blog.sina.com.cn/s/blog_68a062130100jk1k.hr0l
使用 DRBD 实现磁盘镜像 —