一、sersync介绍
1.为什么要用rsync+sersync架构?
- sersync是基于inotify开发的,类似于inotify-tools的工具
sersync可以记录下被监听目录中发生变化的(包括增加、删除、修改)具体某一个文件或者某一个目录的名字,然后使用rsync同步的时候,只同步发生变化的文件或者目录
2.rsync+inotify-tools与rsync+sersync架构的区别?
2.1rsync+inotify-tools
- inotify只能记录下被监听的目录发生了变化(增,删,改)并没有把具体是哪个文件或者哪个目录发生了变化记录下来;
rsync在同步的时候,并不知道具体是哪个文件或目录发生了变化,每次都是对整个目录进行同步,当数据量很大时,整个目录同步非常耗时(rsync要对整个目录遍历查找对比文件),因此效率很低
2.2 rsync+sersync
- sersync可以记录被监听目录中发生变化的(增,删,改)具体某个文件或目录的名字;
rsync在同步时,只同步发生变化的文件或目录(每次发生变化的数据相对整个同步目录数据来说很小,rsync在遍历查找对比文件时,速度很快),因此效率很高。
总结:
- 当同步的目录数据量不大时,建议使用rsync+inotify
当同步的目录数据量很大时(几百G甚至1T以上)文件很多时,建议使用rsync+sersync
3.sersync原理
- sersync就是监控本地的数据写入或更新事件;然后,在调用rsync客户端的命令,将写入或更新事件对应的文件通过rsync推送到目标服务器;
二、部署sersync(前提是已经部署好了rsync daemon)
1.下载sersync(我才发现我居然用的是32位的系统)
[root@rsync-B ~]# tar xf sersync2.5_32bit_binary_stable_final.tar.gz
[root@rsync-B ~]# mkdir sersync
[root@rsync-B ~]# ll
total 624
drwxr-xr-x 2 root root 4096 Jul 4 2010 GNU-Linux-x86
drwxr-xr-x 2 root root 4096 Jul 23 10:02 sersync
-rw-r--r-- 1 root root 629501 Jul 4 2010 sersync2.5_32bit_binary_stable_final.tar.gz
[root@rsync-B ~]# mkdir sersync/conf
[root@rsync-B ~]# mkdir sersync/bin
[root@rsync-B ~]# mkdir sersync/log
[root@rsync-B ~]# cp GNU-Linux-x86/sersync2 sersync/bin/
[root@rsync-B ~]# cp GNU-Linux-x86/confxml.xml sersync/conf/
[root@rsync-B ~]# cp sersync/conf/confxml.xml sersync/conf/confxml.xml.backup
2.编辑配置文件
6-11行 过滤功能
12-21行 监控功能
23-46行 同步功能
修改
24 <localpath watch="/data1">
25 <remote ip="10.0.0.129" name="liang"/>
30 <commonParams params="-avz"/>
31 <auth start="true" users="rsync_liang" passwordfile="/etc/rsync.
password"/>
33 <timeout start="true" time="100"/><!-- timeout=100 -->
3.设置环境变量
[root@rsync-B ~]# tail -2 /etc/profile
export SERSYNC_HOME=/root/sersync/bin/
export PATH=$SERSYNC_HOME:$PATH
[root@rsync-B ~]# source /etc/profile
4.启动sersync服务
[root@rsync-B ~]# sersync2 -d -r -o sersync/conf/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
option: -d run as a daemon
option: -r rsync all the local files to the remote servers before the sersync work
option: -o config xml name: sersync/conf/confxml.xml
daemon thread num: 10
parse xml config file
host ip : localhost host port: 8008
daemon start,sersync run behind the console
use rsync password-file :
user is rsync_liang
passwordfile is /etc/rsync.password
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)
Max threads numbers is: 22 = 12(Thread pool nums) + 10(Sub threads)
please according your cpu ,use -n param to adjust the cpu rate
rsync the directory recursivly to the remote servers once
working please wait...
execute command: cd /data1 && rsync -avz -R --delete ./ --timeout=100 rsync_liang@10.0.0.129::liang --password-file=/etc/rsync.password >/dev/null 2>&1
run the sersync:
watch path is: /data1
[root@rsync-B data1]# ps -ef|grep sersync
root 9049 1 0 10:26 ? 00:00:00 sersync2 -d -r -o sersync/conf/confxml.xml
root 9065 8566 0 10:27 pts/1 00:00:00 grep sersync
5.测试
5.1在/data1创建文件
[root@rsync-B data1]# ls
a.txt c.txt e.txt g.txt i.txt k.txt m.txt o.txt q.txt s.txt u.txt w.txt y.txt
b.txt d.txt f.txt h.txt j.txt l.txt n.txt p.txt r.txt t.txt v.txt x.txt z.txt
5.2到服务端查看
[root@rsync-B data1]# ls
a.txt c.txt e.txt g.txt i.txt k.txt m.txt o.txt q.txt s.txt u.txt w.txt y.txt
b.txt d.txt f.txt h.txt j.txt l.txt n.txt p.txt r.txt t.txt v.txt x.txt z.txt
6.添加另外两个模块
[root@rsync-B ~]# cd sersync/conf/
[root@rsync-B conf]# ls
confxml.xml confxml.xml.backup
6.1编辑文件
[root@rsync-B conf]# cp confxml.xml liang2.confxml.xml
[root@rsync-B conf]# vim liang2.confxml.xml
25 <remote ip="10.0.0.129" name="liang2"/>
[root@rsync-B conf]# cp confxml.xml liang3.confxml.xml
[root@rsync-B conf]# vim liang3.confxml.xml
25 <remote ip="10.0.0.129" name="liang3"/>
6.2启动
[root@rsync-B conf]# sersync2 -d -r -o /root/sersync/conf/liang2.confxml.xml
...
..
.
[root@rsync-B conf]# sersync2 -d -r -o /root/sersync/conf/liang3.confxml.xml
...
..
.
6.3测试
[root@rsync-A liang1]# ls /liang3
c.txt f.txt i.txt l.txt o.txt r.txt u.txt x.txt
a.txt d.txt g.txt j.txt m.txt p.txt s.txt v.txt y.txt
b.txt e.txt h.txt k.txt n.txt q.txt t.txt w.txt z.txt
[root@rsync-A liang1]# ls /liang2
c.txt f.txt i.txt l.txt o.txt r.txt u.txt x.txt
a.txt d.txt g.txt j.txt m.txt p.txt s.txt v.txt y.txt
b.txt e.txt h.txt k.txt n.txt q.txt t.txt w.txt z.txt