阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

DRBD+Heartbeat+NFS文件共享存储架构

207次阅读
没有评论

共计 23633 个字符,预计需要花费 60 分钟才能阅读完成。

在高可用解决方案(HA)中,为了实现集群中数据的共享,常见两种架构:
1、利用 SAN 等架构的盘柜存放共享数据
2、在每台集群中的机器本地磁盘中划分一个空间出来,并利用网络等方式,往集群中其他机器同步,以保证每台机器上的数据是一致的。
当然,为了令第二种架构也能用于数据库等应用,同步应以数据块方式,而非文件拷贝的方式进行,而 DRBD 就是可用于实现第二种架构的软件。

一、什么是 DRBD?
DRBD 实际上是一种块设备的实现,它由内核模块和相关程序两部分而组成,通过网络通信来同步镜像整个设备,有点类似于一个网络 RAID 的功能。也 就是说,当你将数据写入本地的 DRBD 设备上的文件系统时,数据会同时被发送到网络中的另外一台主机之上,并以完全相同的形式记录在一个文件系统中。本地节点(主机)与远程节点(主机)的数据可以保证实时的同步,并保证数据的一致性。所以当本地节点的主机出现故障时,远程节点的主机上还会保留有一份完全相 同的数据可以继续使用,以达到高可用的目的。
因为 DRBD 是用网络以块的方式进行数据同步的,所以,其不依赖于文件系统、LVM、软 RAID 等上层设备,可用于数据库文件的同步(区别于 rsync 的文件同步方式)。

DRBD+Heartbeat+NFS 文件共享存储架构
 

二、运行环境
操作系统: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。

DRBD 的详细介绍:请点这里
DRBD 的下载地址:请点这里

相关阅读

Linux 高可用(HA)集群之 DRBD 详解 http://www.linuxidc.com/Linux/2013-08/89035.htm

DRBD 中文应用指南 PDF http://www.linuxidc.com/Linux/2013-08/89034.htm

CentOS 6.3 下 DRBD 安装配置笔记 http://www.linuxidc.com/Linux/2013-06/85600.htm

基于 DRBD+Corosync 实现高可用 MySQL http://www.linuxidc.com/Linux/2013-05/84471.htm

CentOS 6.4 下 DRBD 安装配置 http://www.linuxidc.com/Linux/2013-09/90536.htm

五、测试
我们在主节点上进行写入测试:
[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

推荐阅读

Linux 高可用(HA)集群之 heartbeat 基于 crm 进行资源管理详解 http://www.linuxidc.com/Linux/2013-08/89167.htm

Heartbeat+httpd+NFS 实现高可用的 Web 服务器 http://www.linuxidc.com/Linux/2013-08/88520.htm

Linux 高可用(HA)集群之 Heartbeat 详解 http://www.linuxidc.com/Linux/2013-08/88521.htm

Linux 高可用性方案之 Heartbeat 的 CRM 配置 http://www.linuxidc.com/Linux/2012-05/60838.htm

高可用集群 Heartbeat v1 实例 http://www.linuxidc.com/Linux/2013-09/90757.htm

在高可用解决方案(HA)中,为了实现集群中数据的共享,常见两种架构:
1、利用 SAN 等架构的盘柜存放共享数据
2、在每台集群中的机器本地磁盘中划分一个空间出来,并利用网络等方式,往集群中其他机器同步,以保证每台机器上的数据是一致的。
当然,为了令第二种架构也能用于数据库等应用,同步应以数据块方式,而非文件拷贝的方式进行,而 DRBD 就是可用于实现第二种架构的软件。

一、什么是 DRBD?
DRBD 实际上是一种块设备的实现,它由内核模块和相关程序两部分而组成,通过网络通信来同步镜像整个设备,有点类似于一个网络 RAID 的功能。也 就是说,当你将数据写入本地的 DRBD 设备上的文件系统时,数据会同时被发送到网络中的另外一台主机之上,并以完全相同的形式记录在一个文件系统中。本地节点(主机)与远程节点(主机)的数据可以保证实时的同步,并保证数据的一致性。所以当本地节点的主机出现故障时,远程节点的主机上还会保留有一份完全相 同的数据可以继续使用,以达到高可用的目的。
因为 DRBD 是用网络以块的方式进行数据同步的,所以,其不依赖于文件系统、LVM、软 RAID 等上层设备,可用于数据库文件的同步(区别于 rsync 的文件同步方式)。

DRBD+Heartbeat+NFS 文件共享存储架构
 

二、运行环境
操作系统: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。

DRBD 的详细介绍:请点这里
DRBD 的下载地址:请点这里

相关阅读

Linux 高可用(HA)集群之 DRBD 详解 http://www.linuxidc.com/Linux/2013-08/89035.htm

DRBD 中文应用指南 PDF http://www.linuxidc.com/Linux/2013-08/89034.htm

CentOS 6.3 下 DRBD 安装配置笔记 http://www.linuxidc.com/Linux/2013-06/85600.htm

基于 DRBD+Corosync 实现高可用 MySQL http://www.linuxidc.com/Linux/2013-05/84471.htm

CentOS 6.4 下 DRBD 安装配置 http://www.linuxidc.com/Linux/2013-09/90536.htm

八、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 root@192.168.137.133:/etc/ha.d/
# scp /etc/ha.d/haresources root@192.168.137.133:/etc/ha.d/
# scp /etc/ha.d/authkeys root@192.168.137.133:/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.
重新接回来了!

相关阅读

Ubuntu 12.04 安装 NFS server http://www.linuxidc.com/Linux/2012-09/70728.htm

NFS 服务器安装配置实现 Ubuntu 12.04 与 ARM 文件共享 http://www.linuxidc.com/Linux/2012-10/73159.htm

Ubuntu 搭建 nfs 服务器 http://www.linuxidc.com/Linux/2012-10/71930.htm

文件服务器 NFS 配置详解 http://www.linuxidc.com/Linux/2013-06/86542.htm

Ubuntu 下搭建 NFS 网络文件系统服务器 http://www.linuxidc.com/Linux/2013-07/87367.htm

Heartbeat_ldirector+LB+NFS 实现 HA 及 LB、文件共享 http://www.linuxidc.com/Linux/2013-06/85292.htm

CentOS 5.5 配置 NFS 服务器教程 http://www.linuxidc.com/Linux/2013-03/81737.htm

Ubuntu 12.10 下 NFS 的安装使用 http://www.linuxidc.com/Linux/2013-03/80478.htm

正文完
星哥说事-微信公众号
post-qrcode
 0
星锅
版权声明:本站原创文章,由 星锅 于2022-01-20发表,共计23633字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中