zoukankan      html  css  js  c++  java
  • nfs高可用

     

    一.简介

    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

  • 相关阅读:
    SpringBoot自动装配原理解析
    面试官:你知道Spring中有哪些可以让我们扩展的地方么
    Spring事件监听机制
    Spring扩展点之Aware接口族
    程序员的进阶课-架构师之路(13)-B-树
    程序员的进阶课-架构师之路(12)-2-3-4树
    程序员的进阶课-架构师之路(11)-最容易理解的红黑树
    程序员的进阶课-架构师之路(10)-霍夫曼树
    程序员的进阶课-架构师之路(9)-平衡二叉树(AVL树)
    程序员的进阶课-架构师之路(8)-二叉树
  • 原文地址:https://www.cnblogs.com/cheyunhua/p/12023369.html
Copyright © 2011-2022 走看看