50臺集羣架構配置介紹-sersync

sersync實時複製工具實踐

環境

  • NFS ip = 10.0.0.31
  • backup ip = 10.0.0.41(作爲實時共享)
    在backup的rsync服務配置裏面加一個模塊,創建/nfsbackup並改變權限。
[root@backup ~]#vim /etc/rsyncd.conf
[nfsbackup]
path = /nfsbackup
ignore errors
read only = false
list = false
hosts allow = 172.16.1.0/24 
[root@backup ~]# pkill rsync 配置完後要重啓,先刪掉目前的進程!
[root@backup ~]# lsof -i :873
[root@backup ~]# rsync --daemon
[root@backup ~]# lsof -i :873  
COMMAND  PID USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
rsync   1401 root    4u  IPv4  14468      0t0  TCP *:rsync (LISTEN)
rsync   1401 root    5u  IPv6  14469      0t0  TCP *:rsync (LISTEN)
[root@backup ~]# mkdir -p /nfsbackup
[root@backup ~]# chown -R rsync.rsync /nfsbackup

在nfs客戶端推送資料到backup裏面:

[root@nfs01 data]#   rsync -avz /data/ [email protected]::nfsbackup --password-file=/etc/rsync.password
sending incremental file list
./
a
b
c

sent 182 bytes  received 68 bytes  500.00 bytes/sec
total size is 0  speedup is 0.00
[root@backup nfsbackup]# ls   --->我們回到backup去看看
a  b  c 

實現從nfs客戶端到rsync服務端的rsync服務部署

sersync優點:

1)支持配置文件管理
2)真正的守護進程socket
3)可以對失敗文件定時重傳(定時任務功能)
4)第三方的HTTP接口(更新CDN緩存)
5)默認多線程rsync同步

高併發數據實時同步方案小結:
1.inotify(sersync)+rsync 是文件級別的 ----> 效率不高
2.drbd文件系統級別,文件級別的,基於block。缺點:備節點數據不可用。
3.第三方軟件的同步功能: mysql 同步、orcale,mongodb
4.程序雙寫,直接寫兩臺服務器。
5.透過業務邏輯解決(讀寫分離,備讀不到,讀主)
6.NFS集羣(雙寫主存儲,備存儲用inotify(sersync)+rsync ,備沒有找主 解決延遲問題)

sersync實時複製工具實踐

rsync部署如上面的例子:
第一個里程碑:實現從nfs客戶端到rsync服務端的rsync服務部署

第二個里程碑:在客戶端安裝sersync

網上源安裝:

git clone https://github.com/wsgzao/sersync
把這個檔案放在/application 裏面,整理成下面的樣子
[root@nfs01 sersync]# tree
.
├── bin
│   └── sersync
├── conf
│   └── confxml.xml   ---->配置文件
├── GNU-Linux-x86
├── logs
└── sersync2.5.4_64bit_binary_stable_final.tar.gz

4 directories, 3 files

在confxml.xml裏面:

過濾功能:

 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>

inotify監控什麼屬性:(true表示當前有監控的事件)

 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>

sersync同步

    <sersync>
        <localpath watch="/data">
            <remote ip="172.16.1.41" name="nfsbackup"/>
            <!--<remote ip="192.168.8.39" name="tongbu"/>-->
            <!--<remote ip="192.168.8.40" name="tongbu"/>-->
        </localpath>
        <rsync>
            <commonParams params="-avz"/>
            <auth start="true" users="rsync_backup" passwordfile="/etc/rsync.password"/>
            <userDefinedPort start="false" port="874"/><!-- port=874 -->
            <timeout start="true" time="100"/><!-- timeout=100 -->
            <ssh start="false"/>
        </rsync>
        <failLog path="/application/logs/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>

配置完後,將sersync加上可執行的權限:

chmod +x bin/sersync 

可執行的參數:

[root@nfs01 data]# /application/sersync/bin/sersync -h
set the system param
execute:echo 50000000 > /proc/sys/fs/inotify/max_user_watches
execute:echo 327679 > /proc/sys/fs/inotify/max_queued_events
parse the command param
_______________________________________________________
參數-d:啓用守護進程模式
參數-r:在監控前,將監控目錄與遠程主機用rsync命令推送一遍
c參數-n: 指定開啓守護線程的數量,默認爲10個
參數-o:指定配置文件,默認使用confxml.xml文件
參數-m:單獨啓用其他模塊,使用 -m refreshCDN 開啓刷新CDN模塊
參數-m:單獨啓用其他模塊,使用 -m socket 開啓socket模塊
參數-m:單獨啓用其他模塊,使用 -m http 開啓http模塊
不加-m參數,則默認執行同步程序
________________________________________________________________

執行sersync:

 /application/sersync/bin/sersync -d -r -n 8 -o /application/sersync/conf/confxml.xml

檢驗成果:

在NFS服務端:  
[root@nfs01 data]# ps -ef | grep sersync                                 root       4180      1  0 10:57 ?        00:00:00 /application/sersync/bin/sersync -d -r -n 8 -o /application/sersync/conf/confxml.xml
root       4194   2910  0 10:57 pts/0    00:00:00 grep sersync
[root@nfs01 data]# cd /data
[root@nfs01 data]# ls
[root@nfs01 data]# touch stu{01..10}
[root@nfs01 data]# ls
stu01  stu02  stu03  stu04  stu05  stu06  stu07  stu08  stu09  stu10

到backup
[root@backup nfsbackup]# ls
stu01  stu02  stu03  stu04  stu05  stu06  stu07  stu08  stu09  stu10
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章