Sersync项目利用inotify和rsync工具技术实现对服务器数据实时复制
当事件发生变化后,利用rsync命令把变化的数据复制到远端服务器上
sersync特点:

  • 使用C++编写,支持对监控事件的过滤
  • sersync采用xml配置文件,由守护进程启动,配置起来比起建议的inotify + rsync更简单
  • 使用多线程复制,可以并发复制多个不同文件,效率更高
  • sersync自带一场检测机制,可以通过失败队列对出错的文件重新复制
  • 自带crontab功能,实现对失败队列中的文件定时整理复制
  • 自带socket和HTTP协议扩展,定制特殊需求,二次开发

    sersync软件架构原理

    image.png
  1. inotify监控指定目录对应事件的变化,当有事件变化进入事件过滤队列
  2. 过滤队列负责过滤掉不需要触发复制的数据,也可以过滤短时间内产生的重复inotify事件信息,过滤后的事件触发rsync对应变化数据进行复制
  3. 图中线程组(线程是等待线程队列的守护线程),当事件队列中有事件发生后,线程组守护线程会逐个唤醒复制线程,当队列的inotify事件较多的时候,复制线程就会全部唤醒一起工作,提升复制效率
  4. 除了线程组以外,还有sersync服务线程负责处理复制失败的文件,他们再次复制,对于再次复制失败的文件(执行失败的命令),会记录到rsync_fail_log.sh脚本中,然后再定期执行脚本,同时利用自带的cron功能,实现每隔一段时间将所有未复制的数据整体复制

    sersync部署

    环境准备

  5. 确保rsync服务端正常

    具体含义看rsync笔记,确保两个服务器能够正常使用该命令即可

    rsync -avzP —delete /sersync_test/ rsync_backup@192.168.47.131:backup

  6. 确保当前客户端机器,是否支持inotify机制

    查看该目录,有如下三个文件即可

    ls /proc/sys/fs/inotify/ max_queued_events max_user_instances max_user_watches

安装

  1. 获取代码包

    这个网页还待确认,有空重新找一下

    https://github.com/wsgzao/sersync

    这里先利用已有的安装包,路飞第一章节下载的课件里有

  2. 解压

    unzip sersync_installdir_64bit.zip

  3. 可以进入sersync可执行命令目录,对命令进行授权执行

    chmod +x /MyInotify/tools/serrsync_installdir_64bit/sersync/bin/sersync

导入安装包

lrzsz命令

yum insatll lrzsz -y

需要的安装包在windows电脑,而利用linux虚拟机,如何将安装包保存到虚拟当中,这个时候我们可以利用lrzsz工具(linux与windows互传文件工具)

  • 直接拖动安装包到xshell当中(这种方式不确定是否需要先安装,尝试过未安装lrzsz也可以做到)

    配置文件讲解

    6-11行

    指定部分文件不同步,排除某些文件

12-21行

指定时间监控,可以开关某些文件事件

24-28行

sersync重点配置,如rsync备份服务器的地址填写

填写rsync备份服务器的地址,以及模块名(备份服务器配置rsyncd.conf文件时里面的[模块名]),!—与注释同义

29-35行

修改rsync服务器验证的账号密码配置

sersync部署命令行

  1. 配置sersync命令环境变量

    方式一:添加sersync的完整bin目录,加入到PATH中 方式二:把sersync命令,加一个快捷方式,放到PATH下 ln -s /MyInotify/tools/sersync_installdir_64bit/sersync/bin/sersync /usr/local/bin/

  2. 可以查看命令帮助参数

    sersync -h 参数解释: -d:启用守护进程模式 -r:在监控前,将监控目录与远程主机用rsync命令推送一遍 -n:指定开启守护线程的数量,默认为10个 -o:指定配置文件,默认使用confxml.xml文件 -m:单独启用其他模块 -m refreshCDN 开启刷新CDN模块 -m socket 开启socket模块 -m http 开启http模块

  3. 开启sersync服务

    sersync -r -d -o /MyInotify/tools/sersync_installdir_64bit/sersync/conf/confxml.xml