DRBD+Heratbeat+NFS高可用文件共享存储

简介:

一、概述

1、架构图

wKiom1MKup_CAId7AADWASgYJQM011.jpg

2、软件简介

Heartbeat(Linux-HA)的工作原理:heartbeat最核心的包括两个部分,心跳监测部分和资源接管部分,心跳监测可以通过网络链路和串口进行,而且支持冗余链路,它们之间相互发送报文来告诉对方自己当前的状态,如果在指定的时间内未到对方发送的报文,那么就认为对方失效,这时需启动资源接管模块来接管运 行在对方主机上的资源或者服务。

DRBD:drbd是一个软件来实现数据实时、同步、异步的数据镜像块存储复制解决方案,主要功能是通过Linux内核实现。DRBD类似网络RAID-1功能写入本地的文件会通过网络以相同方式写在另一文件系统。

3、资源分配

系统:CentOS6.5_x64

主机

角色

IP地址

masternfs

主NFS

eth0:192.168.0.202/24

backupnfs

备NFS

eth0:192.168.0.203/24


VIP

192.168.0.204/24

4、配置两台hosts记录

[root@masternfs ~]# vi /etc/hosts

192.168.0.202 masternfs

192.168.0.203 backupnfs

二、安装配置DRBD(两台服务器配置基本一样)

安装epel源:

rpm -ivh http://mirrors.ustc.edu.cn/fedora/epel/6/x86_64/epel-release-6-8.noarch.rpm

下载drbd软件:http://oss.linbit.com/drbd/

1、安装依赖包

1
[root@masternfs ~] # yum install -y gcc gcc-c++ make perl kernel-devel kernel-headers flex drbd84-utils kmod-drbd84

2、安装DRBD并加载到内核

1
2
3
4
5
6
7
8
9
10
11
12
[root@masternfs ~] # tar zxvf drbd-8.4.4.tar.gz
[root@masternfs ~] # cd drbd-8.4.4
[root@masternfs ~] # ./configure --prefix=/usr/local/drbd --with-km #--with-km,启用内核模块
[root@masternfs ~] # make KDIR=/usr/src/kernels/2.6.32-358.23.2.el6.x86_64/ #指定内核源码路径
[root@masternfs ~] # make install
[root@masternfs ~] # chkconfig --add drbd
[root@masternfs ~] # chkconfig drbd on
[root@masternfs ~] # cp drbd/drbd.ko /lib/modules/`uname -r`/kernel/lib/ #加载DRBD模块到内核中
[root@masternfs ~] # modprobe drbd
[root@masternfs ~] # lsmod |grep drbd  #由此查看drbd模块已经加载
drbd                 333755  0
libcrc32c              1246  1 drbd

3、配置DRBD

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
[root@masternfs ~] # cd /usr/local/drbd/
[root@masternfs ~] # vi /usr/local/drbd/etc/drbd.d/global_common.conf
global {
         usage-count  yes ;
}
common {
         protocol C;
disk {
         on-io-error detach;
}
syncer {
         rate 100M;
  }
}
resource web {
         on masternfs {
         device  /dev/drbd0 ;
         disk  /dev/sdb1 ;
         address 192.168.0.202:7899;
         meta-disk internal;
   }
         on backupnfs {
         device  /dev/drbd0 ;
         disk  /dev/sdb1 ;
         address 192.168.0.203:7899;
         meta-disk internal;
   }
}

4、创建供DRBD记录信息数据块

1
2
3
4
5
6
7
8
[root@masternfs ~] # drbd admcreate-md web
Writing meta data...
initializing activity log
NOT initializing bitmap
New drbd meta data blocksuccessfully created.
success
[root@masternfs ~] # mkdir -p /usr/local/drbd/var/run/drbd  #创建资源目录
[root@masternfs ~] # service drbd start

wKioL1MKu26hXBLeAAJBmNxqZ34318.jpg

5默认没有分主备节点的,需要设置

1
2
3
4
5
[root@masternfs ~] # cat /proc/drbd
version: 8.4.4(api:1 /proto :86-101)
GIT- hash :599f286440bd633d15d5ff985204aff4bccffadd build by phil@Build64R6, 2013-10-1415:33:06
  0: cs:Connected ro:Secondary /Secondaryds :UpToDate /UpToDate  C r-----
ns:64 nr:112 dw:176 dr:6088 al:1 bm:0 lo:0 pe:0 ua:0 ap:0 ep:1wo:f oos:0


1
2
[root@masternfs ~] # drbdadm -- --overwrite-data-of-peer primary web
[root@db-backup ~] # drbdadm secondary web   #backupnfs服务器设置从节点

 #再查看状态已经是主从

1
2
[root@masternfs ~] # drbd-overview
   0:mysql /0  Connected Primary /Secondary  UpToDate /UpToDate  C r-----

说明:
cs:两台数据连接状态

ro:两台主机的状态

ds:磁盘状态是“UpToDate/UpToDate”,同步状态。

6、格式化并挂载分区

1
2
3
[root@masternfs ~] # mkfs.ext4 /dev/drbd0
[root@masternfs ~] # mkdir /web
[root@masternfs ~] # mount /dev/drbd0 /web

三、安装配置NFS

1
2
3
4
5
6
7
[root@masternfs ~] # yum install -y nfs-utils
[root@masternfs ~] # vi /etc/exports
/web  192.168.0.0 /24 (rw,no_root_squash)
[root@masternfs ~] # service rpcbind start
[root@masternfs ~] # service nfs start
[root@masternfs ~] # chkconfig rpcbind on
[root@masternfs ~] # chkconfig nfs on

四、安装配置Heartbeat

1
2
3
4
[root@masternfs ~] # yum install heartbeat* -y
[root@masternfs ~] # cd /usr/share/doc/heartbeat-3.0.4/
[root@masternfsheartbeat-3.0.4] # cp ha.cf authkeys haresources /etc/ha.d/
[root@masternfsheartbeat-3.0.4] # cd /etc/ha.d/
1
2
3
4
5
6
7
8
9
10
11
12
13
[root@masternfs ha.d] # vi ha.cf
logfile  /var/log/ha-log
logfacility local0     #如果未定义上述日志,默认写入/var/log/message
keepalive 2        #心跳间隔
deadtime 30        #死亡阀值
warntime 10        #警告时间
initdead 120       #首次启动heartbeat,等待多久才启动主服务资源
udpport  694       #连接端口
bcast eth0             #使用什么方式组织心跳,最好用ucast方式
auto_failback off      #当主节点故障恢复后,自动获取资源并取代从节点
node masternfs         #主节点主机名
node backupnfs         #备份节点主机名
ping  192.168.0.1       #选择ping节点,ping的越好对HA集群越稳定,建议使用网关

1
2
3
[root@masternfs ~] # vi /etc/ha.d/authkeys
auth 2
2 sha1 HI!

1
[root@masternfs ~] # masternfs IPaddr::192.168.0.204/24/eth0 drbddisk::web Filesystem::/dev/drbd0::/web::ext4 killnfsd

参数说明:

masternfsIPaddr::192.168.0.204/24/eth0  #主机名,后跟虚拟IP地址、接口

drbddisk::web  #管理drbd资源

Filesystem::/dev/drbd0::/web::ext4 killnfsd   #文件系统,目录及格式,后跟nfs资源脚本

#killnfsd脚本

1
2
[root@masternfs ~] # echo "killall -9 nfsd ; /etc/init.d/nfs restart ; exit 0" >>/etc/ha.d/resource.d/killnfsd
[root@masternfs ~] # chmod +x /etc/ha.d/resource.d/killnfsd

1
2
3
[root@masternfs ~] # chmod 600 /etc/ha.d/authkeys  #不修改权限会报错
[root@masternfs ~] # service heartbeat start
[root@masternfs ~] # chkconfig heartbeat on

五、测试高可用性

1、停掉masternfs服务器heartbeat服务,是否虚拟IP正常切换,可通过ip addr命令查看。

2、通过一台测试机, mount -t nfs 192.168.0.204:/web/media,当故障切换时,nfs无间断提供服务,提供完美冗余。

3、通过ha-log日志可以看出主释放资源,备接管资源。

wKiom1MKu9mjQSMdAALJS0t2_G8628.jpg

wKioL1MKu8GThAhJAAN1E7fwAyY840.jpg



本文转自 李振良OK 51CTO博客,原文链接:http://blog.51cto.com/lizhenliang/1362539,如需转载请自行联系原作者

相关文章
|
1月前
|
Linux Shell Windows
通过Linux挂载Windows端NFS服务实现板端Linux传输文件到PC
通过Linux挂载Windows端NFS服务实现板端Linux传输文件到PC
|
3月前
|
存储 监控 网络协议
【Linux】文件服务NFS(Network File System)
【Linux】文件服务NFS(Network File System)
34 0
|
3月前
|
Unix Linux 文件存储
文件传输、文件挂载MOUNT:NFS、CIFS、ADB、SAMBA
文件传输、文件挂载MOUNT:NFS、CIFS、ADB、SAMBA
65 0
|
4月前
|
网络协议 Unix Linux
Centos下nfs+rpcbind实现服务器之间的文件共享
Centos下nfs+rpcbind实现服务器之间的文件共享
92 0
|
3天前
|
网络协议 Linux
基于 NFS 的文件共享实现
基于 NFS 的文件共享实现
|
8月前
|
Linux 网络安全 数据安全/隐私保护
Linux NFS协议:实现文件共享与远程访问
NFS(Network File System)是一种在计算机网络上实现文件共享的协议,允许多台计算机共享文件和目录。在Linux系统中,NFS协议被广泛用于实现文件在网络中的共享和远程访问。本文将深入解析Linux下的NFS协议,包括工作原理、配置、使用方法以及安全性措施,帮助读者全面了解NFS协议在实现文件共享和远程访问中的应用。
499 1
|
8月前
|
存储
keepalived+DRBD+NFS高可用存储
keepalived+DRBD+NFS高可用存储
112 0
|
3月前
|
存储 Linux 网络安全
Linux系统安装NFS服务器
NFS是一种网络文件系统,英文全称Network File System,通过NFS可以让不同的主机系统之间共享文件或目录。通过NFS,用户可以直接在本地NFS客户端读写NFS服务端上的文件,是非常好的共享存储工具。本篇文章将介绍如何在CentOS7上安装NFS服务器,包括服务端和客户端安装两部分。
72 0
|
1月前
|
Linux 网络安全
Linux NFS协议详解
Linux NFS协议详解
29 5
|
8月前
|
存储 网络协议 Linux
Linux/centos上如何配置管理NFS服务器?
Linux/centos上如何配置管理NFS服务器?
175 0