Rsync+Inotify數(shù)據(jù)實(shí)時(shí)同步介紹
一、rsync概述
rsync(remote sync)?遠(yuǎn)程同步,rsync?是linux系統(tǒng)下的數(shù)據(jù)鏡像備份工具。使用快速增量備份工具Remote Sync可以遠(yuǎn)程同步,支持本地復(fù)制,或者與其他SSH、rsync主機(jī)同步。已支持跨平臺(tái),可以在Windows與Linux間進(jìn)行數(shù)據(jù)同步。rsync監(jiān)聽端口:873?,rsync運(yùn)行模式:C/S。
官網(wǎng):https://rsync.samba.org/官方文檔:https://www.samba.org/ftp/rsync/rsync.htmlGitHub地址:https://github.com/WayneD/rsync
二、rsync優(yōu)缺點(diǎn)
1)優(yōu)點(diǎn)
- 可以鏡像保存整個(gè)目錄樹和文件系統(tǒng);
 - 可以做到保持原來文件的權(quán)限、時(shí)間、軟硬鏈接等等;
 - 無須特殊權(quán)限即可安裝;
 - 可以有排除指定文件或目錄同步的功能,相當(dāng)于打包命令tar的排除功能;
 - 可以使用rcp、ssh等方式來傳輸文件,rsync本身不對(duì)數(shù)據(jù)加密;
 - 支持匿名傳輸,可以實(shí)現(xiàn)方便安全的進(jìn)行數(shù)據(jù)備份和鏡像;
 - 可以實(shí)現(xiàn)增量同步,既只同步發(fā)生變化的數(shù)據(jù),因此數(shù)據(jù)傳輸效率很高;
 - 可以通過socket(進(jìn)程方式)傳輸文件和數(shù)據(jù)。
 
2)缺點(diǎn)
- 同步數(shù)據(jù),需要掃描所有文件進(jìn)行對(duì)比,才進(jìn)行差量傳輸。如果文件數(shù)量達(dá)到百萬甚至千萬級(jí),掃描文件對(duì)比文件將非常耗時(shí),降低了rsync效率;
 - rsync不能實(shí)時(shí)地區(qū)監(jiān)測(cè)、同步數(shù)據(jù)。雖然可以通過守護(hù)進(jìn)程方式觸發(fā)同步,但兩次動(dòng)作間有時(shí)間差,導(dǎo)致數(shù)據(jù)不一致,無法應(yīng)對(duì)出現(xiàn)故障時(shí)完全恢復(fù)數(shù)據(jù)。
 
解決方法:rsync+inotify
三、rsync+inotify配置與安裝
IP  | 主機(jī)名  | 角色  | 
192.168.0.113  | k8s-master-168-0-113  | rsync、 inotify-tools【數(shù)據(jù)源】  | 
192.168.0.116  | k8s-master2-168-0-116  | rsync【備份節(jié)點(diǎn)】  | 

1)rsync安裝
2)rsync配置
rsyncd.conf 常用參數(shù)詳解
rsyncd.conf 參數(shù)  | 參數(shù)說明  | 
uid=root  | rsync 使用的用戶。  | 
gid=root  | rsync 使用的用戶組(用戶所在的組)  | 
use chroot=no  | 如果為 true,daemon 會(huì)在客戶端傳輸文件前“chroot to the path”。這是一種安全配置,因?yàn)槲覀兇蠖鄶?shù)都在內(nèi)網(wǎng),所以不配也沒關(guān)系  | 
max cnotallow=200  | 設(shè)置最大連接數(shù),默認(rèn) 0,意思無限制,負(fù)值為關(guān)閉這個(gè)模塊  | 
timeout=400  | 默認(rèn)為 0,表示 no timeout,建議 300-600(5-10 分鐘)  | 
pid file  | rsync daemon 啟動(dòng)后將其進(jìn)程 pid 寫入此文件。如果這個(gè)文件存在,rsync 不會(huì)覆蓋該文件,而是會(huì)終止  | 
lock file  | 指定 lock 文件用來支持“max connections”參數(shù),使得總連接數(shù)不會(huì)超過限制  | 
log file  | 不設(shè)或者設(shè)置錯(cuò)誤,rsync 會(huì)使用 rsyslog 輸出相關(guān)日志信息  | 
ignore errors  | 忽略 I/O 錯(cuò)誤  | 
read notallow=false  | 指定客戶端是否可以上傳文件,默認(rèn)對(duì)所有模塊為 true  | 
list=false  | 是否允許客戶端可以查看可用模塊列表,默認(rèn)為可以  | 
hosts allow  | 指定可以聯(lián)系的客戶端主機(jī)名或和 ip 地址或地址段,默認(rèn)情況沒有此參數(shù),即都可以連接  | 
hosts deny  | 指定不可以聯(lián)系的客戶端主機(jī)名或 ip 地址或地址段,默認(rèn)情況沒有此參數(shù),即都可以連接  | 
auth users  | 指定以空格或逗號(hào)分隔的用戶可以使用哪些模塊,用戶不需要在本地系統(tǒng)中存在。默認(rèn)為所有用戶無密碼訪問  | 
secrets file  | 指定用戶名和密碼存放的文件,格式;用戶名;密碼,密碼不超過 8 位  | 
[backup]  | 這里就是模塊名稱,需用中括號(hào)擴(kuò)起來,起名稱沒有特殊要求,但最好是有意義的名稱,便于以后維護(hù)  | 
path  | 這個(gè)模塊中,daemon 使用的文件系統(tǒng)或目錄,目錄的權(quán)限要注意和配置文件中的權(quán)限一致,否則會(huì)遇到讀寫的問題  | 
配置/etc/rsyncd_users.db,跟auth users對(duì)應(yīng)  | 
rsync常用命令參數(shù)詳解
3)啟動(dòng)rsync服務(wù)
4)測(cè)試驗(yàn)證




5)編譯安裝 inotify-tools
1、inotify-tools概述
- inotify是一種強(qiáng)大的、細(xì)粒度的、異步的文件系統(tǒng)事件監(jiān)控機(jī)制,比如讀取、寫入和創(chuàng)建。Inotify 反應(yīng)靈敏,用法非常簡(jiǎn)單,并且比 cron 任務(wù)的繁忙輪詢高效得多。
 - linux內(nèi)核從 2.6.13 起,加入了inotify支持,通過inotify可以監(jiān)控文件系統(tǒng)中添加、刪除,修改、移動(dòng)等各種細(xì)微事件,利用這個(gè)內(nèi)核接口,第三方軟件就可以監(jiān)控文件系統(tǒng)下文件的各種變化情況,而inotify-tools就是這樣的一個(gè)第三方軟件。
 - inotify可用于檢測(cè)單個(gè)文件,也可以檢測(cè)整個(gè)目錄。當(dāng)檢測(cè)的對(duì)象是一個(gè)目錄的時(shí)候,目錄本身和目錄里的內(nèi)容都會(huì)成為檢測(cè)的對(duì)象。
 
在192.168.0.113機(jī)器上安裝
2、優(yōu)化inotify內(nèi)核參數(shù)
在/proc/sys/fs/inotify?目錄下有max_queued_events、max_user_instances、max_user_watches這三個(gè)文件
- max_queued_events:表示調(diào)用inotify_init時(shí)分配給inotify instance中可排隊(duì)的event的數(shù)目的最大值,超出這個(gè)值的事件被丟棄,但會(huì)觸發(fā)IN_Q_OVERFLOW事件;
 - max_user_instances:表示每一個(gè)用戶可創(chuàng)建的inotify instatnces的數(shù)量上限,默認(rèn)128;
 - max_user_watches:表示同一用戶同時(shí)可以添加的watch數(shù)量。
 
3、inotify-tools下載
4、inotify-tools編譯安裝
5、編寫觸發(fā)式同步腳本
inotifywait命令常用參數(shù):

執(zhí)行















 
 
 









 
 
 
 