Sersync + rsync 實現實時同步服務
sersync2二進制包目錄規劃
/app/tools/sersync/
/app/tools/sersync/bin
/app/tools/sersync/conf
項目架構是這樣的:
+-------------------+ +-------------------+ +-------------------+
| | | | | |
| Web Server | -----> | NFS Server | -----> | Backup Server |
| | | | | |
+-------------------+ +-------------------+ +-------------------+^ ^ ^| | || | |(通過NFS掛載) (提供共享目錄) (實時同步數據)
首先需要在rsync服務端更改一下配置文件,增加nfsbackup模塊,
[nfsbackup]
path = /nfsbackup
comment = nfsbackup Directory
read only = no
list = no # 禁止列出模塊(安全建議)
再創建nfsbackup
文件夾
mkdir /nfsbackup/ -p
最后重啟rsyncd服務
systemctl restart rsyncd
NFS服務器的相關配置
先決條件:創建data目錄,掛載本地目錄
mkdir /data/ -p
mount -t nfs /data/ /mnt
接下來需要更改NFS的配置文件,它是/etc/exports
vim /etc/exports
增加一行
/nfsdata 192.168.179.0/24(rw,sync,all_squash,anonuid=1999,anongid=1999,no_subtree_check)
然后重新加載一下nfs 服務
systemctl reload nfs
- 配置sersync2,先創建目錄
mkdir /app/tools/sersync/ -p
mkdir /app/tools/sersync/bin -p
mkdir /app/tools/sersync/conf -p
下載sersync的二進制包到本地
wget https://storage.googleapis.com/google-code-archive-downloads/v2/code.google.com/sersync/sersync2.5.4_64bit_binary_stable_final.tar.gz
解壓壓縮包,然后進入目錄,里面有兩個文件,sersync2是二進制包,可以直接運行。confxml.xml是sersync的配置文件
tar -zxvf sersync2.5.4_64bit_binary_stable_final.tar.gz
cd GNU-Linux-x86
[root@nfs-01 GNU-Linux-x86]# ll
total 1772
-rwxr-xr-x 1 root root 2214 Oct 26 2011 confxml.xml
-rwxr-xr-x 1 root root 1810128 Oct 26 2011 sersync2
對于sersync2,可以使用軟鏈接的方式放到/bin目錄下,不需要移動文件
ln -s /app/tools/sersync/bin/sersync2 /bin
然后進入/app/tools/sersync/conf目錄下,修改confxml.xml這個配置文件
cd /app/tools/sersync/conf
vim confxml.xml
<localpath watch="/data"><remote ip="192.168.179.152" name="nfsbackup"/><!--<remote ip="192.168.8.39" name="tongbu"/>--><!--<remote ip="192.168.8.40" name="tongbu"/>--></localpath><rsync><commonParams params="-artuz"/><auth start="true" users="root" passwordfile="/etc/rsync-client.pass"/><userDefinedPort start="false" port="874"/><!-- port=874 --><timeout start="false" time="100"/><!-- timeout=100 --><ssh start="false"/></rsync>
2.1 本地路徑與監控配置 (<localpath>
)
xml復制代碼<localpath watch="/監控的目錄路徑"> <!-- 示例:/data/www --><remote ip="遠程IP1" name="rsync模塊名"/> <remote ip="遠程IP2" name="rsync模塊名"/>
</localpath>
- 關鍵參數 :
watch
:需監控的本地目錄(如/data/www
),目錄需存在且有讀權限。<remote>
:可配置多個遠程服務器,ip
為遠程服務器 IP,name
對應服務端rsyncd.conf
中定義的模塊名。
2.2 rsync 參數配置 (<rsync>
)
xml復制代碼<rsync><commonParams params="-artuz --delete"/> <!-- rsync 命令參數 --><auth start="true" users="rsync用戶名" passwordfile="/密碼文件路徑"/> <!-- 認證配置 --><userDefinedPort start="false" port="874"/> <!-- 默認端口873 --><timeout start="false" time="100"/> <!-- 超時設置 --><ssh start="false"/> <!-- 是否使用SSH -->
</rsync>
-
關鍵參數:
-
commonParams
:
-artuz
:歸檔模式、遞歸、保留時間、增量同步、壓縮傳輸。--delete
:建議添加,刪除目標端多余文件(保持嚴格一致時使用)。
-
auth
:
users
:遠程rsyncd.conf
中配置的認證用戶名(如rsync_user
)。passwordfile
:本地存儲密碼的文件路徑(如/etc/rsync.pass
),文件內容僅為密碼,權限需600
。
-
userDefinedPort
:若修改了 rsync 默認端口(默認873
),需在此處啟用并指定端口。 -
ssh
:start="false"
表示使用 rsync 協議,若為true
則需配置 SSH 密鑰認證。
-
修改完之后查看區別
vimdiff /GNU-Linux-x86/confxml.xml
web服務器掛載NFS共享目錄
現在還需要掛載NFS的目錄:
先創建一個目錄,就叫做upload吧
mkdir /upload -p
然后再進行掛載:
mount -t nfs 192.168.179.151:/data
查看目錄掛載情況
df -h /upload/
軟鏈接到bin目錄
ln -s /app/tools/sersync/bin/sersync2 /bin/
使用sersync2的help命令
sersync2 -h
啟動服務
sersync2 -rdo /app/tools/bin/confxml.xml
查看狀態是否正常
ps -ef | grep sersync2
測試,在web服務器上創建十個文件
在備份服務器上查看,可以看到數據完全被同步過來了。
到此,測試通過。通過rsync+sersync2的方式完成了一個實時同步的小項目,還是非常有實戰價值的