以前一直使用rsync半夜同步上海、武汉两地之间服务器上的模板文件,最近这个方式出现一个新的问题,原因是不够实时,白天更新的模板,武汉同事常常无法使用,提示模板文件未找到,报错新信发过来,我只好手动启动rsync程序同步一次,几次之后,不胜其烦了,得想办法解决。
网上搜了一圈,发现金山的技术部周洋共享了一个Sersync开源程序,项目地址 http://code.google.com/p/sersync/
Sersync工作原理:
使用 Linux 2.6 内核的新特性, inotify 监控 Linux 文件系统事件,被监听目录下如果有文件发生修改,sersync 将通过内核自动捕获到事件,并将该文件利用 rsync 同步到多台远程服务器。sersync 仅仅同步发生增、删、改事件的单个文件或目录,不像rsync镜像同步那样需要比对双方服务器整个目录下数千万的文件,并且支持多线程同步,因此效率非常高。
教程地址 http://blog.johntechinfo.com/sersyncguild
实战:
1,服务器端下载、安装最新版sersync2.5 http://sersync.googlecode.com/files/sersync2.5_32bit_binary_stable_final.tar.gz
cd /usr/src/
wget http://sersync.googlecode.com/files/sersync2.5_32bit_binary_stable_final.tar.gz
tar zxvf sersync2.5_32bit_binary_stable_final.tar.gz
cd GNU-Linux-x86
vi confxml.xml
confxml.xml文件配置比较简单,修改 false和true搞定,
12345678910111213141516171819202122232425262728293031323334353637383940 <host hostip="localhost" port="8081"></host><debug start="false"/><fileSystem xfs="false"/><filter start="false"><exclude expression="(.*)\.svn"></exclude><exclude expression="(.*)\.gz"></exclude><exclude expression="^info/*"></exclude><exclude expression="^static/*"></exclude></filter><inotify><delete start="true"/><createFolder start="true"/><createFile start="false"/><closeWrite start="true"/><moveFrom start="true"/><moveTo start="true"/><attrib start="false"/><modify start="false"/></inotify><sersync><localpath watch="/var/www/shanghai/template"><remote ip="192.168.1.2" name="template"/></localpath><rsync><commonParams params="-vurt"/><auth start="true" users="abc" passwordfile="/etc/rsync.pas"/><userDefinedPort start="true" port="<span style="color: #ff0000;">8081</span>"/><!-- port=874 --><timeout start="false" time="100"/><!-- timeout=100 --><ssh start="false"/></rsync><failLog path="/tmp/rsync_fail_log.sh" timeToExecute="60"/><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>
启动 服务端 ./sersync2 -d
2,客户端启用rsync daemon进程
vi /etc/rsyncd.conf
uid=webopadmin
gid=webopadmin
use chroot=no
max connections = 100
log file = /var/log/rsync/rsyncd.log
lock file=/var/run/rsyncd.lock
pid file=/var/run/rsyncd.pid[template]
path = /var/www/wuhan/template
comment = webdesign template
ignore errors = yes
read only=no
hosts allow = 192.168.1.1/24
hosts deny = *
启用 客户端 rsync daemon进程,开始监听,默认873端口
rsync --daemon
也可以增加端口参数 rsync --port=8081 --daemon ,启用了8081端口,以免防火墙被挡,对应的服务器端confxml.xml配置也要监听这个8081端口
搞定收工,另有一些插件可以增加测试,我这里就不试验了。
文章评论