• 06 解决nfs单点故障问题


    sersync实时同步数据

    sersync是国⼈基于rsync+inotify-tools开发的⼯具,不仅保留了优点同时还强化了实时监控,⽂件过滤,简化配置等功能,帮助⽤户提⾼运⾏效率,节省时间和⽹络资源。

    下载安装

    #安装rsync和inotify
    [root@nfs ~]# yum install -y rsync inotify-tools
    
    #下载sersync(2.5.4稳定版本)
    wget http://down.whsir.com/downloads/sersync2.5.4_64bit_binary_stable_final.tar.gz
    
    #安装sersync(二进制包)
    [root@nfs ~]# tar xf sersync2.5.4_64bit_binary_stable_final.tar.gz
    
    #移动并改名
    [root@nfs ~]# mv GNU-Linux-x86 /usr/local/sersync
    

    配置文件解析

    #这里是intify的配置,监控全部开true
        <inotify>
    	<delete start="true"/>
    	<createFolder start="true"/>
    	<createFile start="true"/>
    	<closeWrite start="true"/>
    	<moveFrom start="true"/>
    	<moveTo start="true"/>
    	<attrib start="true"/>
    	<modify start="true"/>
        </inotify>
    
        <sersync>
    	<localpath watch="/http_data">	#这里更改要监控的目录
    	    <remote ip="192.168.15.41" name="http_backup"/>	#这里是推送的服务器的ip和模块名
    	    <!--<remote ip="192.168.8.39" name="tongbu"/>-->
    	    <!--<remote ip="192.168.8.40" name="tongbu"/>-->
    	</localpath>
    	<rsync>
    	    <commonParams params="-az --delete"/>	#这里是rsync的参数
    	    <auth start="true" users="baimo" passwordfile="/etc/rsync.passwd"/>	#这里是rsync的用户名和密码,要开启
    	    <userDefinedPort start="false" port="874"/><!-- port=874 -->#端口
    	    <timeout start="false" time="100"/><!-- timeout=100 -->
    	    <ssh start="false"/>
    	</rsync>
    

    参数

    [root@nfs sersync]# ./sersync2 -h
    set the system param
    execute:echo 50000000 > /proc/sys/fs/inotify/max_user_watches
    execute:echo 327679 > /proc/sys/fs/inotify/max_queued_events
    parse the command param
    _______________________________________________________
    参数-d:启用守护进程模式
    参数-r:在监控前,将监控目录与远程主机用rsync命令推送一遍
    c参数-n: 指定开启守护线程的数量,默认为10个
    参数-o:指定配置文件,默认使用confxml.xml文件
    参数-m:单独启用其他模块,使用 -m refreshCDN 开启刷新CDN模块
    参数-m:单独启用其他模块,使用 -m socket 开启socket模块
    参数-m:单独启用其他模块,使用 -m http 开启http模块
    不加-m参数,则默认执行同步程序
    ________________________________________________________________
    

    启动

    [root@nfs sersync]# ./sersync2 -dro confxml.xml
    [root@nfs sersync]# /usr/local/sersync/sersync2 -dro/usr/local/sersync/confxml.xml
    

    架构搭建


    环境搭建参考(改成httpd就可以了)

    解决NFS单点故障问题

    #!/bin/bash
    #NFS_change
    
    showmount -e 192.168.15.31 > /dev/null
    if [ $? -eq 1  ];then
            umount -lf /var/www/html && mount -t nfs 192.168.15.41:/http_backup /var/www/html
    else
            df -h | grep 192.168.15.31 > /dev/null
            if [ $? -eq 1 ];then
                    umount -lf /var/www/html && mount -t nfs 192.168.15.31:/http_backup /var/www/html
            fi
    fi
    

    脚本解析

    #!/bin/bash
    #NFS_change
    
    showmount -e 192.168.15.31 > /dev/null	#查看31是否可以挂载
    if [ $? -eq 1  ];then	#如果不可以挂载,则证明故障,执行下面命令挂载到41去
            umount -lf /var/www/html && mount -t nfs 192.168.15.41:/http_backup /var/www/html
    else	#如果可以挂载
            df -h | grep 192.168.15.31 > /dev/null	#查看挂载是在31还是41
            if [ $? -eq 1 ];then	#如果不在31
                    umount -lf /var/www/html && mount -t nfs 192.168.15.31:/http_backup /var/www/html	#把它挂载回31
            fi
    fi
    

    添加到定时任务

    * * * * * /xxx/xxx > /dev/null
    

    ps

    其实bug还是挺多的,但是能基本解决nfs的单点故障问题,运维人员应该监控好,进行人工干预。

  • 相关阅读:
    Vue、Node 全栈,结合使用获取数据
    Day3.18组件案例-发表评论功能
    Day3.17父组件向子组件传方法
    Day3.16父组件向子组件传值
    Day3.15组件切换动画
    Day3.14组件切换方式二
    把旧系统迁移到.Net Core 2.0 日记 (19) --UI转用adminLTE
    NopCommerce 更改发票字体
    本地可以发邮件,阿里云服务器发送邮件失败,25端口被禁用
    WIFI 万能钥匙万玉权:团队之中要有跨三界之外的“闲人” [转]
  • 原文地址:https://www.cnblogs.com/zhaokunhao/p/14691400.html
Copyright © 2020-2023  润新知