nfs服務器 rip1:192.168.1.134
rip2:192.168.1.135
vip:192.168.1.137
客戶端 ip1: 192.168.1.136
ip2: 192.168.1.234
用nfs來提供共享
用keepalive來實現對nfs的高可用
用inotify來檢測文件的變化
用unison來同步主從nfs共享文件夾的數據
1.nfs服務器的搭建
yum install -y nfs-utils rpcbind
/etc/init.d/rpcbind start
/etc/init.d/nfs start
vi /etc/exports
/nfs_data/home/paixian192.168.1.0/24(rw,sync,no_wdelay)
/etc/init.d/nfs reload
chmod 755 /nfs_data
chown -R nfsnobody:nfsnobody /nfs_data
2.客戶端測試
yum install -y nfs-utils rpcbind
/etc/init.d/rpcbind start
/etc/init.d/nfs start
[root@localhost paixian]# showmount -e192.168.1.134
Export list for 192.168.1.134:
/nfs_data/home/paixian 192.168.1.0/24
nfs服務器測試成功!下一步就是要做keepalive來實現高可用
3.keepalive實現nfs高可用
http://linuxnote.blog.51cto.com/9876511/1652612
keepalive安裝可參考這個博客
http://linuxnote.blog.51cto.com/9876511/1652981
配置介紹請參考這個博客
主的keepalive配置
[root@min local]# cat/etc/keepalived/keepalived.conf|egrep -v "\#|^$"
! Configuration File for keepalived
global_defs {
notification_email {
}
notification_email_from [email protected]
smtp_server 192.168.1.135
smtp_connect_timeout 30
router_id LVS_DEVEL
}
vrrp_instance VI_1 {
state MASTER
interface eth1
virtual_router_id 51
priority 100
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
192.168.1.137/24
}
}
}
從的keepalive配置
[root@min ~]# cat /etc/keepalived/keepalived.conf|egrep -v"\#|^$"
! Configuration File for keepalived
global_defs {
notification_email {
}
notification_email_from [email protected]
smtp_server 192.168.1.135
smtp_connect_timeout 30
router_id LVS_DEVEL
}
vrrp_instance VI_1 {
state BACKUP
interface eth0
virtual_router_id 51
priority 99
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
192.168.1.137/24
}
}
}
客戶機測試
[root@localhost paixian]#showmount -e192.168.1.137
Export list for 192.168.1.137:
/nfs_data/home/paixian 192.168.1.0/24
看來需求是可以解決了,當在客戶機刪除或者創建一個文件的時候就會同步到別的客戶機和主nfs服務器上,那麼問題來了,另外一臺從的nfs服務器該如何同步呢?那麼我們需要用到unison+inotify來實現主從那個共享文件的互相同步了
4.用inotify+unison實現共享文件互相同步
unison參考文檔 http://yangsc.blog.51cto.com/7051889/1580846
http://wenku.baidu.com/link?url=PeWElTzzYAYnzBLLMbJRL5GV34QAVriXf6W_sSpBfP1OYNfFqESsaCeO6rpYGdIe6na344u9bwyqZUx6gM6PrUQX6DPoeBHtFImnrrRsnIS&qq-pf-to=pcqq.group
1.135上的操作
wgethttp://caml.inria.fr/pub/distrib/ocaml-3.12/ocaml-3.12.0.tar.gz ///下載2進制安裝程序
tar xf ocaml-3.12.0.tar.gz
cd ocaml-3.12.0
./configure
make world opt
make install
wgethttp://www.seas.upenn.edu/~bcpierce/unison//download/releases/stable/unison-2.48.3.tar.gz
mv unison-2.48.3.tar.gz ../
cd ..
tar xf unison-2.48.3.tar.gz
cd unison-2.48.3
make UISTYLE=text
yum install emacs -y(報錯etags安裝emacs)
mkdir /root/bin/
cp unison /root/bin/(報錯沒有/root/bin這個文件夾)
make install
雙機互信:
ssh-keygen
ssh-copy-id -i .ssh/[email protected](2臺互相做)
scpunison [email protected]:/usr/local/bin/unison
134上創一個/root/bin目錄然後把unison複製到/root/bin下面
創建文件[root@min paixian]# cat /root/.unison/default.prf
#Unison preferences file
batch= true
owner= true
group= true
perms= -1
fastcheck= true
rsync= false
sshargs= -C
xferbycopying= true
confirmbigdel= false
log= true
logfile= /home/unison/unison.log
然後複製到134上
scp/root/.unison/default.prf 192.168.1.134:/root/.unison/default.prf
1.135和1.134安裝inotify
更多的inotify與rsync的同步請看http://10554846.blog.51cto.com/10544846/1693630
wget http://github.com/downloads/rvoicilas/inotify-tools/inotify-tools-3.14.tar.gz
mvinotify-tools-3.14.tar.gz /usr/local
cd /usr/local
tar xf inotify-tools-3.14.tar.gz
mv inotify-3.14 inotify
./configure
make&&make install
寫腳本檢測變同步
[root@minpaixian]# cat /usr/local/unison.sh
inotifywait-mrq --timefmt '%Y/%m/%d-%H:%M:%S' --format '%T %w %f %e' -emodify,attrib,move,create,delete /nfs_data/home/paixian|while read files
do
/root/bin/unison/nfs_data/home/paixian ssh://192.168.1.134//nfs_data/home/paixian &&echo "${files} was rsynced" >>/tmp/unison.log 2>&1
done
複製到134
scp/usr/local/unison.sh 192.168.1.134:/usr/local/unison.sh
然後修改裏面的ip爲192.168.1.135即可
開始同步可能得花很長一段時間
但後面就可以做到4臺甚至N臺(只要你多幾臺掛載就行)實時同步並且高可用了