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

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

450次阅读
没有评论

共计 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、短信等云产品特惠热卖中

星哥玩云

星哥玩云
星哥玩云
分享互联网知识
用户数
4
文章数
19350
评论数
4
阅读量
7960853
文章搜索
热门文章
星哥带你玩飞牛NAS-6:抖音视频同步工具,视频下载自动下载保存

星哥带你玩飞牛NAS-6:抖音视频同步工具,视频下载自动下载保存

星哥带你玩飞牛 NAS-6:抖音视频同步工具,视频下载自动下载保存 前言 各位玩 NAS 的朋友好,我是星哥!...
星哥带你玩飞牛NAS-3:安装飞牛NAS后的很有必要的操作

星哥带你玩飞牛NAS-3:安装飞牛NAS后的很有必要的操作

星哥带你玩飞牛 NAS-3:安装飞牛 NAS 后的很有必要的操作 前言 如果你已经有了飞牛 NAS 系统,之前...
我把用了20年的360安全卫士卸载了

我把用了20年的360安全卫士卸载了

我把用了 20 年的 360 安全卫士卸载了 是的,正如标题你看到的。 原因 偷摸安装自家的软件 莫名其妙安装...
再见zabbix!轻量级自建服务器监控神器在Linux 的完整部署指南

再见zabbix!轻量级自建服务器监控神器在Linux 的完整部署指南

再见 zabbix!轻量级自建服务器监控神器在 Linux 的完整部署指南 在日常运维中,服务器监控是绕不开的...
飞牛NAS中安装Navidrome音乐文件中文标签乱码问题解决、安装FntermX终端

飞牛NAS中安装Navidrome音乐文件中文标签乱码问题解决、安装FntermX终端

飞牛 NAS 中安装 Navidrome 音乐文件中文标签乱码问题解决、安装 FntermX 终端 问题背景 ...
阿里云CDN
阿里云CDN-提高用户访问的响应速度和成功率
随机文章
告别Notion焦虑!这款全平台开源加密笔记神器,让你的隐私真正“上锁”

告别Notion焦虑!这款全平台开源加密笔记神器,让你的隐私真正“上锁”

  告别 Notion 焦虑!这款全平台开源加密笔记神器,让你的隐私真正“上锁” 引言 在数字笔记工...
星哥带你玩飞牛NAS-1:安装飞牛NAS

星哥带你玩飞牛NAS-1:安装飞牛NAS

星哥带你玩飞牛 NAS-1:安装飞牛 NAS 前言 在家庭和小型工作室场景中,NAS(Network Atta...
2025年11月28日-Cloudflare史诗级事故:一次配置失误,引爆全球宕机

2025年11月28日-Cloudflare史诗级事故:一次配置失误,引爆全球宕机

2025 年 11 月 28 日 -Cloudflare 史诗级事故: 一次配置失误,引爆全球宕机 前言 继今...
星哥带你玩飞牛NAS-16:不再错过公众号更新,飞牛NAS搭建RSS

星哥带你玩飞牛NAS-16:不再错过公众号更新,飞牛NAS搭建RSS

  星哥带你玩飞牛 NAS-16:不再错过公众号更新,飞牛 NAS 搭建 RSS 对于经常关注多个微...
星哥带你玩飞牛NAS硬件 01:捡垃圾的最爱双盘,暴风二期矿渣为何成不老神话?

星哥带你玩飞牛NAS硬件 01:捡垃圾的最爱双盘,暴风二期矿渣为何成不老神话?

星哥带你玩飞牛 NAS 硬件 01:捡垃圾的最爱双盘,暴风二期矿渣为何成不老神话? 前言 在选择 NAS 用预...

免费图片视频管理工具让灵感库告别混乱

一言一句话
-「
手气不错
4盘位、4K输出、J3455、遥控,NAS硬件入门性价比之王

4盘位、4K输出、J3455、遥控,NAS硬件入门性价比之王

  4 盘位、4K 输出、J3455、遥控,NAS 硬件入门性价比之王 开篇 在 NAS 市场中,威...
星哥带你玩飞牛 NAS-10:备份微信聊天记录、数据到你的NAS中!

星哥带你玩飞牛 NAS-10:备份微信聊天记录、数据到你的NAS中!

星哥带你玩飞牛 NAS-10:备份微信聊天记录、数据到你的 NAS 中! 大家对「数据安全感」的需求越来越高 ...
开源MoneyPrinterTurbo 利用AI大模型,一键生成高清短视频!

开源MoneyPrinterTurbo 利用AI大模型,一键生成高清短视频!

  开源 MoneyPrinterTurbo 利用 AI 大模型,一键生成高清短视频! 在短视频内容...
每年0.99刀,拿下你的第一个顶级域名,详细注册使用

每年0.99刀,拿下你的第一个顶级域名,详细注册使用

每年 0.99 刀,拿下你的第一个顶级域名,详细注册使用 前言 作为长期折腾云服务、域名建站的老玩家,星哥一直...
240 元左右!五盘位 NAS主机,7 代U硬解4K稳如狗,拓展性碾压同价位

240 元左右!五盘位 NAS主机,7 代U硬解4K稳如狗,拓展性碾压同价位

  240 元左右!五盘位 NAS 主机,7 代 U 硬解 4K 稳如狗,拓展性碾压同价位 在 NA...