1、說明
實驗作業系統:CentOS release 5.6
伺服器端(代碼更新伺服器):192.168.0.5
用戶端(web伺服器):192.168.0.6 192.168.0.7 192.168.0.8
web目錄:/data/httpd/wwwroot/
原理:由192.168.0.5上inotify服務監測檔案是否有更新,如果有更新(修改,删除,建立)inotify就會通過rsync指令将更新的檔案推向三台web伺服器
架構圖如下:
<a href="http://blog.51cto.com/attachment/201106/002546758.png" target="_blank"></a>
2、在三台web上配置rsync服務
#mkdir -p /data/httpd/wwwroot #建立web目錄
#vim /etc/rsyncd.conf #配置檔案
uid = root
gid = root
use chroot = no
max connections = 5
pid file = /var/run/rsyncd.pid
lock file = /var/run/rsync.lock
log file = /var/log/rsyncd.log
[www]
path=/data/httpd/wwwroot/
comment = update
ignore errors
read only = no
list = no
hosts allow = 192.168.0.0/255.255.255.0
auth users = root
secrets file = /etc/rsyncd.secrets
#vim /etc/rsyncd.secrets #建立rsync證檔案
123456
root:123456
#chmod 0600 /etc/rsyncd.secrets #設定權限
#rsync --daemon #啟動服務
#echo "rsync --daemon" >> /etc/rc.local #開機自啟動
3、配置服務端(rsync+inotify)
#mkdir -p /data/httpd/wwwroot #建立目錄存放代碼
(1)、安裝inotify
#cd /usr/local/src/
#wget http://cloud.github.com/downloads/rvoicilas/inotify-tools/inotify-tools-3.14.tar.gz
#tar xzvf inotify-tools-3.14.tar.gz
#cd inotify-tools-3.14
#./configure
#make
#make install
(2)、編寫同步更新腳本
#mkdir /root/bin
#cd /root/bin
#vim rsync.sh
#!/bin/bash
src=/data/httpd/wwwroot/
des=www
host="192.168.0.6 192.168.0.7 192.168.0.8"
/usr/local/bin/inotifywait -mrq --timefmt '%d/%m/%y %H:%M' --format '%T %w%f' -e modify,delete,create,attrib $src | while read files
do
for hostip in $host
do
rsync -vzrtopg --delete --progress --password-file=/etc/rsyncd.secrets $src root@$hostip::$des
done
echo "${files} was rsynced" >>/tmp/rsync.log 2>&1
done
(3)、建立rsync認證檔案
#vim /etc/rsyncd.secrets
#chmod u+x /etc/rsyncd.secrets
(4)、啟動
#nohup /bin/bash /root/bin/rsync.sh &
(5)、開機自啟動
#echo "nohup /bin/bash /root/bin/rsync.sh &" >> /etc/rc.local
(6)、測試
在192.168.0.5上進入目錄/data/httpd/wwwroot/
#touch a.txt
在三台web機上/data/httpd/wwwroot/目錄可以立馬看a.txt。
<a href="http://www.055680.com/" target="_blank">城市物語</a>
本文轉自yuangang_love 51CTO部落格,原文連結:http://blog.51cto.com/linux008/595922,如需轉載請自行聯系原作者