1 NFS高可用解决方案之DRBD+heartbeat搭建
preface
NFS作为业界常用的共享存储方案,被众多公司采用。我司也不列外,使用NFS作为共享存储,为前端WEB server提供服务,主要存储网页代码以及其他文件。
高可用方案
说道NFS,不得不说它的同步技术,同步技术有两种,
- 第一种就是借助RSYNC+inotify来实现主从同步数据。
- 第二种借助DRBD,实现文件同步。
上诉两种方案都没有实现高可用,只是实现了两者数据同步。但是业务要求NFS服务器必须是高可用,所以我们在第二种同步方案的基础上,在结合heartbeat来实现高可用。
具体架构如下:
动手搭建
我们看看我们的服务器信息:
IP | 角色 |
---|---|
192.168.1.4 | NFS-Client(App-Server) |
192.168.1.7 | NFS-Master |
192.168.1.8 | NFS-Backup |
- 以上系统版本都是CentOs6.6
- heartbeat的VIP为192.168.1.100
- 我们实验室环境采用都是单张网卡,所以heartbeat监听eth0
基础工作要到位
- 确保所有服务器时间同步。
- 确保所有服务器的防火墙,Selinux关闭了。
- 且主机名配置到位,能够根据主机名知道服务器角色。
- 确保所有服务器hosts里面能够解析任意一台服务器的hostname。
上面所有的基础工作我就不记录命令了,非常简单。
搭建DRBD
drbd的原理不赘述了,可以参考我的另一篇博文:http://www.cnblogs.com/liaojiafa/p/6118425.html 。这里我们采用C协议(backup端网络接收到后写入磁盘再返回OK状态给Master)。
开始动手配置它吧。
在nfs主备服务器都敲下面的命令
安装DRBD
[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
格式化磁盘
主备都安装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了
安装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
测试drbd+heartbeat是否正常工作。
- 把master服务器拔掉往下或者直接拔电源,模拟宕机状态,看VIP是否会切换到backup上,如果能够切换,说明成功。drbd状态为primary/unknow
- 当master启动后以后,Master不会抢占backup的VIP以及drbd资源。。drbd状态为primary/Secondary
下面开始说说NFS结合drbd+heartbeat做高可用吧。
1 NFS高可用解决方案之DRBD+heartbeat搭建的更多相关文章
- 2 NFS高可用解决方案之NFS的搭建
preface 我们紧接着上一篇博文的基础(drbd+heartbeat的正常工作,http://www.cnblogs.com/liaojiafa/p/6129499.html)来搭建NFS的服务. ...
- (转)Heartbeat+DRBD+NFS高可用案例
原文:http://9861015.blog.51cto.com/9851015/1939521--------------------------------Heartbeat+DRBD+NFS高可 ...
- Heartbeat高可用解决方案
Heartbeat高可用 Heartbeat作用: 通过heartbeat,可以将资源(ip以及程序服务等资源)从一台已经故障的计算机快速转移到另一台正常运转的机器上继续提供服务,一般称之为高可用服务 ...
- 常见的MYSQL高可用解决方案
MySQL 是一种关系数据库管理系统,关联数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,这样就增加了速度并提高了灵活性.MySQL 软件采用了双授权政策(本词条"授权政策& ...
- MySQL高可用解决方案(MySQL HA Solution)
http://blog.sina.com.cn/s/blog_7e89c3f501012vtr.html 什么是高可用性?很多公司的服务都是24小时*365天不间断的.比如Call Center.这就 ...
- 浅谈mysql主从复制的高可用解决方案
1.熟悉几个组件(部分摘自网络)1.1.drbd —— DRBD(Distributed Replicated Block Device),DRBD号称是 "网络 RAID" ...
- (转)MySQL高可用解决方案
MySQL高可用解决方案 原文:http://www.ywnds.com/?p=5565 有这么两个概念,数据库的可靠性和数据库的可用性,可靠性指的是数据可靠,而可用性指的是服务可用.但是不管是可靠性 ...
- mysql高可用解决方案
浅谈mysql主从复制的高可用解决方案 1.熟悉几个组件(部分摘自网络)1.1.drbd —— DRBD(Distributed Replicated Block Device),DRBD号称 ...
- Mycat高可用解决方案三(读写分离)
Mycat高可用解决方案三(读写分离) 一.系统部署规划 名称 IP 主机名称 配置 192.168.199.112 mycat01 2核/2G Mysql主节点 192.168.199.110 my ...
随机推荐
- RabbitHub开源情况及计划
之前写过一篇".NET 平台下的插件化开发内核(Rabbit Kernel)",已经过去三个月了,期间RabbitHub并不是没有了发展更不是放弃了发展,在RabbitHub中的群 ...
- poj 1324 Holedox Moving
poj 1324 Holedox Moving 题目地址: http://poj.org/problem?id=1324 题意: 给出一个矩阵中,一条贪吃蛇,占据L长度的格子, 另外有些格子是石头, ...
- 【JavaEE企业应用实战学习记录】authorityFilter
package sanglp.servlet; import javax.servlet.*; import javax.servlet.annotation.WebFilter; import ja ...
- Android Material Design 控件常用的属性
android:fitsSystemWindows="true" 是一个boolean值的内部属性,让view可以根据系统窗口(如status bar)来调整自己的布局,如果值为t ...
- 《Android性能优化》学习笔记链接<转载>
今天找到一博文汇总了 Android性能优化 比较好的文章 ,本计划全看完,自己再精简下,因篇幅太长,先收藏了,等有时间 再仔细拜读,总结自己的看法: 第一季: http://www.csdn.ne ...
- PHP ElasticSearch的使用
系统是Windows server 2003. ElasticSearch是一个基于Lucene的稳定的.分布式.RESTFul的搜索引擎.其实所谓的RestFul就是它提供URL供你调用(建立索引和 ...
- iOS开发--QQ音乐练习,后台播放和锁屏界面
一.设置后台播放 首先允许程序后台播放 代码实现 - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOpti ...
- 【BZOJ 4600】【SDOI 2016】硬币游戏
http://www.lydsy.com/JudgeOnline/problem.php?id=4600 转化成nim游戏 因为对于每一个反面朝上的硬币编号可以拆成\(2^a3^bc\),选择这个硬币 ...
- 【UR #2】树上GCD
这道题是有根树点分治+烧脑的容斥+神奇的分块 因为是规定1为根,还要求LCA,所以我们不能像在无根树上那样随便浪了,必须规定父亲,并作特殊讨论 因为gcd并不好求,所以我们用容斥转化一下,求x为gcd ...
- 在Eclipse 中打开当前文件夹
最近试过好多次,安装插件来 在Eclipse 中打开当前文件所在文件夹,结果总是不甚如意. 烦躁了,决定还是不要使用插件了!!! 1.打开Eclipse,点击菜单栏上的Run--External To ...