天天看點

架構(day06)

sersync實時同步

實時同步目的

1.解決單點故障

2.保證資料的一緻性

sersync做實時同步的依賴

1.rsync

2.inotify

Inotify 是一個通知接口,用來監控檔案系統的各種變化,如果檔案存取,删除,移動。可以非常友善地實作檔案

異動告警,增量備份,并針對目錄或檔案的變化及時作出響應。rsync+inotify可以實觸發式實時同步增量備份

sersync官網:​​TP​​

sersync實戰

環境準備

主機名 WanIP LanIP 角色 部署服務
web01 10.0.0.7 172.16.1.7 nfs用戶端 httpd、php、nfs-utils
web02 10.0.0.8 172.16.1.8 nfs用戶端 httpd、php、nfs-utils
nfs 10.0.0.31 172.16.1.31 rsync用戶端、nfs服務端 nfs-utils、rsync、inotify-tools、sersync
backup 10.0.0.41 172.16.1.41 rsync服務端、nfs服務端(備機) nfs-utils、rsync

部署sersync

# 1.安裝sersync的依賴
 [root@nfs ~]# yum install -y rsync inotify-tools
 
 # 2.下載下傳sersync
 ## 國内下載下傳位址(盡量别用)
 [root@nfs ~]# wget
 http://test.driverzeng.com/other/sersync2.5.4_64bit_binary_stable_final.tar.gz
 
 # 3.建立安裝目錄
 [root@nfs ~]# mkdir /application
 
 # 4.解壓sersync
 [root@nfs ~]# tar xf sersync2.5.4_64bit_binary_stable_final.tar.gz -C /application/
 
 # 5.改名
 [root@nfs ~]# mv /application/GNU-Linux-x86/ /application/sersync-2.5.4
 
 # 6.修改配置檔案
 [root@nfs ~]# vim /application/sersync-2.5.4/confxml.xml 
 inotifywait -mrq --format %w %f -e create,delete,attrib,close_write /data
 
     </filter>
     <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>段中的内容相當于以下指令
 ## rsync -az --delete /data [email protected]::nfs_data --password-file=/etc/rsync.pass
 ## (指定的選項)(推送資料目錄)(匿名使用者) (IP位址) (子產品名) (指定密碼檔案)
 
     <sersync>
         <localpath watch="/data">
             <remote ip="176.16.1.41" name="nfs_data"/>
             <!--<remote ip="192.168.8.39" name="tongbu"/>-->
             <!--<remote ip="192.168.8.40" name="tongbu"/>-->
         </localpath>
         <rsync>
             <commonParams params="-az --delete"/>
             <auth start="true" users="www" passwordfile="/etc/rsync.pass"/>
             <userDefinedPort start="false" port="874"/><!-- port=874 -->
             <timeout start="false" time="100"/><!-- timeout=100 -->
             <ssh start="false"/>
         </rsync>
         <failLog path="/tmp/rsync_fail_log.sh" timeToExecute="60"/><!--default every 60mins execute once-->
         <crontab start="false" schedule="600"><!--600mins-->
             <crontabfilter start="false">
                 <exclude expression="*.php"></exclude>
                 <exclude expression="info/*"></exclude>
             </crontabfilter>
         </crontab>      
# 7.建立密碼檔案
[root@nfs data]# echo '123' > /etc/rsync.pass

# 8.授權密碼檔案
[root@nfs data]# chmod 600 /etc/rsync.pass

# 9.啟動sersync
[root@nfs sersync-2.5.4]# ./sersync2 -rdo confxml.xml

# 10.測試是否同步
[root@nfs data]# touch wjh.txt
[root@nfs data]# ll
total 0
-rw-r--r-- 1 root root 0 May 22 22:00 wjh.txt

[root@backup nfs_backup]# ll
total 0
-rw-r--r-- 1 www www 0 May 22 22:00 wjh.txt