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)聽(tīng)端口: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è)目錄樹(shù)和文件系統(tǒng);
- 可以做到保持原來(lái)文件的權(quán)限、時(shí)間、軟硬鏈接等等;
- 無(wú)須特殊權(quán)限即可安裝;
- 可以有排除指定文件或目錄同步的功能,相當(dāng)于打包命令tar的排除功能;
- 可以使用rcp、ssh等方式來(lái)傳輸文件,rsync本身不對(duì)數(shù)據(jù)加密;
- 支持匿名傳輸,可以實(shí)現(xiàn)方便安全的進(jìn)行數(shù)據(jù)備份和鏡像;
- 可以實(shí)現(xiàn)增量同步,既只同步發(fā)生變化的數(shù)據(jù),因此數(shù)據(jù)傳輸效率很高;
- 可以通過(guò)socket(進(jìn)程方式)傳輸文件和數(shù)據(jù)。
2)缺點(diǎn)
- 同步數(shù)據(jù),需要掃描所有文件進(jìn)行對(duì)比,才進(jìn)行差量傳輸。如果文件數(shù)量達(dá)到百萬(wàn)甚至千萬(wàn)級(jí),掃描文件對(duì)比文件將非常耗時(shí),降低了rsync效率;
- rsync不能實(shí)時(shí)地區(qū)監(jiān)測(cè)、同步數(shù)據(jù)。雖然可以通過(guò)守護(hù)進(jìn)程方式觸發(fā)同步,但兩次動(dòng)作間有時(shí)間差,導(dǎo)致數(shù)據(jù)不一致,無(wú)法應(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ù)說(shuō)明 |
uid=root | rsync 使用的用戶。 |
gid=root | rsync 使用的用戶組(用戶所在的組) |
use chroot=no | 如果為 true,daemon 會(huì)在客戶端傳輸文件前“chroot to the path”。這是一種安全配置,因?yàn)槲覀兇蠖鄶?shù)都在內(nèi)網(wǎng),所以不配也沒(méi)關(guān)系 |
max cnotallow=200 | 設(shè)置最大連接數(shù),默認(rèn) 0,意思無(wú)限制,負(fù)值為關(guān)閉這個(gè)模塊 |
timeout=400 | 默認(rèn)為 0,表示 no timeout,建議 300-600(5-10 分鐘) |
pid file | rsync daemon 啟動(dòng)后將其進(jìn)程 pid 寫(xiě)入此文件。如果這個(gè)文件存在,rsync 不會(huì)覆蓋該文件,而是會(huì)終止 |
lock file | 指定 lock 文件用來(lái)支持“max connections”參數(shù),使得總連接數(shù)不會(huì)超過(guò)限制 |
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)情況沒(méi)有此參數(shù),即都可以連接 |
hosts deny | 指定不可以聯(lián)系的客戶端主機(jī)名或 ip 地址或地址段,默認(rèn)情況沒(méi)有此參數(shù),即都可以連接 |
auth users | 指定以空格或逗號(hào)分隔的用戶可以使用哪些模塊,用戶不需要在本地系統(tǒng)中存在。默認(rèn)為所有用戶無(wú)密碼訪問(wèn) |
secrets file | 指定用戶名和密碼存放的文件,格式;用戶名;密碼,密碼不超過(guò) 8 位 |
[backup] | 這里就是模塊名稱(chēng),需用中括號(hào)擴(kuò)起來(lái),起名稱(chēng)沒(méi)有特殊要求,但最好是有意義的名稱(chēng),便于以后維護(hù) |
path | 這個(gè)模塊中,daemon 使用的文件系統(tǒng)或目錄,目錄的權(quán)限要注意和配置文件中的權(quán)限一致,否則會(huì)遇到讀寫(xiě)的問(wèn)題 |
配置/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ī)制,比如讀取、寫(xiě)入和創(chuàng)建。Inotify 反應(yīng)靈敏,用法非常簡(jiǎn)單,并且比 cron 任務(wù)的繁忙輪詢高效得多。
- linux內(nèi)核從 2.6.13 起,加入了inotify支持,通過(guò)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、編寫(xiě)觸發(fā)式同步腳本
inotifywait命令常用參數(shù):
執(zhí)行