rsync+inotify實現數據的實時同步

rsync是Linux/UNIX下的文件同步和數據傳輸工具。rsync即remote sync,有如下特性:

1>可以鏡像保存整個目錄樹和文件系統

2>可以增量同步數據,文件傳輸效率高

3>可以保持原有文件的權限,時間等屬性

4>加密傳輸數據,保證數據安全性

5>支持匿名傳輸


rsync的4中應用模式:

1>shell應用模式,也成本地模式

2>遠程shell模式,利用SSH執行底層連接和加密傳輸

3>查詢模式,也稱列表模式

4>服務模式,即rsync服務器


rsync的不足

1>rsync同步數據時需要掃描所有的文件後進行對比,然後進行差量傳輸。如果文件數量太大,rsync就顯得非常低效

2>rsync不能實時監測、同步數據


inotify是一種強大的、細粒度的、異步的文件系統事件監控機制。Linux內核從2.6.13.開始加入對inotify的支持。

通過inotify可以監控文件系統中添加、刪除、修改、移動等各種細微事件,利用內核接口,第三方軟件可以 監控文件系統的各種變化。


inotify-tools就是一個三方軟件,安裝完後會生成inotifywait和inotifywatch兩個命令:

   inotifywait用於等待文件或文件集上的一個特定事件,可以監控任何文件和目錄設置,並且可以遞歸地監控整個目錄樹;inotifywatch用於收集被監控的文件系統統計數據,包括每個inotify事件發生多少次等信息。


/proc/sys/fs/inotify/max_queued_events  表示調用inotify_init時分配到inotify instance中可排隊的event數的最大值,超出這個值得事件丟棄,但觸發IN_Q_OVERFLOW事件。

/proc/sys/fs/inotify/max_user_instances 表示每一個real user ID可以創建的inotify instance數量的上限

/proc/sys/fs/inotify/max_user_watches 表示每個inotify實例相關聯的watches的上限,也就是每個inotify實例可監控的最大目錄數量,如果監控文件數量巨大,需要根據情況適當的增加此值的大小。



inotifywait是一個監控等待事件:

 -m,monitor表示始終保持事件監聽狀態

 -r,recursive表示遞歸查詢目錄

 -q,quit表示打印出監控事件

 -e,event指定要監控的事件,常見的事件有modify,delete,create和attrib等



案例:保證3臺web服務器上的文件是一致的。

1、安裝rsync和inotify-tools

inotify-tools是監控文件系統變化的工具,安裝到內容發佈節點,3服務節點安裝rsync。

說明:inotify-tools節點充當rsync客戶端的角色,3臺服務節點充當rsync服務器角色,整個數據同步過程就是一個從客戶端向服務端發送數據的過程。

2、服務節點上配置rsync

vim rsyncd.conf

uid = nobody

gid = nobody

use chroot = no

max connections = 10

strict modes = yes

pid file = /var/run/rsyncd.pid

locak file = /var/run/rsync.lock

log file = /var/log/rsyncd.log


[web1]

path = /web1/wwwroot/

comment = web1 file

ignore errors

read only = no

write only = no

hosts allow = inotift-tools_ipaddress

hosts deny = *

list = false

uid = root

gid = root

auth users = web1user

secrets file = /etc/web1.pass

再配置完上3臺服務節點後,依次啓動rsync:echo "/usr/local/bin/rsync --daemon" >> /etc/rc.local


3、配置內容分佈節點inotify-tools

目的是將生成的html網頁實時同步到集羣中的服務節點上。


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