企业实时同步方案—-Rsync+Inotify-Tools

在博文RHCE系列之备份工具—-镜像备份Rsync中,我带大家了解rsync 的诸多特性以及它所支持的四种模式。作为一个镜像备份工具,可以说 rsync 做的很出色。

可是,随着应用系统规模的不断扩大,我们对数据的安全性和可靠性方面的需求也越来越高!Rsync在高端业务系统中的不足也逐渐暴露了出来。

首先,rsync 在同步数据时,需要扫描所有文件后才进行比对,然后再进行差量传输。如果文件数量达到了百万甚至千万量级,扫描所有文件将是非常耗时的一个操作,并且往往发生变化的是其中很小的一部分,那么这将是非常低效的方式。

其次,rsync不能实时的去监测和同步数据。虽然我们使用crontab的方式,加上 rsync 自身以守护进程启动的方式实现触发同步,但是两次触发动作一定会有时间差。受限于crontab最短也是1分钟,因此这就导致了服务端和客户端数据可能出现不一致,更无法在应用故障时做到数据的完全恢复。

为了满足这方面的需求,我们就结合了 linux文件系统事件监控机制这样一个系统特性(即inotify),通过使用工具 inotify-tools,整合出了 rsync+inotify 这样的一个技术架构,来实现数据实时同步的功能!

下面就跟着我一起来部署一下 rsync+inotify-tools 架构吧!

简易架构图

实验环境介绍:

内核版本:2.6.32-431.el6.x86_64系统采用最小化安装,系统经过了基本优化,selinux为关闭状态,iptables为无限制模式源码包存放位置:/rootRsync客户端+inotify服务,承担角色MASTER,IP:172.16.100.3,主机名:rsync-client-inotifyRsync服务端(S1),承担角色S1,IP:172.16.100.1,主机名:rsync-server-1Rsync服务端(S2),承担角色S2,IP:172.16.100.2,主机名:rsync-server-2

下面,就开始我们的实验!

一、在两台 SLAVE 机器上部署 rsync 服务端程序

特别提醒:本文的Slave机器即为S1(172.16.100.1),S2(172.16.100.2)。此处仅以S1的rsync服务端部署为例,S2的部署和S1一样,此处不再敖述。

1、安装rsync

[root@rsync-server-1~]#yuminstallrsync-y

2、修改rsync配置文件

[root@rsync-server-1~]#cat>/etc/rsyncd.conf<<EOF#Rsyncserver#createdbysunsky00:172013-06-28##rsyncd.confstart##uid=root#rsync对后面模块中的path路径拥有什么权限gid=root#rsync对后面模块中的path路径拥有什么权限usechroot=no#安全操作maxconnections=2000#定义连接数2000timeout=600#600秒超时pidfile=/var/run/rsyncd.pidlockfile=/var/run/rsync.locklogfile=/var/log/rsyncd.logignoreerrors#忽略错误readonly=false#false才能上传文件,true不能上传文件list=false#文件列表hostsallow=172.16.100.0/24hostsdeny=*authusers=rsync_backup#虚拟用户,同步时需要用这个用户secretsfile=/etc/rsync.password#密码文件#####################################[web]#模块名称comment=redhat.sxsitefilesbysunsky00:172013-06-28#注释path=/data/web/redhat.sx#模块的路径####################################[data]comment=redhat.sxsitesitdatafilesbysunsky00:172013-06-28path=/data/web_data/redhat.sx#####################################EOF

特别提示:此处,使用一个多目录同步的案例。大家可以看需求,如果需求只有一个,那仅仅做一个目录即可。

上面的rsync服务的配置文件,表明允许172.16.100.0网段的主机访问,rsync同步模块名为[web]和[data],将同步过来的文件分别放入对应path指定的目录/data/web/redhat.sx,/data/web_data/redhat.sx下。

如果有多台目标服务器,则每一台都需要进行类似的rsync服务端配置,上面的uid和gid需要换成你服务器的相应的同步用户。注意,rsync服务账户(本文用root)要有对被同步目录(/data/web/redhat.sx和/data/web_data/redhat.sx)的写入和更新权限。

你不勇敢,没人替你坚强!

企业实时同步方案—-Rsync+Inotify-Tools

相关文章:

你感兴趣的文章:

标签云: