標籤:sersync目錄同步的操作 附帶設定檔以及指令碼 串連在文章內。
#192.168.100.250作為資料來源,也就是資料在這台伺服器上面,192.168.100.251需要同步他的資料,100.250所更改的資料,即時的同步到251上去
#100.250已經安裝好了nginx,安裝目錄為/usr/local/nginx,nginx請自行安裝,如果不想安裝,也沒有關係,請在/usr/local/目錄下建立nignx目錄
#第一次,請根據我的思路完成,之後可以進行適當的調整
#100.250監控的目錄為/usr/local/nginx
#100.251存放資料的目錄為/usr/local/nginx/
#100.251操作
查看軟體是否安裝
rpm -qa | grep rsync
rsync-3.0.6-9.el6_4.1.x86_64
#如果未安裝請使用 yum -y install rsync進行安裝
#配置rsync
vim /etc/rsyncd.conf 檔案需要建立
uid=root
gid=root
max connections=36000
use chroot=no
log file=/var/log/rsyncd.log
pid file=/var/run/rsyncd.pid
lock file=/var/run/rsyncd.lock
[nginx_rsync]
path=/usr/local/nginx/
comment = offical rsync cn
ignore errors = yes
read only = no
hosts allow = 192.168.100.250#允許訪問的IP地址
hosts deny = *
#啟動服務
rsync --daemon --config=/etc/rsyncd.conf
#建立/usr/local/nginx目錄
mkdir -p /usr/local/nginx
#100.250
#軟體地址:官網
#wget http://sersync.googlecode.com/files/sersync2.5_32bit_binary_stable_final.tar.gz
#目前官網在國內不能登入,這裡給大家提供百度雲的,個人收藏
#http://pan.baidu.com/s/1dFOBLb7
#安裝軟體
#在root的宿主目錄/root
tar zxf sersync2.5.4_64bit_binary_stable_final.tar.gz -C /usr/src/
cd GNU-Linux-x86/
cp confxml.xml confxml.xml.2016-07-18#備份主要的設定檔,這個檔案如果在啟動程式時不指定開機檔案,則預設使用此檔案,一般情況下,我們都會建立單獨的檔案進行啟動
cp confxml.xml nginx.xml#建立單獨的設定檔,啟動時需要此檔案,設定檔以.xml結尾,前面的名字自訂
#更改設定檔
vim nginx.conf
#需要更改的配置段
#監控動作開啟
<inotify>
<delete start="true"/>
<createFolder start="true"/>
<createFile start="false"/>
<closeWrite start="true"/>
<moveFrom start="true"/>
<moveTo start="true"/>
<attrib start="true"/>#更改
<modify start="true"/>#更改
</inotify>
#此配置是定義監控那些動作,含義都不難,自行翻譯
#定義監控的目錄
<sersync>
<localpath watch="/usr/local/nginx">
<remote ip="192.168.100.251" name="nginx_rsync"/>
# watch=“/usr/local/nginx” 是監控的目錄
#<remote ip="192.168.100.251" name="nginx_rsync"/> #192.168.100.251是rsync的地址,name="nginx_rsync"是rsync同步的模組名,也就是251上rsync設定檔中指定的模組名字,下面應該可以指定多個。
#密碼認證
<rsync>
<commonParams params="-artuz"/>
<auth start="true" users="root" passwordfile="/etc/rsync.pas"/>
start="true"由start="flase"改變 /etc/rsync.pas是密碼檔案,需要建立,裡面放入密碼,預設的使用者名稱為root
#需要注釋的部分
<!--#注釋的開頭
<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>
-->#注釋掉結尾
這一段,可以注釋掉,沒啥用。
#其餘的預設就好了。
#建立密碼檔案
cat >> /etc/rsync.pas << EOF
[email protected]Yc1uu
EOF
#改變檔案許可權,安全起見
chcmod 600 /etc/rsync.pas
#啟動服務,服務指令碼在目前的目錄下名為sersync2
/usr/src/GNU-Linux-x86/sersync2 -d -r -o /usr/src/GNU-Linux/nginx.xml
#-d 以守護進程的方式啟動
#-r 立即進行監控同步
#-o 指定服務啟動的設定檔
#watch path is: /usr/local/nginx
#尾部出現此提示,表明可以進行監控,否則按照提示進行錯誤處理,找到錯誤記錄檔的位置。
#程式執行的日誌記錄位置
cat /tmp/rsync_fail_log.sh
#看一下進程
ps -ef | grep sersync2 | grep -v "grep"
#root 8865 1 0 10:50 ? 00:00:00 /usr/src/GNU-Linux/sersync2 -d -r -o /usr/src/GNU-Linux/nginx.xml
#如果開啟了防火牆,請設定允許規則
#251上建立iptables 允許873連接埠入站
iptables -I INPUT -p tcp --dport 873 -j ACCEPT
service iptables save
#在250上建立Iptables規則
iptables -A INPUT -p tcp -m tcp --dport 8910 -j ACCEPT
iptables -A INPUT -p tcp -m tcp --dport 8911 -j ACCEPT
service iptables save
#還有一個問題,sersync這個進程總是無緣無故的就死了,所以需要進程的狀態,如果發現關閉則進行啟動進程,我們通過一個簡單的指令碼實現,指令碼一共6行
vim /usr/src/GNU-Linux/infoty.sh
#!/bin/bash
threadnum=`ps aux|grep sersync2|grep -v grep | wc -l`
if [ $threadnum -eq 1 ]; then
echo "sersync server is running!"
else
echo "sersync server is stop!"
/usr/local/sersync2/sersync2 -d -r -o cms-webapps-all.xml
fi
chmod +x infoty
crontab -e
1/* * * * * /usr/src/GNU-Linux/infoty.sh > /dev/null 2>&1
OK!至此,一個簡單的即時同步就做完了,如果實現雙向同步按照這個步驟機器對調再來一遍。注意,如果做雙向即時同步,注意更改設定檔中的IP地址,以及建立密碼檔案,IPTABLES等問題,如果監控的檔案數量過多,請輸入下面命令
echo 50000000 > /proc/sys/fs/inotify/max_user_watches #數字代表了監控檔案的最大數量,可以根據需求進行調整
啟動參數舉例
1、/usr/src/GNU-Linux-x86/sersync2 -r -d -o /usr/src/GNU-Linux/nginx.xml
#通常情況下使用這種方式,對本地到遠程整體同步一遍後,在後台運行即時同步。
2、/usr/src/GNU-Linux-x86/sersync22 -d -o /usr/src/GNU-Linux/nginx.xml
#在主伺服器上開啟sersync守護進程,使sersync在後台運行,開啟即時同步。
3、/usr/src/GNU-Linux-x86/sersync2 -r -o /usr/src/GNU-Linux/nginx.xml
#在開啟即時監控的之前對主伺服器目錄與遠程目標機目錄進行一次整體同步
(如果設定了過濾器,即在xml檔案中,filter為true,則暫時不能使用-r參數進行整體同步。-r參數將會無效)
4、/usr/src/GNU-Linux-x86/sersync2 -n 5 -d -o /usr/local/sersync/config.xml
#指定預設的線程池的線程總數,如果不指定,預設啟動線程池數量是10(適用於四核伺服器)
#如果cpu使用過高,可以通過這個參數調低,如果機器配置較高,可以用-n調高線程總數。
也可以不進行同步,只運行外掛程式:./sersync -m pluginName
例如./sersync -m command,則在監控到檔案事件後,不對遠程目標伺服器進行同步,而是直接運行command外掛程式。
多個參數可以配合使用
./sersync -n 8 -o abc.xml -r -d
表示,設定線程池背景工作執行緒為8個,指定abc.xml作為設定檔,在即時監控前作一次整體同步,以守護進程方式在後台運行。
經過測試,雙向即時同步是可以完成的,按照以上步驟進行修改,就可以完成,更多詳細資料請參考http://wenku.baidu.com/link?url=iWt-TING0IEe7IB8b2xNYUSASllULvWWzP24bwYb6Rzw1XFOKIed8bESNIJtYGpaWAIElNxvxYYZ8cX99JNAmIpy-9QWDRqegDR2hr9MtQa
http://www.linuxidc.com/Linux/2012-02/53572p5.htm
本文出自 “求知識,求技術” 部落格,請務必保留此出處http://ttxjs.blog.51cto.com/9447327/1827410
sersync目錄同步