实时同步服务-rsync+inotify+sersync.

第一章 实时同步服务介绍

1.1 需求背景

1.11,rsync的优点与不足
与传统的cp、tar备份方式相比,rsync具有安全性高、备份迅速、支持增量备份等优点,通过rsync可以解决对实时性要求不高的数据备份需求,例如定期的备份文件服务器数据到远端服务器,对本地磁盘定期做数据镜像等。
随着应用系统规模的不断扩大,对数据的安全性和可靠性也提出的更好的要求,rsync在高端业务系统中也逐渐暴露出了很多不足。首先,rsync同步数据时,需要扫描所有文件后进行比对,进行差量传输。如果文件数量达到了百万甚至千万量级,扫描所有文件将是非常耗时的。而且正在发生变化的往往是其中很少的一部分,这是非常低效的方式。其次,rsync不能实时的去监测、同步数据,虽然它可以通过linux守护进程的方式进行触发同步,但是两次触发动作一定会有时间差,这样就导致了服务端和客户端数据可能出现不一致,无法在应用故障时完全的恢复数据。基于以上原因,rsync+inotify组合出现了

1.13, 初识inotify
inotify是一种强大的、细粒度的、异步的文件系统事件监控机制,linux内核从2.6.13起,加入了inotify支持,通过inotify可以监控文件系统中添加、删除,修改、移动等各种细微事件,利用这个内核接口,第三方软件就可以监控文件系统下文件的各种变化情况,而inotify-tools就是这样的一个第三方软件。
我们讲到,rsync可以实现触发式的文件同步,但是通过crontab守护进程方式进行触发,同步的数据和实际数据会有差异,而inotify可以监控文件系统的各种变化,当文件有任何变动时,就触发rsync同步,这样刚好解决了同步数据的实时性问题。

1.14,sersync
sersync是基于前两者开发的工具,不仅保留了优点同时还强化了实时监控,文件过滤,简化配置等功能,帮助用户提高运行效率,节省时间和网络资源

1.2 rsync+inotify+sersync原理

1.21 原理图

Alt text

监控目录数据变化---inotify
将数据进行传输---rsync
将监控和传输进行整合---rersync

1.22 部署流程

1,部署好rsync守护进程服务,实现数据传输
2,部署好inotify服务,实现目录种数据变化监控
3,将rsync服务和inotify服务建立联系,将变化的数据进行实时备份传输

第二章 实时同步服务部署

2.1 部署rsync守护进程

第一步,服务端配置操作

第二步,客户端配置操作

过程参照:https://www.cnblogs.com/nsthink-666/p/12780351.html

2.2 部署inotify监控服务

客户端操作:

# 第一步 安装软件
yum install -y inotify-tools

# 第二步 熟悉命令的使用
/usr/bin/inotifywait  ---监控目录数据信息变化
/usr/bin/inotifywatch ---对监控的变化信息进行统计

# inotify命令使用方法:
inotifywait [参数] 监控的目录
-m|--monitor //实现一直监控目录的数据变化
-r|--recursive //进行递归监控
-q|--quiet //尽量减少信息的输出
--format <fmt> //指定输出的时间信息格式
-e|--event //指定监控的事件信息

# inotify常用监控命令格式:
ininotifywait -mrq --timefmt "%F" --format "%T %w %f 事件信息:%e" /data -e CREATE
常用事件:create创建、delete删除、moved_to移入、close_write修改

# inotify企业应用:防止系统重要文件被破坏,做到实时监控
用inotify进行实时监控一些重要文件:
/etc/passwd  /var/spool/cron/root

2.3 部署sersync同步服务

客户端操作:

# 第一步:下载软件包
软件链接:https://github.com/wsgzao/sersync
ps:软件尽量都同意保存在/server/tools目录中

# 第二步:解压软件压缩包,将解压的数据进行保存
[root@nfs01 tools]# unzip sersync_installdir_64bit.zip
[root@nfs01 tools]# tree sersync_installdir_64bit
sersync_installdir_64bit
└── sersync
├── bin      --- sersync软件命令目录
│    └── sersync
├── conf     --- sersync软件配置目录
│    └── confxml.xml
└── logs     --- sersync软件日志目录
[root@nfs01 tools]# mv sersync_installdir_64bit/sersync/ /usr/local/

# 第三步:编写配置文件
vim conf/confxml.xml
1
vim conf/confxml.xml
6  <filter start="false">
7      <exclude expression="(.*)\.svn"></exclude>
8      <exclude expression="(.*)\.gz"></exclude>
9      <exclude expression="^info/*"></exclude>
10     <exclude expression="^static/*"></exclude>
11  </filter>
说明:排除指定数据信息不要进行实时传输同步

12  <inotify>
13      <delete start="true"/>
14      <createFolder start="true"/>
15      <createFile start="false"/>
16      <closeWrite start="true"/>
17      <moveFrom start="true"/>
18      <moveTo start="true"/>
19      <attrib start="false"/>
20      <modify start="false"/>
21  </inotify>
说明:定义inotify程序需要监控的事件

24  <localpath watch="/opt/tongbu"> -指定监控的目录
25      <remote ip="192.168.81.165" name="backup"/> -指定备份服务器地址 ---指定备份服务器模块信息
26      <!--<remote ip="192.168.8.39" name="tongbu"/>--> -指定多个备份服务器信息,实现同步备份到多个备份服务器需求
27      <!--<remote ip="192.168.8.40" name="tongbu"/>-->
28  </localpath>
29  <rsync>
30     <commonParams params="-artuz"/>
31     <auth start="true" users="rsync_backup" passwordfile="/etc/rsync.password"/> -开启用户认证,并定义认证用户和认证密码文件
32     <userDefinedPort start="true" port="874"/><!-- port=874 --> -定义备份服务器的端口
33     <timeout start="false" time=100"/><!-- timeout=100 -->  -定义超时时间
34     <ssh start="false" />
35  </rsync>


说明:定义rsync程序需要监控的事件


# 第四步:启动sersync服务程序
[root@nfs01 ~]# PATH="$PATH:/usr/local/sersync/bin"
[root@nfs01 ~]# echo "export PATH=$PATH:/usr/local/sersync/bin" >>/etc/profile
[root@nfs01 ~]# source /etc/profile
[root@nfs01 ~]# echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin:/usr/local/sersync/bin
注意加上a+x权限
#参数介绍:
参数-d:  启用守护进程模式
参数-r:  在监控前,将监控目录与远程主机用rsync命令推送一遍,进行同步测试
参数-o:  指定配置文件,默认使用confxml.xml文件
         -o /usr/local/sersync/conf/confxml.xml
         -o /usr/local/sersync/conf/confxml02.xml
# 启动实时同步服务:
[root@nfs01 ~]# sersync -dro  /usr/local/sersync/conf/confxml.xml   
# 开机自动启动:
[root@nfs01 ~]# echo "sersync -dro  /usr/local/sersync/conf/confxml.xml" >>/etc/rc.local
 
posted @ 2019-04-27 00:53  michaelni  阅读(268)  评论(0编辑  收藏  举报