溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶(hù)服務(wù)條款》

實(shí)時(shí)同步工具原理解釋及環(huán)境準(zhǔn)備inotify

發(fā)布時(shí)間:2020-08-03 22:02:14 來(lái)源:網(wǎng)絡(luò) 閱讀:181 作者:54vison 欄目:系統(tǒng)運(yùn)維

實(shí)時(shí)同步,確保主服務(wù)器故障時(shí)將丟失數(shù)據(jù)的風(fēng)險(xiǎn)降到最低,實(shí)現(xiàn)原理就是當(dāng)主服務(wù)器接收到數(shù)據(jù)時(shí)同時(shí)復(fù)制到另一服務(wù)器上,確保有多一份數(shù)據(jù)。

用到的工具:inotify或者sersync,這次使用inotify演示。

當(dāng)inotify運(yùn)行時(shí)會(huì)時(shí)刻監(jiān)控著文件系統(tǒng)(inode、block等屬性)

?

當(dāng)inotify監(jiān)控到目錄有增加、修改、刪除、移動(dòng)操作時(shí)會(huì)調(diào)用rsync命令將目錄傳輸?shù)綗醾淦魃稀?/font>

實(shí)時(shí)同步工具原理解釋及環(huán)境準(zhǔn)備inotify

?

部署:

安裝inotify,檢查系統(tǒng)是否支持inotify

Linux內(nèi)核從2.6.13起加入inotify

出現(xiàn)如下所示則表示支持

實(shí)時(shí)同步工具原理解釋及環(huán)境準(zhǔn)備inotify

?

自帶ISO沒(méi)有inotify,需要自己下載

https://github.s3.amazonaws.com/downloads/rvoicilas/inotify-tools/inotify-tools-3.14.tar.gz

?

安裝inotify需要C編譯器支持,需要提前安裝gcc編譯器

否則可能出現(xiàn)這個(gè)錯(cuò)誤

實(shí)時(shí)同步工具原理解釋及環(huán)境準(zhǔn)備inotify

?

可以使用echo $?查看是否有錯(cuò)誤 0沒(méi)錯(cuò)誤 1有錯(cuò)誤

實(shí)時(shí)同步工具原理解釋及環(huán)境準(zhǔn)備inotify

安裝命令:

tar zxf inotify-tools-3.14.tar.gz

cd inotify-tools-3.14/

./configure --prefix=/usr/local/inotify-tools-3.14

echo $?

make && make install

echo $?

ln -s /usr/local/inotify-tools-3.14/ /usr/local/inotify-tools

ls /usr/local/inotify-tools

history

?

一共安裝了2個(gè)工具(命令),inotifywaitinotifywatch

Inotifywait:在被監(jiān)控的文件或目錄上等待特定文件系統(tǒng)事件(open、closedelete等)發(fā)生,執(zhí)行后處于阻塞狀態(tài),適合在shell腳本中使用。(監(jiān)控文件狀態(tài))

Inotifywatch:收集被監(jiān)視的文件系統(tǒng)使用度統(tǒng)計(jì)數(shù)據(jù),指文件系統(tǒng)時(shí)間發(fā)生的次數(shù)統(tǒng)計(jì)。

?

Inotifywait

參數(shù)解析:

-r????? 遞歸查詢(xún)目錄

-q????? 打印很少的信息,僅打印監(jiān)控事件的信息

-m??? 始終保持事件監(jiān)聽(tīng)狀態(tài)

--excludei????????? 排除文件或目錄時(shí),不區(qū)分大小寫(xiě)

--timefmt????????? 指定時(shí)間輸出的格式

–format:
%w
表示發(fā)生事件的目錄
%f
表示發(fā)生事件的文件
%e
表示發(fā)生的事件
%Xe
事件以“X”分隔
%T
使用由–timefmt
定義的時(shí)間格式

-e 事件

以下選項(xiàng)都是接在-e 后面的

實(shí)時(shí)同步工具原理解釋及環(huán)境準(zhǔn)備inotify

?

測(cè)試:

開(kāi)2個(gè)創(chuàng)建一直監(jiān)控一直執(zhí)行

[root@nfs-server ~]# /usr/local/inotify-tools/bin/inotifywait -mrq --timefmt '%d/%m/%y %H:%M' --format '%T %w%f' -e create /data

?

其中參數(shù)解釋?zhuān)?/font>

-r????? 遞歸查詢(xún)目錄

-q????? 打印很少的信息,僅打印監(jiān)控事件的信息

-m??? 始終保持事件監(jiān)聽(tīng)狀態(tài)

?

Timefmt時(shí)間戳格式 日月年 時(shí)分

–format:
%w
表示發(fā)生事件的目錄
%f
表示發(fā)生事件的文件

%T
使用由–timefmt
定義的時(shí)間格式

?

?

當(dāng)我創(chuàng)建文件的是時(shí)候會(huì)自動(dòng)記錄。

實(shí)時(shí)同步工具原理解釋及環(huán)境準(zhǔn)備inotify

?[root@nfs-server ~]# /usr/local/inotify-tools/bin/inotifywait -mrq --timefmt '%d/%m/%y %H:%M' --format '%T %e:%w%f' -e create /data

22/11/19 11:21 CREATE:/data/12345.txt

?

創(chuàng)建腳本,當(dāng)監(jiān)控到文件有變化時(shí)自動(dòng)同步.

#!/bin/bash

inotify=/usr/local/inotify-tools/bin/inotifywait

$inotify -mrq --format '%w%f' -e create,close_write,delete /data \

|while read file

do

?cd /data &&

?rsync -az ./ --delete rsync_backup@192.168.24.32::backup \

?--password-file=/etc/rsync.password

done

全路徑后臺(tái)運(yùn)行該腳本,并且寫(xiě)入rc.local

?/bin/sh /rsync.sh &

?

這步完成后,基本上每當(dāng)/data這個(gè)目錄有增刪改都會(huì)自動(dòng)同步到backup服務(wù)器上的/backup/data目錄上

?

應(yīng)用場(chǎng)景200~300并發(fā)以?xún)?nèi)可以使用這套方案(中小型企業(yè))。

?

?

實(shí)時(shí)同步優(yōu)化及應(yīng)用極限建議

?

/proc/sys/fs/inotify目錄下有三個(gè)文件,對(duì)inotify’機(jī)制有一定的限制

Max_user_watches:設(shè)置inotifywaitinotifywatch命令可以監(jiān)視的文件數(shù)量(單進(jìn)程)

Max_user_instances:設(shè)置每個(gè)用戶(hù)可以允許的inotifywaitinotifywatch命令的進(jìn)程數(shù)

Max_queued_events:設(shè)置inotify實(shí)例時(shí)間(event)隊(duì)列可容納的時(shí)間數(shù)量。

?

Inotify優(yōu)點(diǎn):

1) 實(shí)時(shí)數(shù)據(jù)同步

Inotify缺點(diǎn):

1) 并發(fā)如果大于200個(gè)文件(10-100K),同步就會(huì)有延遲。

2) 監(jiān)控到事件后,調(diào)用rsync同步是單進(jìn)程的(加&并發(fā)),sersync多進(jìn)程同步。既然有了inotify-tools,為什么還要sersync?

Sersync功能多:

1)配置文件。

2)真正的守護(hù)進(jìn)程socket。

3)可以對(duì)失敗文件定時(shí)重傳(定時(shí)任務(wù))。

4)第三方的HTTP接口。

5)默認(rèn)多線(xiàn)程同步。

?

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI