sersync 实时同步工具

   出处:http://code.google.com/p/sersync/

     当前版本的sersync依赖于rsync进行同步。如下图所示,在同步主服务器上开启sersync,将监控路径中的文件同步到目标服务器,因此需要在主服务器配置sersync,在同步目标服务器配置rsync。sersync 使用 Linux 2.6 内核的 inotify 监控 Linux 文件系统事件。



如图所示,在同步主服务器上配置sersync (可以不开启 rsync 服务,这样则可以从主服务器向目标服务器推送数据,但不可以从目标服务器向主服务器拉取数据),在同步目标服务器配置 rsync 并开启rsync守候进程,这样在主服务器产生的文件,就会被sersync实时同步到多个目标服务器。在centos系统下默认已经安装了rsync,只需进行配置,并开启rsync守候进程即可。

-----------------------------------------------------------------------------------------------------------------------------------------------

配置同步目标服务器 rsync

主服务器:   192.168.1.125

目标服务器:192.168.1.126  (可以多台目标服务器)


在多台目标服务器上配置如下,手动配置 rsyncd.conf 配置文件:

vi /etc/rsyncd.conf

uid = root
gid = root
max connections = 10
use chroot = no
log file = /var/log/rsyncd.log
pid file = /var/run/rsyncd.pid
lock file = /var/run/rsyncd.lock

[tongbu]
path = /opt/tongbu
comment = hello world
ignore errors = yes
read only = no
hosts allow = 192.168.1.125
hosts deny = *

    上面配置文件,表明允许主服务器(ip为192.168.1.125 )访问,rsync同步模块名为[tongbu] ,将同步过来的文件放入目标服务器指定的目录 /opt/tongbu 。如果有多台从服务器,则每一台都需要进行类似的配置。


配置好之后,开启rsync守护进程:

rsync --daemon –-config=/etc/rsync.conf


在主服务器上安装配置sresync

在google code下载sersync的可执行文件版本,里面有配置文件与可执行文件,这里用sersync2.5进行说明,新版本配置形式类似。

tar -zxvf sersync2.5_64bit_binary_stable_final.tar.gz
cd GNU-Linux-x86
vi confxml.xml

修改如下部分:

<sersync>
        <localpath watch= "/opt/tongbu" >
           <remote ip= "192.168.1.126" name= "tongbu" />

           <!--<remote ip="0.0.0.0" name="tongbu"/>多个目标服务器则配置多个-->
        </localpath>

表示要将主服务器上本地的 /opt/tongbu 路径下的文件,同步到远程服务器   192.168.1.126 上的 tongbu 模块



在主服务器上开启sersync守护进程 ,使sersync在后台运行,开启实时同步。


./GNU-Linux-x86/sersync2 -r -d -o ../GNU-Linux-x86/confxml.xml

(加入rc.local自动启动,防止重启后忘记启动)

提示如下:

[root@localhost GNU-Linux-x86]# /tmp/GNU-Linux-x86/sersync2 -r -d -o /tmp/GNU-Linux-x86/confxml.xml
---------------------------------------------------------------------------------------------------
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
daemon thread num : 10
parse xml config file
host ip : localhost     host port : 8008
config xml parse success
please set /etc/rsyncd.conf max connections=0 Manually
sersync working thread 12  = 1(primary thread) + 1(fail retry thread) + 10(daemon sub threads)
please according your cpu ,use -n param to adjust the cpu rate
run the sersync :
watch path is : /opt/tongbu
---------------------------------------------------------------------------------------------------

表明,sersync已经开启,可以在本地监控路径下建立文件,查看远程是否同步成功。

-----------------------------------------------------------------------------------------------------------------------------------------------


运行参数说明:


./sersync -r 在开启实时监控的之前对主服务器目录与远程目标机目录进行一次整体同步


如果需要将sersync运行前,已经存在的所有文件或目录全部同步到远程,要以-r参数运行sersync,将本地与远程整体同步一次。
如果设置了过滤器,即在xml文件中,filter为true,则暂时不能使用-r参数进行整体同步。-r参数将会无效

./sersync --help
查看启动参数帮助
 
./sersync -o XXXX.xml
指定配置文件

./sersync -n num
指定默认的线程池的线程总数
例如 ./sersync -n 5 则指定线程总数为5,如果不指定,默认启动线程池数量是10,如果cpu使用过高,可以通过这个参数调低,如果机器配置较高,可以用-n跳高线程总数。
 
./sersync -m pluginName
不进行同步,只运行插件
       例如./sersync -m command,则在监控到文件事件后,不对远程目标服务器进行同步,而是直接运行command插件。

-----------------------------------------------------------------------------------------------------------------------------------------------

常见错误:

ERROR: module is read only
rsync error: syntax or usage error (code 1) at main.c(747) [receiver=2.6.8]
rsync: connection unexpectedly closed (4 bytes received so far) [sender]
rsync error: error in rsync protocol data stream (code 12) at io.c(600) [sender=3.0.6]
解决: 提示打开了read only,将配置文件 read only = no

cat /var/log/rsyncd.log

2011/12/14 11:58:37 [22377] name lookup failed for XX.XX.XX.XX: Name or service not known
2011/12/14 11:58:37 [22377] connect from UNKNOWN (XX.XX.XX.XX)
2011/12/14 11:58:37 [22377] rsync to html/ from unknown (XX.XX.XX.XX)

解决:需要在服务端这台机上上的/etc/hosts里面添加客户端机的ip和机器名

[root@Dell-R710 ~]# rsync -artuz -R --delete ./ 192.168.1.233::gex

rsync: failed to connect to 61.145.118.206: Connection refused (111)

rsync error: error in socket IO (code 10) at clientserver.c(124) [sender=3.0.6]

解决:

一、查看防火墙

二、查看服务端是否开启守护进程

ps ax|grep rsync

rsync --daemon --config=/etc/rsyncd.conf

猜你喜欢

转载自wubolu.iteye.com/blog/773932