day35--Linux之網(wǎng)絡架構--sersync

serrsync:

1.什么是實時同步

監(jiān)控一個目錄的變化,當該目錄觸發(fā)事件(創(chuàng)建/刪除/修改)就執(zhí)行動作,這個動作可以是rsync同步,也可以是其他

2.為什么要實時同步

  1. 能解決nfs單點故障的問題
  2. 能夠讓本地快速切換至云端

3.實時同步的原理

借助一個通知接口,inotify. inotify監(jiān)控本地主機的事件(創(chuàng)建/刪除/修改),當本地主機觸發(fā)事件后,就執(zhí)行動作,這個動作可以是rsync

4.實時同步的場景

  1. 能解決nfs單點故障的問題

  2. 能夠讓本地快

    速切換至云端

5.實時同步工具選擇

  1. inotify+rsync實現(xiàn),只不過需要通過腳本來實現(xiàn)監(jiān)控,并且放在后臺screen
    1. 寫腳本
    2. 同步
  2. sersync實現(xiàn)同步
  3. lsync

6.實時同步案例演示

規(guī)劃:

image.png
服務器名稱 外網(wǎng)ip 內網(wǎng)ip 服務
web 10.0.0.7 172.16.1.7 httpd/php
nfs 10.0.0.31 172.16.1.31 nfs inotify sync sersync
backup 10.0.0.41 172.16.1.41 rsync nfs

nfs服務端

    1. 安裝nfs
    [root@nfs ~]# yum install nfs-utils -y
    
  1. 配置
[root@nfs ~]# vim /etc/exports
/data 172.16.1.0/24(rw,sync,all_squash,anonuid=666,anongid=666)
  1. 初始化環(huán)境
[root@nfs ~]# groupadd -g 666 www
[root@nfs ~]# useradd -u666 -g666 www
[root@nfs ~]# mkdir /data
[root@nfs ~]# chown -R www.www /data/
  1. 重啟nfs服務
[root@nfs ~]# systemctl restart nfs-server
[root@nfs ~]# systemctl enable  nfs-server

web服務端操作

    1. 安裝
    [root@web01 ~]# yum install httpd php -y
    
    1. 配置httpd php
    2. 啟動httpd
    [root@web01 ~]# systemctl start httpd
    
    1. 模擬測試
    [root@web01 ~]# echo "Oldboy Edu.com" > /var/www/html/index.html  (可以不測試)
    
  • WEB進行掛載,上傳代碼:

    [root@web01 ~]# mount -t nfs 172.16.1.31:/data /var/www/html/
    [root@web01 ~]# cd /var/www/html
    [root@web01 ~]# rz kaoshi.zip
    [root@web01 ~]# unzip kaoshi.zip
    

    用戶通過前端的wen頁面上上傳視頻

    如果上傳出現(xiàn)錯誤:請檢查日志

    [root@web01 html]# tail -f /var/log/httpd/error_log
    

同步到backup服務器的backup模塊

    1. 安裝
    [root@backup ~]# yum install rsync -y
    
    1. 配置rsync
    [root@backup ~]# cat /etc/rsyncd.conf
    uid = rsync
    gid = rsync
    port = 873
    fake super = yes
    use chroot = no
    max connections = 200
    timeout = 600
    ignore errors
    read only = false
    list = false
    auth users = rsync_backup
    secrets file = /etc/rsync.passwd
    log file = /var/log/rsyncd.log
    #####################################
    
    [backup]
    comment = welcome to oldboyedu backup!
    path = /backup
    
    [data]
    path = /data
    
  1. 根據(jù)rsync配置初始化環(huán)境
[root@backup ~]# useradd -M -s /sbin/nologin rsync
[root@backup ~]# echo "rsync_backup:123456" > /etc/rsync.passwd
[root@backup ~]# chmod 600 /etc/rsync.passwd
[root@backup ~]# mkdir /backup /data -p 
[root@backup ~]# chown -R rsync.rsync /backup/ /data/
  1. 啟動rsync
[root@backup ~]# systemctl restart rsyncd 
[root@backup ~]# systemctl enable rsyncd

nfs服務配置

    1. 安裝rsync inotify
    [root@nfs ~]# yum install rsync inotify-tools -y
    
    1. 安裝sersync (rsync inotify)
    [root@nfs ~]# wget https://github.com/wsgzao/sersync/raw/master/sersync2.5.4_64bit_binary_stable_final.tar.gz
    [root@nfs ~]# tar xf sersync2.5.4_64bit_binary_stable_final.tar.gz -C /usr/local/
    [root@nfs ~]# mv /usr/local/GNU-Linux-x86/ /usr/local/sersync
    [root@nfs01 sersync]# vim confxml.xml
    <?xml version="1.0" encoding="ISO-8859-1"?>
    <head version="2.5">
      <host hostip="localhost" port="8008"></host>
      <debug start="false"/>
      <fileSystem xfs="false"/> #文件系統(tǒng)
      <filter start="false"> #排除不想同步的文件
      <exclude expression="(.*)\.svn"></exclude>
      <exclude expression="(.*)\.gz"></exclude>
      <exclude expression="^info/*"></exclude>
      <exclude expression="^static/*"></exclude>
      </filter>
      <inotify> #監(jiān)控的事件類型
      <delete start="true"/>
      <createFolder start="true"/>
      <createFile start="true"/>
      <closeWrite start="true"/>
      <moveFrom start="true"/>
      <moveTo start="true"/>
      <attrib start="false"/>
      <modify start="true"/>
      </inotify>
    
      <sersync>
      <localpath watch="/data"> #監(jiān)控的目錄
          <remote ip="172.16.1.41" name="data"/> #backup的ip以及模塊
          <!--<remote ip="192.168.8.39" name="tongbu"/>-->
          <!--<remote ip="192.168.8.40" name="tongbu"/>-->
      </localpath>
      <rsync>   #rsync的選項
          <commonParams params="-avz"/>
          <auth start="true" users="rsync_backup" passwordfile="/etc/rsync.pass"/>
          <userDefinedPort start="false" port="874"/><!-- port=874 -->
          <timeout start="false" time="100"/><!-- timeout=100 -->
          <ssh start="false"/>
      </rsync>
      <failLog path="/tmp/rsync_fail_log.sh" timeToExecute="60"/><!--default every 60mins execute once-->
      <crontab start="false" schedule="600"><!--600mins-->
          <crontabfilter start="false">
          <exclude expression="*.php"></exclude>
          <exclude expression="info/*"></exclude>
          </crontabfilter>
      </crontab>
      <plugin start="false" name="command"/>
      </sersync>
    
      <plugin name="command">
      <param prefix="/bin/sh" suffix="" ignoreError="true"/>  <!--prefix /opt/tongbu/mmm.sh suffix-->
      <filter start="false">
          <include expression="(.*)\.php"/>
          <include expression="(.*)\.sh"/>
      </filter>
      </plugin>
    
      <plugin name="socket">
      <localpath watch="/opt/tongbu">
          <deshost ip="192.168.138.20" port="8009"/>
      </localpath>
      </plugin>
      <plugin name="refreshCDN">
      <localpath watch="/data0/htdocs/cms.xoyo.com/site/">
          <cdninfo domainname="ccms.chinacache.com" port="80" username="xxxx" passwd="xxxx"/>
          <sendurl base="http://pic.xoyo.com/cms"/>
          <regexurl regex="false" match="cms.xoyo.com/site([/a-zA-Z0-9]*).xoyo.com/images"/>
      </localpath>
      </plugin>
    

</head>

[root@nfs ~]# file /usr/local/sersync/confxml.xml
[root@nfs ~]# echo "123456" > /etc/rsync.pass
[root@nfs ~]# chmod 600 /etc/rsync.pass


3. 啟動sersync

```bash
[root@nfs ~]# /usr/local/sersync/sersync2 -dro /usr/local/sersync/confxml.xml
  1. 建議:手動執(zhí)行該命令測試是否OK,這樣方便排查問題
[root@nfs ~]# cd /data && rsync -avz -R --delete ./  --timeout=100 rsync_backup@172.16.1.41::data --password-file=/etc/rsync.pass

模擬NFS故障,當web可以快速切換到backup的NFS服務上

1.backup的權限是否和NFS權限一致
2.backup上是否配置NFS服務,是否共享了/data
3.模擬NFS故障,實現(xiàn)切換
  1. backup的權限是否和NFS的權限一致 10.0.0.41 172.16.1.41

    修改內容如下:

[root@backup ~]# vim /etc/rsyncd.conf 
uid = www
gid = www
.....

創(chuàng)建用戶

[root@backup ~]# groupadd -g 666 www
[root@backup ~]# useradd -g666 -u666 www

修改權限

[root@backup ~]# chown -R www.www /data/ /backup/

重啟服務

[root@backup ~]# systemctl restart rsyncd
  1. backup服務器上是否配置NFS服務?是否共享了/data目錄
安裝NFS
[root@backup ~]# yum install nfs-utils -y

配置NFS
[root@backup ~]# cat /etc/exports
/data 172.16.1.0/24(rw,sync,all_squash,anonuid=666,anongid=666)
[root@backup ~]# chown -R www.www /data/

啟動NFS
[root@backup ~]# systemctl enable nfs-server
[root@backup ~]# systemctl start nfs-server
  1. 模擬NFS故障,實現(xiàn)切換
[root@web01 ~]# umount -lf /var/www/html && mount -t nfs 172.16.1.41:/data /var/www/html
?著作權歸作者所有,轉載或內容合作請聯(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
  • 正文 為了忘掉前任剪芥,我火速辦了婚禮鳖悠,結果婚禮上趣钱,老公的妹妹穿的比我還像新娘榜田。我一直安慰自己箭券,他們只是感情好,可當我...
    茶點故事閱讀 64,355評論 5 374
  • 文/花漫 我一把揭開白布辩块。 她就那樣靜靜地躺著废亭,像睡著了一般具钥。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上掌动,一...
    開封第一講書人閱讀 49,079評論 1 285
  • 那天,我揣著相機與錄音粗恢,去河邊找鬼。 笑死匙赞,一個胖子當著我的面吹牛凭迹,可吹牛的內容都是我干的。 我是一名探鬼主播脾猛,決...
    沈念sama閱讀 38,389評論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼猛拴,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了愉昆?” 一聲冷哼從身側響起麻蹋,我...
    開封第一講書人閱讀 37,019評論 0 259
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎扮授,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體堪侯,經(jīng)...
    沈念sama閱讀 43,519評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡伍宦,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 35,971評論 2 325
  • 正文 我和宋清朗相戀三年乏梁,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片滓玖。...
    茶點故事閱讀 38,100評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡势篡,死狀恐怖翩肌,靈堂內的尸體忽然破棺而出念祭,到底是詐尸還是另有隱情碍侦,我是刑警寧澤,帶...
    沈念sama閱讀 33,738評論 4 324
  • 正文 年R本政府宣布站玄,位于F島的核電站濒旦,受9級特大地震影響,放射性物質發(fā)生泄漏尔邓。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,293評論 3 307
  • 文/蒙蒙 一齿尽、第九天 我趴在偏房一處隱蔽的房頂上張望灯节。 院中可真熱鬧,春花似錦卡骂、人聲如沸磷雇。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,289評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至苞慢,卻和暖如春英妓,著一層夾襖步出監(jiān)牢的瞬間绍赛,已是汗流浹背辑畦。 一陣腳步聲響...
    開封第一講書人閱讀 31,517評論 1 262
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留蚯妇,地道東北人暂筝。 一個月前我還...
    沈念sama閱讀 45,547評論 2 354
  • 正文 我出身青樓焕襟,卻偏偏與公主長得像,于是被迫代替她去往敵國和親胧洒。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 42,834評論 2 345

推薦閱讀更多精彩內容