Sersync实时同步软件

本项目利用inotify与rsync对服务器进行实时同步,其中inotify用于监控文件系统事件,rsync是目前广泛使用的同步算法,其优点是只对文件不同的部分进行操作,所以其优势大大超过使用挂接文件系统的方式进行镜像同步。
目前使用的比较多的同步程序版本是inotify-tools,另外一个是google开源项目Openduckbill(依赖于inotify-tools),这两个都是基于脚本语言编写的,其设计思路同样是采用inotify与rsync命令。 相比较上面两个项目,本项目优点是:

1.sersync是使用c++编写,而且对linux系统文件系统产生的临时文件和重复的文件操作进行过滤(我稍后会提到),所以在结合rsync同步的时候,节省了运行时耗和网络资源。因此更快。

2.相比较上面两个项目,sersync配置起来很简单:在http://code.google.com/p/sersync/downloads/list 处下载源码(分为32版本,与64位版本),其中bin目录下已经有我编译好的2进制文件,配合bin目录下的xml文件直接使用即可。

3.另外本项目相比较其他脚本开源项目,使用多线程进行同步,尤其在同步较大文件时,能够保证多个服务器实时保持同步状态。

4.本项目自带出错处理机制,通过失败队列对出错的文件重新出错,如果仍旧失败,则每10个小时对同步失败的文件重新同步。

5.本项目自带crontab功能,只需在xml配置文件中开启,即可按您的要求,隔一段时间整体同步一次。

6.本项目自带socket与http协议扩展,满足您二次开发的需要。

基本架构:

设计简析:

如上图所示,线程组线程是等待线程队列的守护线程,当队列中有数据的时候,线程组守护线程逐个唤醒,当队列中inotify事件交多的时候就会被全部唤醒一起工作。这样设计的目的是能够同时处理多个inotify事件,重发利用服务器的并发能力(核数*2+2)。

之所以称之为线程组线程,是因为每个线程在工作的时候,会根据服务器的数量建立子线程,子线程可以保证所有的文件与各个服务器同时同步,当要同步的文件较大的时候,这样设计可以保证各个远程服务器可以同时获得要同步的文件。

服务线程的作用有三个,首先是处理同步失败的文件,将这些文件再次同步,对于再次同步失败的文件会生成rsync_fail_log.sh脚本,记录失败的事件。同时每隔10个小时执行脚本一次,同时清空脚本。服务线程的第三个作用是crontab功能,可以每隔一定时间,将所有路径整体同步一次。

过滤队列的建立是为了过滤短时间内产生的重复的inotify信息,例如在删除文件夹得时候,inotify就会同时产生删除文件夹里的文件与删除文件夹得事件,通过过滤队列当删除文件夹事件产生的时候,会将之前加入队列的删除文件的事件全部过滤掉,这样只产生一条事件减轻了同步的负担。同时对于修改文件的操作的时候,会产生临时文件与重复操作。

举例:

当我们在vi的一个test文件,进行wq操作的时候会产生如下事件:

即使把"."开头与"~"结尾的世界过滤了,对于test文件仍旧有3次操作,分别是删除,创建与保存,通过过滤队列,就只剩下一个事件,一定程度上也提高了效率。

过滤队列第二个作用,即当你在本机删除目录的时候,假设你删除一个有5个文件的目录,inotify会产生6个事件,分别是5个文件删除事件,和一个删除目录事件,如果使用过滤队列,正常情况下会只产生一个删除目录的事件,大大减少了rsync通信次数。(当然,这不是绝对的。如果这6个事件分多次读到进入队列,那么可能还没来得及过滤,就已经被同步线程从队列中取走同步了。但一定程度上可以减少删除文件夹得同步通信次数)。

过滤队列的第三个作用,可以过滤监控目录下的文件夹,如果不想同步目录下的一些文件夹,或者一些后缀的文件。对于不需监控的子文件夹,在inotify启动时候remove掉监控,对于不需监控子文件,产生的文件事件就会从在入同步队列前过滤掉。如果使用rsync用--exclude, 这样虽然也可以过滤,但还是与rsync守护进程进行了一次交互。

架构图:

2.安装环境资源列表

2.2检查系统环境

cat /etc/redhat-release

检查内核版本  uname-r  检查系统位数 uname -m

2.3检查升级rsync到3.0

rrync --version | head -2    (如果没有安装可以用 yum install rsync -y 命令升级)

2.4.配置rsync的配置文件(这里要在168和169机器同时创建)

(这里系统不会自动生成,我这里要手动创建rsync.conf配置文件)

(配置文件中创建了3个实时同步的目录)

2.5创建三个同步目录

2.6.创建配置认证的权限

2.7.开启rsync的守护进程

2.8.rsync服务加入开机自启动服务

2.9.关闭rsync服务器

pkill rsync

rsync --deamon

ps -ef |grep rsync

3.配置master167服务器上的rsync

3.1在master上配置rsync权限(这里配置的传输密码要和s1和s2一致)

3.2.在master上创建同步的三个目录(www/bbs /www/blog www/www)

3.3手动执行同步测试(在这里我为了不影响测试,关闭ipabes防火墙 service iptables stop)

查看执行的结果:

ok ,这里手动同步没啥问题 !!嘿嘿

4.开始部署在master上sersync 服务

软件的下载地址

mkdir -p /home/zzx/tools

cd /home/zzx/tools

wget http://sersync.googlecode.com/files/sersync2.5.4_64bit_binary_stable_final.tar.gz

可以浏览 http://code.google.com/p/sersync/downloads/list

解压软件

tar -zxf sersync2.5.4_64bit_binary_stable_final.tar.gz -C /usr/local/

cd /usr/local/

mv GNU-Linux-x86 sersync

4.1 规范sersync的配置文件

cd /sersync

mkdir conf bin logs

mv confxml.xml conf

mv sersync2 bin/sersync

4.2 备份配置文件和修改配置文件

---/bin/cp/ conf/confxml.xml conf/confxml.xml.zzx.$(date+%F)

ok  cp confxml.xml confxml.xml.zzx.$(date +%F)

(1)修改conf/confxml.xml(24行添加如下)

4.3 开启sersync的守护进程

4.4 启动sersync

sersync -r -d -o /usr/local/sersync/conf/confxml.xml

-r 同步复制 -d 后台启动 -o 指定配置文件 不指定是二进制文件

在这里存在个小插曲啊!!(这里指同步了,www/www的目录有效)

查看是s1和s2的目录

为了解决这个问题,我们为每一个目录配置一个confing.xml(这里配置就是产生多实例的配置)

分别为bbs_confxml.xml 、www_confxml.xml 、blog_confxml.xml 的配置文件不同同步目录

时间: 2024-10-07 07:15:20

Sersync实时同步软件的相关文章

20170705L07-09-03老男孩linux运维实战培训-Sersync实时同步软件实战应用指南-2

接上一节继续说的sersync 这一节讲的是sersync的实际实验 主服务器sersync的安装,设置 然后是同步的演示 让人能更加了解同步自动化软件的原理 其中对实时同步进行了说明 当同步量很大的时候 可能客户机并不能实时进行更新

20170710L07-09-03老男孩Linux运维实战培训-Sersync实时同步软件实战应用指南08

还是说的sersync的压力测试 for n in 'seq 100' ; do mkdir -p test/$n:done        #创建100目录 还是压力测试的实际测试.这次好像加入了一个脚本去记录同步的延时

Rsync + sersync 实时同步备份

Rsync + sersync 实时同步备份 一      Rsync + Sersync  实时同步介绍 1.Rsync 服务搭建介绍 云机上搭建Rsync server,在本地搭建Rsync Clinet. 2. Sersync 服务搭建介绍 在本地服务器上搭建 Sersync  Server  检测本地的ftp目录变化,实时同步到云机上 二.Rsync编译安装 1.检查本机是否存在 [[email protected]云机 ~]# rpm -qa  rsync rsync-3.0.6-12

rhel下文件的同步:sersync实时同步和drbd双向同步

sersync(873端口)实时同步(单向同步) 需要注意:纯粹的使用rsync做单向同步时,rsynx的守护进程是运行在文件推送服务器上,而接收的服务器是运行rsync客户端.使用sersync做文件实时同步刚好相反,用于接收文件的服务器运行rsync守护进程. sersync主要用于服务器同步,web镜像等功能.基于boost1.43.0,inotify api,rsync command.开发.目前使用的比较多的同步解决方案是inotify-tools+rsync ,另外一个是google

Sersync实时同步企业应用配置实战

一.实验环境 CentOS版本: 6.6(2.6.32.-504.el6.x86_64) Rsync版本:  Rsync-3.0.6(系统自带) Sersync版本:sersync2.5.4_64bit_binary_stable_final.tar.gz(下载上传) 二.准备工作 查看系统是否支持inotify及参数优化: [[email protected] ~]# ls -l  /proc/sys/fs/inotify/ ------------------ 总用量 0 0 dr-xr-x

二、Linux实时同步软件之inotify

Linux实时同步软件之inotify Linux 内核从 2.6.13 版本开始提供了 inotify 通知接口,用来监控文件系统的各种变化情况,如文件存取.删除.移动等.利用这一机制,可以非常方便地实现文件异动告警.增量备份,并针对目录或文件的变化及时作出响应.inotify可以通过调用系统接口,实时监视目录和文件的变化,再结合rsync,实现实时目录同步功能.确定系统内核版本后,就可以安装inotify软件包了. [[email protected] ~]# uname -r 2.6.32

Rsync+Sersync实时同步

一.基本介绍 1.什么是Rsync? Rsync(Remote Synchronize)是一款开源的.快速的.多功能的.可以实现全量及增量的本地或远程数据同步备份的优秀工具,并且支持多种操作系统平台运行. 官网文档:https://rsync.samba.org/ftp/rsync/rsync.html 2.Rsync简介 Rsync具有本地与远程两台主机之间的数据快速复制同步镜像.远程备份等功能,该功能类似scp,但是优于scp功能,还具有本地不同分区目录之间全量及增量复制数据. Rsync同

Rsync+Sersync实时同步数据目录

第1章 Rsync简介 1.1 Rsync基本概述 rsync是一款开源的备份工具,可以在不同主机之间进行同步,可实现全量备份与增量备份 全量:将全部数据,进行传输覆盖 增量:只传输差异部分的数据 1.2 实现增量复制的原理 Rsync通过其独特的“quick check”算法,实现增量传输数据 在同步备份数据时,默认情况下,Rsync通过其独特的“quick check”算法,它仅同步大小或者最后修改时间发生变化的文件或目录,当然也可根据权限,属主等属性的变化同步,但需要指定相应的参数,甚至可

Rsync+sersync 实时同步

# #sersync 下载地址 #rsync CentOS系统包里面有 #rsync 详解 #sersync 详解 #逻辑图 主机名 IP地址 Storage_1             目标服务器 192.168.174.137 Storage_2               源服务器 192.168.174.138 #均关闭防火墙和selinux #目标服务器rsync 作为守护进程  , 源服务器rsync 作为客户端 #rsync支持推送和拉取 #sersync 实时监控目录 #目标服务