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的單點故障問題,運維人員應該監控好,進行人工干預。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM