sersync(873端口)实时同步(单向同步)
需要注意:纯粹的使用rsync做单向同步时,rsynx的守护进程是运行在文件推送服务器上,而接收的服务器是运行rsync客户端。使用sersync做文件实时同步刚好相反,用于接收文件的服务器运行rsync守护进程。
sersync主要用于服务器同步,web镜像等功能。基于boost1.43.0,inotify api,rsync command.开
发。目前使用的比较多的同步解决方案是inotify-tools+rsync ,另外一个是google开源项目
Openduckbill(依赖于inotify- tools),这两个都是基于脚本语言编写的。相比较上面两个项目,
本项目优点是:
● sersync是使用c++编写,而且对linux系统文 件系统产生的临时文件和重复的文件操作进
行过滤(详细见附录,这个过滤脚本程序没有实现),所以在结合rsync同步的时候,节
省了运行时耗和网络资源。 因此更快。
●相比较上面两个项目,sersync配置起来很简单,其中bin目录下 已经有基本上静态编译的
2进制文件,配合bin目录下的xml配置文件直接使用即可。
●另外本项目相比较其他脚本开源项目,使用多线程进行同步,尤其在同步较大文件时,能
够保证多个服务器实时保持同步状 态。
●本项目有出错处理机制,通过失败队列对出错的文件重新同步,如果仍旧失败,则 每
10个小时对同步失败的文件重新同步。
●本项目自带crontab功能,只需在 xml配置文件中开启,即可按您的要求,隔一段时间整体
同步一次。无需再额外配置crontab功能。
●本项目socket与http插件扩展,满足您二次开发的需要。
1对1同步:
目标主机(将服务器上的filesystem同步到本主机)
yum install xinetd rsync -y
vi /etc/xinetd.d/rsync service rsync { disable = no //修改为no,打开 flags = IPv6 socket_type = stream wait = no user = root server = /usr/bin/rsync server_args = --daemon log_on_failure += USERID }
vi /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 [rsync] //同步模块,可以随意,但一定要和主服务器confxml.xml文件中 // remote行后的name中设置的一致 path=/opt/rsync //指定将服务器的同步内容存放的目录 comment = test files ignore errors = yes read only = no hosts allow = 192.168.1.140 //指定主服务器ip,可以是一个网段 hosts deny = *
启动rsync服务(即开启873端口),可以使用xinetd控制rsync服务如下:
/etc/init.d/xinetd start
也可以直接使用命令:
rsync --daemon 启动rsync服务
在主服务器上:
yum install rsync
tar zxf sersync2.5_64bit_binary_stable_final.tar.gz
cd GNU-Linux-x86/
vi confxml.xml ... <sersync> <localpath watch="/opt/tongbu"> //把服务器该目录同步 <remote ip="192.168.0.197" name="rsync"/> //此处必须和同步模块设置一致 <!--<remote ip="192.168.8.39" name="tongbu"/>--> <!--<remote ip="192.168.8.40" name="tongbu"/>--> </localpath> ...
./sersync -o confxml.xml -r -d //-o指定文件,默认为confxml.xml,
// -d 在主服务器上开启sersync守护进程,使sersync在后台运行,开启实时同步
// -r 在开启实时监控的之前对主服务器目录与远程目标机目录进行一次整体同步
1对多:
1对多主机同目录时,只需在新加目标主机上做与上个目标主机一样配置,服务器上只需在confxml.xml中添加一remote行即可。
1对多目标主机,多目录时:
服务器(GNU-Linux-x86目录中建多个confxml.xml,指定多个需要同步的目录):
cp confxml.xml confxmln.xml //配置和1对1同步一致
./sersync2 -o confxmln.xml -r -d
目标主机:/etc/rsyncd.conf中添加多个[],指定目标主机上被同步的目录
vi /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 [rsync] path=/opt/rsync comment=test rsync ignore errors=yes read only=no hosts allow=192.168.1.140 hosts deny=* [rsync2] path=/opt/rsync2 comment=test rsync ignore errors=yes read only=no hosts allow=192.168.1.140 hosts deny=*
注意iptables和selinux
rhel下文件的同步:sersync实时同步和drbd双向同步,布布扣,bubuko.com