1. 程式人生 > >實時同步服務(inotify+sersync)

實時同步服務(inotify+sersync)

inotify sersync 同步服務

【inotify】

一.Inotify概念

1.概念
一種強大的,細粒度的,異步文件系統事件監控機制,內核從2.6.23開始支持使用,具體監控事項(增刪改)
2.安裝軟件
yum -y install inotify-tools (前提是部署好epel源)
3.inotify軟件應用軟件前提
linux內核從2.6.13起開始使用,加入inotify支持
[root@nfs01 ~]#cd /proc/sys/fs/inotify/
[root@nfs01 /proc/sys/fs/inotify]#ls
max_queued_events 隊列容納事件:16384
max_user_instances 默認進程數:128

max_user_watches 默認監控量:8192
max_user_watches: 設置inotifywait或inotifywatch命令可以監視的文件數量(單進程)
max_user_instances: 設置每個用戶可以運行的inotifywait或inotifywatch命令的進程數
max_queued_events: 設置inotify實例事件(event)隊列可容納的事件數量
4.inotify軟件命令
/usr/bin/inotifywait 開啟實時監控服務(監控文件/目錄數據變化)
/usr/bin/inotifywatch 統計事件變化次數
5./usr/bin/inotifywait 命令參數說明

-m (--monitor) 實時監控
-r 表示遞歸
-q (--quiet) 安靜的輸出信息,不提示,或輸出重要信息
--mtime 指定時間輸出格式
--format 指定輸出格式
-e 指定監控事件參數
man strftime 可查看相關參數
6.監控重要的事件
(1)close_write事件
(2)move_to(移入)/move_from(移走)
(3)delete
(4)create
7.inotify 命令監控事件操作命令
(1)指定查看事件時間及顯示格式 --timefmt --format
[root@nfs01 /]#inotifywait -mrq --timefmt "%d-%m-%y %H:%M" --format "%T %w%f" /oldgirl/
優化二:
[root@nfs01 /]#inotifywait -mrq --timefmt "%F %H:%M" --format "%T %w%f 事件:%e" /oldgirl/
(2)指定顯示查看事件 %e
[root@nfs01 /]#inotifywait -mrq --timefmt "%d-%m-%y %H:%M" --format "%T %w%f 事件:%e" /oldgirl/
(3)指定查看的事件 -e
[root@nfs01 /]#inotifywait -mrq --timefmt "%d-%m-%y %H:%M" --format "%T %w%f 事件:%e" -e create /oldgirl/

技術分享圖片

二.部署過程

1.劃分存儲與備份服務器
2.在nfs存儲器上部署inotify監控服務器,監控相應文件或目錄數據信息變化
3.將監控的文件/目錄中變化信息進行推送,實現實時備份到rsync服務器

三.部署原理

1.rsync守護進程模式要部署完成
2.inotify實時監控數據變化服務部署
[root@nfs01 ~]#yum -y install inotify-tools 安裝inotify軟件
[root@nfs01 ~]#cd /proc/sys/fs/inotify/ 查看inotfi的相關配置文件
[root@nfs01 /]#inotifywait -mrq /oldgirl/ 開啟實時監控
3.利用腳本方式,將以上服務串聯在一起
/server/scripts/inotify.sh 編寫腳本如下
#!/bin/bash
inotifywait -mrq --format “%w%f” -e create,delete,close_wrte,moved_to /data | \
while read line
do
rsync -avz /data/ [email protected]::backup --password-file=/etc/rsync.password
done

四.inotify 優化(/proc/sys/fs/inotify/)

  1. max_user_watches 優化
    echo “50000000” >/proc/sys/fs/inotify/max_user_watches
  2. max_queued_events優化
    echo “50000000” >/proc/sys/fs/inotify/max_queued_events
    註意:以上配置重啟可能會失效,需要放置在rc.local文件中

五.inotify 優點/缺點

1.inotify 優點
監控文件系統事件變化,通過nfs共享同步工具實現數據同步
2.inotify 缺點
(1)並發如果>200個文件(4-100k),同步會有延遲
(2)腳本推送同步服務的過程中,是增量傳輸的,影響傳輸效率
(3)監控到事件時,rsync同步是單線程的,sersync是多線程同步的
(4)inotify實現同步需要編寫shell腳本,來實現實時同步

【sersync】

一.sersync 介紹

1.sersync 功能
(1)支持配置文件管理
(2)真正的守護進程是socket
(3)可以對失敗文件定時重傳(定時任務功能實現)
(4)第三方的http接口
(5)默認多線程同步
2.sersync 部署
(1)部署好rsync守護進程服務
(2)下載sersync服務
官方地址:https://github.com/wsgzao/sersync
解壓縮軟件程序包:unzip sersync_installdir_64bit.zip
將軟件程序目錄移動到指定目錄中:mv sersync/ /usr/local/
編寫sersync配置文件(/usr/local/sersync/conf)

技術分享圖片
註釋說明:實時同步的排除功能,排除特殊文件

技術分享圖片
註釋說明:指定監控文件或目錄變化的事件信息

技術分享圖片
註釋說明:配置文件主修改參數

(3)啟動sersync服務
1.授予sersync執行權
cd sersync/sbin sbin目錄下授權執行權
chmod +x sersync --- 授予sersync命令擁有執行權限
2.執行命令
./sersync?-dro?/usr/local/sersync/conf/confxml.xml
[root@nfs01 data]# ps -ef|grep sersync 查看服務啟動情況
參數:
參數-d:啟用守護進程模式
參數-r:在監控前,將監控目錄與遠程主機用rsync命令推送一遍
參數-n: 指定開啟守護線程的數量,默認為10個
參數-o:指定配置文件,默認使用confxml.xml文件
參數-m:單獨啟用其他模塊,使用 -m refreshCDN 開啟刷新CDN模塊
參數-m:單獨啟用其他模塊,使用 -m socket 開啟socket模塊
參數-m:單獨啟用其他模塊,使用 -m http 開啟http模塊
不加-m參數,則默認執行同步程序
3.sersync 總結
互聯網常見數據同步方法總結:

  1. inotify(sersync)+rsync 是文件級別的。
  2. drbd數據同步軟件,基於block塊同步
  3. 第三方軟件的同步功能:mysql同步(主從復制),oracle,mongodb
  4. 程序雙寫,直接寫兩臺服務器

實時同步服務(inotify+sersync)