一.简介

NFS是单点的,如果一个节点出现问题,那使用它挂载服务的都将出现问题。所以需要高可用,挂掉一台不影响。
采用keepalived+rsync+inotify-tools

环境: ubuntu16.4
nfs1 192.168.1.1 /mnt/server
nfs2 192.168.1.2 /mnt/server

虚拟地址 192.168.1.3

二.操作

基本配置

1.机器之间添加信任关系免密码登录,安装nfs

2.有三项输出,则表示默认支持inotify,可以安装inotify-tools工具.
ll /proc/sys/fs/inotify

-rw-r—r— 1 root root 0 Oct 18 12:18 max_queued_events
-rw-r—r— 1 root root 0 Oct 18 12:18 max_user_instances
-rw-r—r— 1 root root 0 Oct 18 12:18 max_user_watches

同步配置(2台服务器均操作)

1.编写脚本
vim sync_nfs.sh

  1. #!/bin/bash
  2. #监控本地目录,有变动则输出一下
  3. inotifywait -mrq --timefmt '%d/%m/%y %H:%M' --format '%T %w%f%e' -e close_write,delete,create,attrib /mnt/server/ | while read file
  4. do
  5. #将本地同步到远程目录,这里要根据实际情况修改
  6. rsync -avz --delete /mnt/server/ root@192.168.1.1:/mnt/server/
  7. echo " ${file} was rsynced" >>/tmp/rsync.log 2>&1
  8. done

2.添加权限并运行
chmod +x sync_nfs.sh
nohup inotify_bak.sh &

3.查看日志
tail -f /tmp/rsync.log

4.提示
如果是主备模式,则一个脚本直接同步即可,如果是双方做备份,则要写2个脚本进行互相同步

主备切换(均操作)

1.安装keepalived
apt-get install keepalived -y

2.编写文件,默认可能没有配置文件,直接新建即可
vim /etc/keepalived/keepalived.conf

  1. ! Configuration File for keepalived
  2. global_defs { #全局配置
  3. router_id lb01 #路由id号,不能重复
  4. }
  5. vrrp_script nfs #vrrp脚本命名
  6. {
  7. script "/etc/keepalived/check_nfs.sh" #要执行的脚本
  8. interval 2 #脚本指定间隔
  9. weight -40 #优先级(如果脚本执行结果为0,并且weight配置的值大于0,则优先级相应的增加,如果脚本执行结果非0,并且weight配置的值小于0,则优先级相应的减少)
  10. }
  11. vrrp_instance VI_1 { #定义一个实例
  12. state MASTER #态参数 master/backup 只是说明,具体根据优先级
  13. interface eth0 #虚IP地址放置的网卡位置
  14. virtual_router_id 51 #同一个集群id一致
  15. priority 100 #优先级决定是主还是备 越大越优先
  16. advert_int 1 #主备通讯时间间隔
  17. authentication {
  18. auth_type PASS
  19. auth_pass 1111 #认证号,集群中要一致
  20. }
  21. virtual_ipaddress {
  22. 192.168.1.3 #使用的虚拟ip,要和网段内ip不冲突
  23. }
  24. }

备份nfs配置文件,这是不一样的

  1. ! Configuration File for keepalived
  2. global_defs { #全局配置
  3. router_id lb02 #路由id号,不能重复
  4. }
  5. vrrp_script nfs #vrrp脚本命名
  6. {
  7. script "/etc/keepalived/check_nfs.sh" #要执行的脚本
  8. interval 2 #脚本指定间隔
  9. weight -40 #优先级(如果脚本执行结果为0,并且weight配置的值大于0,则优先级相应的增加,如果脚本执行结果非0,并且weight配置的值小于0,则优先级相应的减少)
  10. }
  11. vrrp_instance VI_1 { #定义一个实例
  12. state BACKUP #态参数 master/backup 只是说明,具体根据优先级
  13. interface eth0 #虚IP地址放置的网卡位置
  14. virtual_router_id 51 #同一个集群id一致
  15. priority 80 #优先级决定是主还是备 越大越优先
  16. advert_int 1 #主备通讯时间间隔
  17. authentication {
  18. auth_type PASS
  19. auth_pass 1111 #认证号,集群中要一致
  20. }
  21. virtual_ipaddress {
  22. 192.168.1.3 #使用的虚拟ip,要和网段内ip不冲突
  23. }
  24. }

3.编写检查脚本
vim /etc/keepalived/check_nfs.sh

  1. #!/bin/bash
  2. #nfs服务检测脚本,服务不存在则返回1
  3. A=`ps -aux | grep '\[nfsd\]' | wc -l`
  4. if [ $A -eq 0 ];then
  5. exit 1 #测试的时候可以加一个echo 1
  6. fi

添加权限
chmod +x /etc/keepalived/check_nfs.sh

4.测试
systemctl start keepalived

查看是否有配置的虚拟ip,ping一下试试,只会在主上面出现
ip addr

nfs高可用的更多相关文章

  1. 2 NFS高可用解决方案之NFS的搭建

    preface 我们紧接着上一篇博文的基础(drbd+heartbeat的正常工作,http://www.cnblogs.com/liaojiafa/p/6129499.html)来搭建NFS的服务. ...

  2. (转)Heartbeat+DRBD+NFS高可用案例

    原文:http://9861015.blog.51cto.com/9851015/1939521--------------------------------Heartbeat+DRBD+NFS高可 ...

  3. 1 NFS高可用解决方案之DRBD+heartbeat搭建

    preface NFS作为业界常用的共享存储方案,被众多公司采用.我司也不列外,使用NFS作为共享存储,为前端WEB server提供服务,主要存储网页代码以及其他文件. 高可用方案 说道NFS,不得 ...

  4. NFS-heartbeat-drbd模拟NFS高可用

    NFS介绍: NFS(Network File System)即网络文件系统,是FreeBSD支持的文件系统中的一种,它允许网络中的计算机之间通过TCP/IP网络共享资源.在NFS的应用中,本地NFS ...

  5. 使用DRBD+KEEPALIVED来实现NFS高可用

    目录 一 DRBD介绍 二 DRBD的模式 三 DRBD的同步协议 四 实验环境 五 安装配置 关于脑裂(split-brain)处理 一 DRBD介绍 DRBD(Distributed Replic ...

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

    一.概述 .通过ha-log日志可以看出主释放资源,备接管资源. 来自为知笔记(Wiz)

  7. 六十一.常用组件 、 Kafka集群 、 Hadoop高可用

    1.Zookeeper安装搭建Zookeeper集群并查看各服务器的角色停止Leader并查看各服务器的角色 1.1 安装Zookeeper1)编辑/etc/hosts ,所有集群主机可以相互 pin ...

  8. Nfs+Drdb+Heartbeat 数据存储高可用服务架构方案

    一.方案的应用场景 适用于2千万-3千万PV架构的网站,Nfs数据存储高可用服务方案 备注:互联网排名前30左右公司常用的架构 二.生产环境方案部署原理图 三.生产环境服务器硬件配置: 生产环境中采用 ...

  9. Centos下部署DRBD+NFS+Keepalived高可用环境记录

    使用NFS服务器(比如图片业务),一台为主,一台为备.通常主到备的数据同步是通过rsync来做(可以结合inotify做实时同步).由于NFS服务是存在单点的,出于对业务在线率和数据安全的保障,可以采 ...

随机推荐

  1. bug集锦------持续但不定期 更新

    对于个人而言:这个错误集锦是很有必要的. 为了避免误导他人,其中个人想法:用 紫色加粗 标注. 1.springboot端口冲突: Protocol handler start failed2.spr ...

  2. IT黑马-面向对象

    先说面向过程 面向过程主要考虑的是怎么做 把完成摸个需求的 所有步骤 从头到尾 逐步实现 根据开发需求,将某些功能独立的代码封装成一个又一个的函数 最后完成的代码就是顺序的调用不同的函数. 特点是: ...

  3. MySQL/MariaDB数据库的索引工作原理和优化

    MySQL/MariaDB数据库的索引工作原理和优化 作者:尹正杰  版权声明:原创作品,谢绝转载!否则将追究法律责任. 实际工作中索引这个技术是影响服务器性能一个非常重要的指标,因此我们得花时间去了 ...

  4. OpenStack核心组件-cinder存储服务

    1. cinder 介绍 Block Storage 操作系统获得存储空间的方式一般有两种: 1)     通过某种协议(SAS,SCSI,SAN,iSCSI 等)挂接裸硬盘,然后分区.格式化.创建文 ...

  5. TPA测试项目管理系统-测试用例管理

            Test Project Administrator(简称TPA)是经纬恒润自主研发的一款专业的测试项目管理工具,目前已广泛的应用于国内二十余个整车厂和零部件供应商.它可以管理测试过程 ...

  6. ACAG 0x02-8 非递归实现组合型枚举

    ACAG 0x02-8 非递归实现组合型枚举 之所以专门来写这道题的博客,是因为感觉从最根本处了解到了递归的机器实现. 主要的就是两个指令--Call和Ret. Call指令会将返回地址入栈(系统栈) ...

  7. Appium启动淘宝APP,输入搜索内容

    # -*- coding:utf-8 -*- from appium import webdriver from time import sleep desired_caps ={ 'platform ...

  8. linux中>/dev/null 2>&1和2>&1 > /dev/null

    转载:https://www.cnblogs.com/520playboy/p/6275022.html 背景 我们经常能在shell脚本中发现>/dev/null 2>&1这样的 ...

  9. STM32启动代码详细分析

    最近需要学习iap的功能,因此离不开stm32的启动代码的分析,以前看了很多遍,都看不懂,读书百遍,其义自见,因此我有看了一遍,下面的文章,挺好的,因此转载: 在上电复位后,我们都知道会先运行启动代码 ...

  10. Codeforces Round #605 (Div. 3) D. Remove One Element(DP)

    链接: https://codeforces.com/contest/1272/problem/D 题意: You are given an array a consisting of n integ ...