實驗環境:
同步豬服務器:192.168.1.128
同步目標服務器:192.168.1.100
軟件下載:http://code.google.com/p/sersync
sersync主要用於服務器同步,web鏡像等功能。基於boost1.43.0,inotify api,rsync command.開發。目前使用的比較多的同步解決方案是inotify-tools+rsync ,另外一個是google開源項目Openduckbill(依賴於inotify- tools),這兩個都是基於腳本語言編寫的。相比較上面兩個項目,本項目優點是:
- sersync是使用c++編寫,而且對linux系統文件系統產生的臨時文件和重複的文件操作進行過濾(詳細見附錄,這個過濾腳本程序沒有實現),所以在結合rsync同步的時候,節省了運行時耗和網絡資源。因此更快。
- 相比較上面兩個項目,sersync配置起來很簡單,其中bin目錄下已經有基本上靜態編譯的2進制文件,配合bin目錄下的xml配置文件直接使用即可。
- 另外本項目相比較其他腳本開源項目,使用多線程進行同步,尤其在同步較大文件時,能夠保證多個服務器實時保持同步狀態。
- 本項目有出錯處理機制,通過失敗隊列對出錯的文件重新同步,如果仍舊失敗,則按設定時長對同步失敗的文件重新同步。
- 本項目自帶crontab功能,只需在xml配置文件中開啓,即可按您的要求,隔一段時間整體同步一次。無需再額外配置crontab功能。
- 本項目socket與http插件擴展,滿足您二次開發的需要。
1:安裝配置同步目標主機(192.168.1.100)
yum install rsync xinetd -y
添加同步模塊 vi /etc/rsyncd.conf
uid=root
gid=root
max connections=36000
use chroot=no
log file=/var/log/rsyncd.log
pid file=/var/run/rsyncd.pid
lock file=/var/run/rsyncd.lock
[wow] #同步模塊名wow
path=/opt/wow #同步文件目錄
comment = test files
ignore errors = yes
read only = no
hosts allow = 192.168.1.128/24 #從此ip同步
hosts deny = *
使用xinetd管理rsync服務
vim /etc/xinetd.d/rsync
disable=yes改成no
/etc/init.d/xinetd start
chkconfig rsync on
2.安裝配置主同步服務器(192.168.1.128)
yum install rsync -y
tar zxf sersync2.5_64bit_biary_stable_final.tar.gz
cd GUN-Linux-x86
修改配置文件 vim confxml.xml
...
<sersync>
<localpath watch="/opt/wow"> #本地同步目錄
<remote ip="192.168.1.100" name="wow"> #同步目標服務器IP和同步模塊
<remote ip="192.168.1.101" name="wow">
<localpath>
...
運行同步腳本./sersync2 -r #遠程和本地整體同步一遍
./sersync2 -n 8 -r -d 設置線程池工作線程8個,-d打入後臺實時同步。
默認可以對多臺機器同步,如果想同步本地多個目錄
修改同步目標主機的同步模塊添加
[lol] #同步模塊名lol
path=/opt/lol #同步文件目錄
comment = test files
ignore errors = yes
read only = no
hosts allow = 192.168.1.128/24 #從此ip同步
hosts deny = *
修改主同步服務器
cp confxml.xml confxml-1.xml
vim confxml-1.xml
...
<sersync>
<localpath watch="/opt/lol"> #本地同步目錄
<remote ip="192.168.1.100" name="lol"> #同步目標服務器IP和同步模塊
<remote ip="192.168.1.101" name="lol">
<localpath>
...
執行./sersync2 -r -d打入後臺實時同步