D-35綜合架構(gòu)實時同步

一、NFS服務(wù)耦合度

nfs耦合度:

是指nfs客戶端和服務(wù)端關(guān)系過于緊密缔刹,當(dāng)nfs服務(wù)沒有正常啟動的情況下硝训,會使客戶端一直向服務(wù)端發(fā)送請求科平,而不會因服務(wù)沒有啟動而終止的現(xiàn)象

解決辦法:autofs分布式存儲(自動掛載--按需掛載)

部署位置:nfs服務(wù)客戶端
部署過程:
1.確認是否安裝服務(wù)軟件
yum install -y autofs
2.部署配置文件
第一里程
vim /etc/auto.master ==>主配置文件
掛載點 擴展配置文件路徑 -timeout n (單位:s)
如:/mnt /etc/nfs.mount -timeout 60
第二里程
vim /etc/nfs.mount ==>擴展配置文件(這里的文件路徑不固定,根據(jù)主配置文件中設(shè)定的擴展配置文件)
格式:
切入點目錄 指定掛載類型 nfs服務(wù)私網(wǎng)IP地址:共享目錄
切入點目錄就是指崭别,當(dāng)進入該目錄時冬筒,再進行自動掛載
如:
nfsdata -fstype=nfs 172.16.1.31:/data
第三里程
vim /etc/sysconfig/autofs ==>閑置時間設(shè)置
TIMEOUT=n(單位:s)
改配置可在主配置文件中進行,也可再配置文件中編輯
第四里程:
systemctl start autof
3.檢查
進入指定切入點目錄茅主,激活自動掛載操作舞痰,當(dāng)達到閑置時間不適用時則自動卸載,解決耦合度過高的問題

二诀姚、完善全網(wǎng)備份腳本

1.客戶端主機沒有發(fā)送數(shù)據(jù)時,也可以讓運維人員得知
思路一: 根據(jù)客戶端傳輸數(shù)據(jù)結(jié)果
rsync -az /etc/hosts rsync_backup@172.16.1.41::backup --password-file=/etc/rsync.password
if [ ? -ne 0 ] then echo "(hostname -i) backup is failed" | mail -s "result" 郵箱
fi
ps:想要發(fā)送郵件成功响牛,需現(xiàn)在本地服務(wù)器配置郵箱文件
思路二: 根據(jù)服務(wù)端傳輸數(shù)據(jù)結(jié)果
a. 判斷傳輸過來數(shù)據(jù)文件名稱信息(日期信息)
b. 判斷相應(yīng)主機備份目錄中是否有finger指紋文件
沒有: 報響應(yīng)主機傳輸數(shù)據(jù)失敗
有: 顯示傳輸OK 數(shù)據(jù)傳輸不完成 數(shù)據(jù)文件不存在

2.讓郵件信息按照指定格式內(nèi)容發(fā)送
awk -F "[:/ ]+" '{print 3,5,$6}' /tmp/check_data.txt(校驗結(jié)果文件) | mail -s "result" 13936276656@163.com(郵箱)

三、網(wǎng)站實時同步服務(wù):

數(shù)據(jù)備份方法:實時備份和定時備份
區(qū)別:
定時任務(wù)備份數(shù)據(jù):由內(nèi)部人員備份數(shù)據(jù)且備份數(shù)據(jù)最短周期1分鐘
實時同步備份數(shù)據(jù):由外部人員備份數(shù)據(jù)(用戶)且沒有同步等待時間
實時同步數(shù)據(jù)原理:
第一步:監(jiān)視存儲服務(wù)器上指定目錄的數(shù)據(jù)信息變化
使用inotify監(jiān)控軟件
第二步:利用同步傳輸數(shù)據(jù)軟件,將變化數(shù)據(jù)進行傳輸呀打,主要使用rsync軟件進行傳輸數(shù)據(jù)
第三步:實現(xiàn)實時傳輸數(shù)據(jù)矢赁,結(jié)合監(jiān)控軟件和同步軟件即inotify+rsync實現(xiàn)實時同步過程

image.png

四、數(shù)據(jù)監(jiān)控軟件 ==>inotify

作用: 監(jiān)控目錄中數(shù)據(jù)信息變化

安裝部署過程

第一個里程: 部署安裝軟件
yum install -y inotify-tools
ps:保證系統(tǒng)中epel源是否優(yōu)化贬丛,否則無法正常安裝
prm -ql inotify-tools 查看該服務(wù)軟件內(nèi)容
/usr/bin/inotifywait(重要) --- 監(jiān)控目錄數(shù)據(jù)信息變化命令即修改撩银、創(chuàng)建、刪除瘫寝、移動
/usr/bin/inotifywatch(了解) --- 統(tǒng)計目錄產(chǎn)生變化的信息即修改多少次蜒蕾、創(chuàng)建多少次、刪除多少次焕阿、移動多少次
第二個里程: 掌握inotifywait監(jiān)控命令用法:
--exclude <pattern> --- 進行監(jiān)控數(shù)據(jù)時,指定哪些數(shù)據(jù)信息不要進行監(jiān)控
--excludei <pattern> --- 進行監(jiān)控數(shù)據(jù)時,指定哪些數(shù)據(jù)信息不要進行監(jiān)控 根據(jù)指定數(shù)據(jù)名稱信息 無論大小寫進行排除監(jiān)控
-m|--monitor --- 一直對指定目錄進行監(jiān)控
-r|--recursive --- 遞歸監(jiān)控目錄中數(shù)據(jù)變化
--format <fmt> --- 定義輸出信息格式【%w 監(jiān)控目錄路徑信息 咪啡、%f 監(jiān)控觸發(fā)事件數(shù)據(jù)信息 、%e 相應(yīng)事件信息暮屡、%T 定時觸發(fā)事件時間信息(調(diào)用--timefmt所定義時間格式)】
--timefmt <fmt> --- 定義時間格式信息撤摸,類似于date "+%F"
-q|--quiet --- 將某些信息不要進行顯示輸出,類似于>/dev/null
-qq ---不顯示任何信息
-s|--syslog ---發(fā)錯錯誤信息到日志文件中
-e|--event --- 指定監(jiān)控的事件信息

inotify所有事件信息:

access ==> file or directory contents were read
文件或目錄內(nèi)容被讀取
modify ==> file or directory contents were written
文件或目錄內(nèi)容被寫入
attrib ==> file or directory attributes changed
文件或目錄屬性信息改變
close_write ==> file or directory closed, after being opened in writeable mode
文件或目錄被關(guān)閉, 在文件打開后寫入新的信息后關(guān)閉了文件或目錄
開發(fā): 程序修改數(shù)據(jù)信息>邏輯過程: 打開文件 --- 編輯文件 --- 關(guān)閉文件
close_nowrite ==> file or directory closed, after being opened in read-only mode
文件或目錄被關(guān)閉, 在文件打開后沒有寫入新的信息后關(guān)閉了文件或目錄
close ==> file or directory closed, regardless of read/write mode
文件或目錄被關(guān)閉, 不管文件是否是讀或是寫
open ==> file or directory opened
文件或目錄被打開
moved_to ==> file or directory moved to watched directory
文件或目錄被移動到監(jiān)控目錄中褒纲;其他目錄數(shù)據(jù) --> 監(jiān)控目錄(參照目錄)>拉取
moved_from ==> file or directory moved from watched directory
文件或目錄被移動出監(jiān)控目錄准夷;監(jiān)控目錄(參照目錄)數(shù)據(jù) --> 其他目錄中>推送
move ==> file or directory moved to or from watched directory
只要監(jiān)控目錄中,有數(shù)據(jù)移動操作
create ==> file or directory created within watched directory
在監(jiān)控目錄中,有文件或目錄數(shù)據(jù)信息創(chuàng)建操作
delete ==> file or directory deleted within watched directory
在監(jiān)控目錄中,有文件或目錄數(shù)據(jù)信息刪除操作

inotifywait參數(shù)用法示例

inotifywait -mr /data --format "%T %w %f %e" --timefmt "%F %T" -e create,delete,move,close_write                                        
Setting up watches.  Beware: since -r was given, this may take a while!
Watches established.
2019-08-19 17:07:22 /data/oldboy100/ oldboy06.txt CREATE
2019-08-19 17:07:22 /data/oldboy100/ oldboy06.txt CLOSE_WRITE,CLOSE

ps:①、--timefmt定義時間格式參數(shù)無法單獨使用莺掠,必須將定義好的格式給--format參數(shù)進行調(diào)用衫嵌,將時間格式進行顯示輸出
②、常見的時間類型信息為:增、刪讨韭、移框喳、改即在“-e”指定監(jiān)控時間信息時主要顯示的有:create/delete/move/close_write四種
③、inotify監(jiān)控數(shù)據(jù)變化命令 -- 實現(xiàn)數(shù)據(jù)變化實時同步
inotifywait -mrq /data --format "%w%f" -e create,delete,move,close_write


image.png

五酒朵、實現(xiàn)實時同步數(shù)據(jù)過程:

方法一: 編寫腳本

  1. 監(jiān)控目錄數(shù)據(jù)信息變化
    inotifywait -mrq /data --format "%w%f" -e create,delete,move,close_write|
    while read line(意思為:將監(jiān)控結(jié)果一直輸送,即死循環(huán)故用while扎附,while read就是將監(jiān)控數(shù)據(jù)信息一直不斷讀取蔫耽,并賦值給line)
  2. 將變化數(shù)據(jù)進行實時同步
    rsync -avz $line rsync_backup@172.16.1.41::backup --password-file=/etc/rsync.password

腳本信息:

#!/bin/bash
inotifywait -mrq /data --format "%w%f" -e create,delete,move,close_write|\
while read line=oldboy03.txt
do 
  rsync -avz --delete $line  rsync_backup@172.16.1.41::backup --password-file=/etc/rsync.password
done

擴展完善

  1. 如何讓腳本文件始終運行
    nohup sh /server/scripts/inotify.sh &
  2. 利用腳本數(shù)據(jù)同步完畢后, 腳本會依舊持續(xù)運行?
    cd /data && rsync -az -R "./oldboy02.txt" rsync_backup@172.16.1.41::backup --password-file=/etc/rsync.password
    cd /data && rsync -az -R --delete ./ --include="oldboy01.txt" --exclude=* rsync_backup@172.16.1.41::backup --password-file=/etc/rsync.password
    在進行無差異同步時,通過--include參數(shù)指定無差異同步的數(shù)據(jù)信息留夜,再通過--exclude將不需要的無差別同步到信息進行排除

補充:

腳本循環(huán)用法:

  1. for 循環(huán) for 變量 in 循環(huán)信息;do 操作命令;done 有限制循環(huán)
  2. while 循環(huán) while 條件表達式; do 操作命令;done 死循環(huán) 當(dāng)條件滿足時, 條件為真
  3. until 循環(huán) until 條件表達式; do 操作命令;done 死循環(huán) 當(dāng)條件不滿足, 條件為假
    參數(shù):
    1.$#:代表傳參的個數(shù)信息匙铡,有多少傳參就代表幾個
    2.shift:代表將后一個傳參向前逐個移動

3.$*:將傳參參數(shù)進行顯示

方式二: 利用軟件 二進制軟件

第一個里程: 下載部署實時同步軟件 sersync ==>inotify+rsync
指定下載地址:https://github.com/wsgzao/sersync(無法通過yum正常下載)
mkdir /server/tools -p ==>將軟件保存在此目錄中
rz -y ==>選擇路徑,通過Windows下載到Linux中
解壓:unzip sersync_installdir_64bit.zip
檢查:cd /server/tools/sersync_installdir_64bit

第二個里程: 將解壓好目錄保存到指定目錄中
mv sersync/ /usr/local/

第三個里程: 修改軟件配置信息
vim /usr/local/sersync/conf/confxml.xml
定義 在同步傳輸數(shù)據(jù)時,哪些數(shù)據(jù)不要進行傳輸同步
6 <filter start="false">
7 <exclude expression="(.).svn"></exclude>
8 <exclude expression="(.
).gz"></exclude>
9 <exclude expression="^info/"></exclude>
10 <exclude expression="^static/
"></exclude>
11 </filter>
定義監(jiān)控事件信息
12 <inotify>
13 <delete start="true"/>
14 <createFolder start="true"/>
15 <createFile start="false"/>
16 <closeWrite start="true"/>
17 <moveFrom start="true"/>
18 <moveTo start="true"/>
19 <attrib start="false"/>
20 <modify start="false"/>
21 </inotify>
配置文件說明
24 <localpath watch="/opt/tongbu">
25 <remote ip="127.0.0.1" name="tongbu1"/>
26
27
ps: 26和27行為需要多個模塊進行備份時碍粥,可啟動的配置信息慰枕,將!--去除即可
28 </localpath>
29 <rsync>
30 <commonParams params="-artuz"/>
31 <auth start="false" users="root" passwordfile="/etc/rsync.pas"/>
ps:start配置參數(shù)需要更改為true即纲,后續(xù)參數(shù)才能正常使用
32 <userDefinedPort start="false" port="874"/>
ps:sersync軟件默認斷樓為873具帮,當(dāng)修改默認端口號為其他時,如:874則將start配置參數(shù)修改為true,并將后續(xù)port修改為修改后的端口號蜂厅,否則默認情況下匪凡,start設(shè)置為false即可

image.png

配置文件顏色與命令顏色對應(yīng)處為修改處
第四個里程: sersync服務(wù)如何啟動
cd /usr/local/sersync/bin/
chmod +x sersync
./sersync -dro /usr/local/sersync/conf/confxml.xml
-d:啟用守護進程模式,讓此軟件一直運行
-r:監(jiān)控前掘猿,將監(jiān)控目錄與遠程主機用rsync命令進行檢驗一次
-o:指定監(jiān)控分配置文件病游,且該參數(shù)為所有參數(shù)的最后位置,接指定的配配置文件稠通;該參數(shù)的主要目的就是使針對不同服務(wù)器集群時衬衬,做好相應(yīng)的指定同步工作
顯示數(shù)據(jù)同步過程方法:
修改配置文件:vim /usr/local/sersync/conf/confxml.xml
4 <debug start="false"/>
修改為true

六、實現(xiàn)腳本重啟sersync服務(wù)

編寫腳本思路:

第一步: 如何關(guān)閉和啟動服務(wù)
啟動:sersync -dro /usr/local/sersync/conf/confxml.xml
停止:killall sersync
第二步:編寫腳本信息
vim /server/scripts/sersync.sh

#!/bin/bash
    export PATH=$PATH:/usr/local/sersync/bin/
    
    # 啟動服務(wù)
    if [ "$1" == "start" ]
    then
       sersync -dro /usr/local/sersync/conf/confxml.xml
    elif [ "$1" == "stop" ]
    then
       killall sersync
       sleep 1
       killall sersync
    elif [ "$1" == "restart" ]
    then
       killall sersync
       sleep1
       sersync -dro /usr/local/sersync/conf/confxml.xml
    else
       echo "pls input: start|stop|restart"
    fi

第三步:賦予權(quán)限信息
chmod +x server/scripts/sersync.sh
第四步:檢查
sh sersync/scripts/sersync.sh stop/start/restart

補充:殺進程的三種方式

1.kill
用法: kill pid --- 進程殺死會有提示信息

  1. killall(推薦)
    用法: killall 進程名稱 --- 進程殺死會有提示信息 推薦
    安裝kallall時直接使用yum install -y killall無法正常安裝
    需先確認killall屬于哪個軟件中的相應(yīng)命令
    yum provides killall改橘,通過次方式查找相關(guān)軟件包滋尉,再次安裝該命令
  2. pkill
    用法: pkill 進程名 --- 模糊匹配進程名稱(殺死類似名稱的進程全部殺死)
    4.特殊用法:
    kill -9 進程號 --- 強制殺死進程
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市飞主,隨后出現(xiàn)的幾起案子狮惜,更是在濱河造成了極大的恐慌,老刑警劉巖碌识,帶你破解...
    沈念sama閱讀 206,723評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件碾篡,死亡現(xiàn)場離奇詭異,居然都是意外死亡筏餐,警方通過查閱死者的電腦和手機开泽,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,485評論 2 382
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來魁瞪,“玉大人穆律,你說我怎么就攤上這事∨宸” “怎么了众旗?”我有些...
    開封第一講書人閱讀 152,998評論 0 344
  • 文/不壞的土叔 我叫張陵罢杉,是天一觀的道長趟畏。 經(jīng)常有香客問我,道長滩租,這世上最難降的妖魔是什么赋秀? 我笑而不...
    開封第一講書人閱讀 55,323評論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮律想,結(jié)果婚禮上猎莲,老公的妹妹穿的比我還像新娘。我一直安慰自己技即,他們只是感情好著洼,可當(dāng)我...
    茶點故事閱讀 64,355評論 5 374
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般身笤。 火紅的嫁衣襯著肌膚如雪豹悬。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,079評論 1 285
  • 那天液荸,我揣著相機與錄音瞻佛,去河邊找鬼。 笑死娇钱,一個胖子當(dāng)著我的面吹牛伤柄,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播文搂,決...
    沈念sama閱讀 38,389評論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼适刀,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了细疚?” 一聲冷哼從身側(cè)響起蔗彤,我...
    開封第一講書人閱讀 37,019評論 0 259
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎疯兼,沒想到半個月后然遏,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,519評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡吧彪,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 35,971評論 2 325
  • 正文 我和宋清朗相戀三年待侵,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片姨裸。...
    茶點故事閱讀 38,100評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡秧倾,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出傀缩,到底是詐尸還是另有隱情那先,我是刑警寧澤,帶...
    沈念sama閱讀 33,738評論 4 324
  • 正文 年R本政府宣布赡艰,位于F島的核電站售淡,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏慷垮。R本人自食惡果不足惜揖闸,卻給世界環(huán)境...
    茶點故事閱讀 39,293評論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望料身。 院中可真熱鬧汤纸,春花似錦、人聲如沸芹血。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,289評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至啃擦,卻和暖如春抖部,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背议惰。 一陣腳步聲響...
    開封第一講書人閱讀 31,517評論 1 262
  • 我被黑心中介騙來泰國打工慎颗, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人言询。 一個月前我還...
    沈念sama閱讀 45,547評論 2 354
  • 正文 我出身青樓俯萎,卻偏偏與公主長得像,于是被迫代替她去往敵國和親运杭。 傳聞我的和親對象是個殘疾皇子夫啊,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 42,834評論 2 345

推薦閱讀更多精彩內(nèi)容