sersync

使用sersync 目的,實時備份重要服務器上的數據到 rsync服務器。

sersync是使用c++編寫,而且對linux系統文件系統產生的臨時文件和重複的文件操作進行過濾,所以在結合rsync同步的時候,節省了運行時耗和網絡資源。因此更快。

sersync配置起來很簡單,其中bin目錄下已經有基本上靜態編譯的2進制文件,配合bin目錄下的xml配置文件直接使用即可。

sersync使用多線程進行同步,尤其在同步較大文件時,能夠保證多個服務器實時保持同步狀態。

sersync有出錯處理機制,通過失敗隊列對出錯的文件重新同步,如果仍舊失敗,則按設定時長對同步失敗的文件重新同步。

sersync自帶crontab功能,只需在xml配置文件中開啓,即可按您的要求,隔一段時間整體同步一次。無需再額外配置crontab功能。


sersync一般是一臺服務器向多臺服務器同步

【環境】

sersync 推送端:192.168.1.133
rsync 接收端:192.168.1.244
rsync 接收端:192.168.1.241

【rsync+web服務器端的配置:】

安裝相關軟件
jie1 ~]# yum -y install rsync xinetd
#rsync服務通常基於超級守護進程xinetd管理的方式來實現,因此需要事先安裝rysnc和xinetd


【192.168.1.244】

[root@jie1 ~]# vim /etc/rsyncd.conf
############vim /etc/rsyncd.conf###############
uid = nobody
gid = nobody
use chroot = no
max connections = 3
strict modes = yes
pid file= /var/run/rsyncd.pid
log file= /var/log/rsyncd.log
[htdocs]
path = /web/htdocs
ignore errors = yes
readonly = no
write only = no
hosts allow = 192.168.1.244
list = false
uid = root
gid = root
auth users= backuper
secrets file= /etc/rsyncd.pwd
##############################################
[root@jie1 ~]#vim /etc/rsyncd.pwd
backuper:pwd123
[root@jie1 ~]# chmod 600 /etc/rsyncd.pwd
[root@jie1 ~]# chkconfig rsync on
[root@jie1 ~]# chkconfig xinetd on
後臺啓動rsync
rsync --daemon

[root@jie1 ~]# service xinetd start

Starting xinetd: [ OK ]

[root@jie1 ~]# netstat -pant | grep 873

tcp 0 0 :::873 :::* LISTEN 19876/xinetd


【sersync+web客戶端的配置:】

1)、先下載安裝sersync軟件,做初始設置
[root@jie3 ~]#wget --no-check-certificate https://sersync.googlecode.com/files/sersync2.5_64bit_binary_stable_final.tar.gz
[root@jie3 ~]# ls
anaconda-ks.cfg install.log.syslog
install.log sersync2.5_64bit_binary_stable_final.tar.gz
 mkdir /usr/local/sersync
[root@jie3 ~]#mkdir -pv /usr/local/sersync/{conf,bin,log}
mkdir: created directory `/usr/local/sersync'
mkdir: created directory `/usr/local/sersync/conf'
mkdir: created directory `/usr/local/sersync/bin'
mkdir: created directory `/usr/local/sersync/log'
[root@jie3 ~]# tar xf sersync2.5_64bit_binary_stable_final.tar.gz
[root@jie3 ~]# cd GNU-Linux-x86/
[root@jie3 GNU-Linux-x86]# ls
confxml.xml sersync2
[root@jie3 GNU-Linux-x86]# mv confxml.xml /usr/local/sersync/conf/
[root@jie3 GNU-Linux-x86]# mv sersync2 /usr/local/sersync/bin/
[root@jie3 GNU-Linux-x86]# cd /usr/local/sersync/
[root@jie3 sersync]# echo "PATH=/usr/local/sersync/bin:$PATH" >>/etc/profile.d/sersync.sh
[root@jie3 sersync]# source /etc/profile.d/sersync.sh
[root@jie3 sersync]# echo "pwd123" >/usr/local/sersync/sersync.pwd
[root@jie3 sersync]# chmod 600 /usr/local/sersync/sersync.pwd


2)、修改sersync的配置文件

[root@jie3 sersync]# vim /usr/local/sersync/conf/confxml.xml

其實只要修改2個地方就好了

1、 #同步的路徑,本地的目錄

<localpath watch="/website">

#rsync服務器的ip地址和rsync配置文件裏面定義的模塊

<remote ip="192.168.1.244" name="htdocs"/> --此處ip寫rsync 服務器ip

<remote ip="192.168.1.241" name="htdocs"/>

2、<auth start="true" users="backuper" passwordfile="/usr/local/sersync/sersync.pwd"/>

這裏所寫的信息,完全跟rsync服務器上所寫的一樣。auth狀態由 false改爲 true



3、測試:在sersync服務端新建新的東西,然後再rsync客戶端看看會不會更新

[root@jie3 website]# sersync2 -r -d & --啓動服務

啓動成功後,會有這樣顯示:

run the sersync:

watch path is: /web/htdocs


然後再sersync服務端website目錄下新建東西,看看rsync客戶端會不會更新到

[root@jie3 ~]# cd /website/

[root@jie3 website]# touch index.html testdb.php test.html test.php

###rsync服務器端,查看可以來着sersync客戶端的同步文件

[root@jie1 ~]# cd /web/htdocs/

[root@jie1 htdocs]# ls

index.html testdb.php test.html test.php

[root@jie1 htdocs]#


#########################config.xml配置文件詳解#############

<head version="2.5">
 #設置本地的ip地址和監聽的端口
 <host hostip="localhost" port="8008"></host>
 #debug模式是否開啓
 <debug start="false"/>
#設置爲true,開啓debug模式,會在sersync正在運行的控制檯,打印inotify事件與rsync同步命令
 #xfs文件系統是否開啓
 <fileSystem xfs="false"/>
#對於xfs文件系統的用戶,需要將這個選項開啓,才能使sersync正常工作.
 #filter文件過濾功能
 #對於sersync監控的文件,會默認過濾系統的臨時文件(以“.”開頭,以“~”結尾),除了這些文件外,可以自定義其他需要過濾的文件。
 #同步時,是否支持正則表達式,默認關閉。
 <filter start="false">
 <exclude expression="(.*)\.svn"></exclude>
 <exclude expression="(.*)\.gz"></exclude>
 <exclude expression="^info/*"></exclude>
 <exclude expression="^static/*"></exclude>
 </filter>
 # 設置要監控的事件
 #對於inotify監控參數可以進行設置,根據您項目的特點優化srsync。
<inotify>
 <delete start="true"/>
 <createFolder start="true"/>
 <createFile start="false"/>
 <closeWrite start="true"/>
 <moveFrom start="true"/>
 <moveTo start="true"/>
 <attrib start="false"/>
 <modify start="false"/>
 </inotify>
#對於大多數應用,可以嘗試把createFile(監控文件事件選項)設置爲false來提高性能,減少 rsync通訊。因爲拷貝文件到監控目錄會產生create事件與close_write事件,所以如果關閉create事件,只監控文件拷貝結束時的事 件close_write,同樣可以實現文件完整同步。
#注意:強將createFolder保持爲true,如果將createFolder設爲false,則不會對產生的目錄進行監控,該目錄下的子文件與子目錄也不會被監控。所以除非特殊需要,請開啓。默認情況下對創建文件(目錄)事件與刪除文件(目錄)事件都進行監控,如果項目中不需要刪除遠程目標服務器的文件(目錄),則可以將delete 參數設置爲false,則不對刪除事件進行監控。
 #同步的設置,文件監控與遠程同步設置
 <sersync>
 #同步的路徑,本地的目錄
 <localpath watch="/website">
 #rsync服務器的ip地址和rsync配置文件裏面定義的模塊
 <remote ip="172.16.22.1" name="htdocs"/>
 #<!-- -->括起來表示註釋
 <!--<remote ip="192.168.8.39" name="tongbu"/>-->
 <!--<remote ip="192.168.8.40" name="tongbu"/>-->
 </localpath>
 <rsync>
 #rsync指令參數
 <commonParams params="-artuz"/>
 #rsync同步認證設置的內容,user指定用戶名,password指定存放密碼的文件路徑
 <auth start="true" users="backuper" passwordfile="/usr/local/sersync/sersync.pwd"/>
#auth start=”false” 設置爲true的時候,使用rsync的認證模式傳送,需要配置user與passwrodfile(–password-file=/etc /rsync.pas),來使用。userDefinedPort 當遠程同步目標服務器的rsync端口不是默認端口的時候使用(–port=874)。timeout設置rsync的timeout時間 (–timeout=100)。ssh 使用rsync -e ssh的方式進行傳輸
 #設置rsync遠程服務端口
 <userDefinedPort start="false" port="874"/><!-- port=874 -->
 #設置超時時間
 <timeout start="true" time="100"/><!-- timeout=100 -->
 #設置ssh加密傳輸模式,默認關閉
 <ssh start="false"/>
 </rsync>
 #設置sersync傳輸失敗日誌腳本路徑
 <failLog path="/tmp/rsync_fail_log.sh" timeToExecute="60"/><!--default every 60mins execute once-->#對於失敗的傳輸,會進行重新傳送,再次失敗就會寫入rsync_fail_log,然後每隔一段時間(timeToExecute進行設置)執行該腳本再次重新傳送,然後清空該腳本。可以通過path來設置日誌路徑。
 #設置rsync+crontab定時傳輸,默認關閉
 <crontab start="false" schedule="600"><!--600mins-->
 <crontabfilter start="false">
 <exclude expression="*.php"></exclude>
 <exclude expression=\'#\'" /*"></exclude>
 </crontabfilter>
 </crontab>
#crontab可以對監控路徑與遠程目標主機每隔一段時間進行一次整體同步,可能由於一些原因兩次失敗重傳都失敗了,這個時候如果開啓了crontab功 能,還可以進一步保證各個服務器文件一致,如果文件量比較大,crontab的時間間隔要設的大一些,否則可能增加通訊開銷。schedule這個參數是設置crontab的時間間隔,默認是600分鐘
#如果開啓了filter文件過濾功能,那麼crontab整體同步也需要設置過濾,否則雖然實時同步的時候文件被過濾了,但crontab整體同步的時候 如果不單獨設置crontabfilter,還會將需過濾的文件同步到遠程,crontab的過濾正則與filter過濾的不同,也給出了兩個實例分別對 應與過濾文件與目錄。總之如果同時開啓了filter與crontab,則要開啓crontab的crontabfilter,並按示例設置使其與 filter的過濾一一對應。



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