nfs+keepalive+inotify+unison實現共享服務池的高可用

nfs服務器  rip1192.168.1.134

          rip2192.168.1.135

           vip192.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 {

[email protected]

[email protected]

   }

  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 {

[email protected]

[email protected]

   }

  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臺(只要你多幾臺掛載就行)實時同步並且高可用了


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章