NFS做为业界经常使用的共享存储方案,被众多公司采用。我司也不列外,使用NFS做为共享存储,为前端WEB server提供服务,主要存储网页代码以及其余文件。html
说道NFS,不得不说它的同步技术,同步技术有两种,前端
咱们看看咱们的服务器信息:node
IP | 角色 |
---|---|
192.168.1.4 | NFS-Client(App-Server) |
192.168.1.7 | NFS-Master |
192.168.1.8 | NFS-Backup |
上面全部的基础工做我就不记录命令了,很是简单。mysql
drbd的原理不赘述了,能够参考个人另外一篇博文:http://www.cnblogs.com/liaojiafa/p/6118425.html 。这里咱们采用C协议(backup端网络接收到后写入磁盘再返回OK状态给Master)。
开始动手配置它吧。linux
在nfs主备服务器都敲下面的命令sql
安装DRBDvim
[root@nfsmaster ~]# yum -y update kernel kernel-devel [root@nfsmaster ~]# rpm -Uvh http://www.elrepo.org/elrepo-release-6-6.el6.elrepo.noarch.rpm [root@nfsmaster ~]# yum -y install drbd84-utils kmod-drbd84
格式化磁盘api
主备都安装drbd之后,咱们就开始格式化磁盘。这里我把/dev/sdb直接分红主分区,大小为20G,在这基础之上,作了LVM卷,划分大小为10G。主备同时操做:服务器
[root@nfsmaster ~]# fdisk /dev/sdb [root@nfsmaster ~]# pvcreate /dev/sdb1 [root@nfsmaster ~]# vgcreate nfsdisk /dev/sdb1 [root@nfsmaster ~]# lvcreate -L 10G -n nfsvolume nfsdisk [root@nfsmaster ~]# lvdisplay # 刚才建立LVM卷的信息 --- Logical volume --- LV Path /dev/nfsdisk/nfsvolume LV Name nfsvolume VG Name nfsdisk LV UUID ub6vWZ-kX6r-zNdz-mzRy-7z1w-QsKb-ke8QBO LV Write Access read/write LV Creation host, time nfsmaster, 2016-12-03 16:06:41 +0800 LV Status available # open 0 LV Size 10.00 GiB Current LE 2560 Segments 1 Allocation inherit Read ahead sectors auto - currently set to 256 Block device 253:0
配置完成后,把master的drbd相关配置文件直接copy到backup上面就好了,我使用的是SCP。网络
启动drbd
磁盘建立成功后,开始启动drbd了:·
[root@nfsbackup ~]# drbdadm create-md r0 [root@nfsmaster ~]# service drbd start [root@nfsmaster ~]# drbdadm primary r0 # 到这里报错了,一看DRBD状态,二者不一样步的状态,因此没法切换到primary。 [root@nfsmaster ~]# service drbd status drbd driver loaded OK; device status: version: 8.4.7-1 (api:1/proto:86-101) GIT-hash: 3a6a769340ef93b1ba2792c6461250790795db49 build by mockbuild@Build64R6, 2016-01-12 13:27:11 m:res cs ro ds p mounted fstype 0:r0 Connected Secondary/Secondary Inconsistent/Inconsistent C # inconsisten是二者数据不一样步状态。 [root@nfsmaster ~]# drbdadm -- --overwrite-data-of-peer primary all #不一样步的话,咱们在master节点执行这条命令。意思是让备的数据和主的一致。 [root@nfsmaster ~]# drbd-overview # 此时可以看到同步状态了 0:r0/0 SyncSource Primary/Secondary UpToDate/Inconsistent [================>...] sync'ed: 86.3% (1408/10236)M [root@nfsmaster ~]# drbd-overview # 这个时候的状态表示同步成功。 0:r0/0 Connected Primary/Secondary UpToDate/UpToDate [root@nfsmaster ~]# mkfs.ext4 /dev/drbd0 #格式化磁盘,待会准备使用
安装heartbeat
采用yum安装,
[root@nfsmaster ~]# rpm -vih http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm [root@nfsmaster ~]# yum -y install heartbeat heartbeat-devel heartbeat-stonith heartbeat-pils
配置heartbeat
[root@nfsmaster ~]# cp /usr/share/doc/heartbeat-3.0.4/ha.cf /etc/ha.d/ [root@nfsmaster ~]# cp /usr/share/doc/heartbeat-3.0.4/haresources /etc/ha.d/ [root@nfsmaster ~]# cp /usr/share/doc/heartbeat-3.0.4/authkeys /etc/ha.d/ [root@nfsmaster ~]# chmod 600 /etc/ha.d/authkeys #必须是600权限 [root@nfsmaster ~]# grep -v ^# /etc/ha.d/haresources nfsmaster IPaddr::192.168.1.100/24/eth0 drbddisk::r0 Filesystem::/dev/drbd0::/nfs::ext4 #drbddisk后面的r0是资源名,drbd配置文件定义的。 [root@nfsmaster ~]# grep -v ^# /etc/ha.d/ha.cf #主配置文件 logfile /var/log/ha-log #指定heartbeat日志文件的位置 keepalive 1 # 心跳发送时间间隔 deadtime 5 # 备用节点5s内没有检测到master机的心跳,确认对方故障 warntime 2 # 警告2次 initdead 10 # 守护进程启动30s后,启动服务资源。 ucast eth0 192.168.1.8 # 另外一台主机节点eth0的地址,注意是另外一台。 auto_failback off # 当primary节点切换到secondary节点以后,primary节点恢复正常,不进行切回操做,由于切换一次mysql master成本很高。 node nfsmaster # 定义两个节点的主机名,一行写一个。 node nfsbackup respawn hacluster /usr/lib64/heartbeat/ipfail #开启dopd功能 respawn hacluster /usr/lib64/heartbeat/dopd apiauth ipfail gid=haclient uid=hacluster apiauth dopd gid=haclient uid=hacluster [root@nfsmaster ~]# grep -v ^# /etc/ha.d/authkeys #认证文件 auth 1 1 sha1 HA_DB [root@nfsmaster ~]# vim /etc/ha.d/resource.d/drbddisk 69 $DRBDADM --force primary $RES && break # 更改第69行,添加--force。
配置完成后,把配置文件copy到backup上面便可。不过须要改动的是/etc/ha.d/ha.cf下面的ucast参数,还有/etc/ha.d/haresources下面的nfsmaster,改为nfsbackup,与主机名一致。
启动heartbeat
[root@nfsmaster ~]# service heartbeat start [root@nfsmaster ~]# ip a|grep 'inet ' inet 127.0.0.1/8 scope host lo inet 192.168.1.7/24 brd 192.168.1.255 scope global eth0 inet 192.168.1.100/24 brd 192.168.1.255 scope global secondary eth0 # VIP已经在了,启动成功
设置开机自启动
[root@nfsmaster ~]# chkconfig heartbeat on [root@nfsmaster ~]# chkconfig drbd on
下面开始说说NFS结合drbd+heartbeat作高可用吧。