rsync+inotify搭建实时同步系统

Rsync 优点

rsync具有安全性高、备份迅速、支持增量备份等优点,通过rsync可以解决对实时性要求不高的数据备份需求,例如定期地备份文件服务器数据到远程服务器上,对本地磁盘定期进行数据镜像等。

Rsync 不足

随着应用系统规模的不断扩大,对数据的安全性和可靠性提出了更高的要求,rsync便暴露出了很多不足之处。首先,rsync同步数据时,需要扫描所有文件后进行比对,然后进行差量传输。如果文件数量达到了百万量级及以上时,扫描文件就非常耗费时间,有时还会出现只是很少一部分数据发生了变化,因此rsync就变得非常低效了。其次,rsync不能够实时监测、同步数据,虽然它可以通过Linux守护进程的方式触发同步,但是两次触发动作一定会出现时间差,可能导致服务器端和客户端的数据出现不一致,后期无法在出现故障时完全恢复数据。

Rsync+inotify组合

为解决以上问题而出现的,实现了数据的实时同步

inotify是什么 ?

inotify是一种强大的、细粒度的、异步的文件系统事件监控机制,Linux内核从2.6.13版本起,加入了对inotify的支持。通过inotify可以监控文件系统中添加、删除、修改、移动等各种事件,利用这个内核接口,inotify-tools便可以监控文件系统下文件的各种变化情况了。

检查内核是否支持inotify:

实验案例:rsync+inotify搭建实时同步系统

案例描述:在前文Haproxy搭建高可用Web集群的网站拓扑架构图基础上,实现两台Web站点数据的实时同步,web1服务器为内容发布节点,web2服务器为同步节点(本文主要说明rsync+inotify实时同步数据技术,其他请阅读前文,谢谢!)。

系统环境

主机 操作系统 IP地址 web站点目录 软件包
负载调度服务器: CentOS 7.0 x86_64 192.168.100.25 haproxy-1.5.19.tar.gz
web1节点服务器: CentOS 7.0 x86_64 192.168.100.26 /www/wwwroot nginx-1.12.0.tar.gz、rsync-3.1.3.tar.gz、inotify-tools-3.14.tar.gz
web2节点服务器: CentOS 7.0 x86_64 192.168.100.27 /web2/wwwroot nginx-1.12.0.tar.gz、rsync-3.1.3.tar.gz
Win 7 客户端: Windows 7 192.168.100.30

软件包:rsync+inotify 密码:do45

开始部署

inotify-tools是用来监控文件系统变化的工具,因此必须安装在内容发布系统上,服务节点无需安装它,而web2服务器上需要安装rsync实现文件传输。

一、web2服务器(待同步数据:rsync)

1.安装rsync软件包

#解压
tar zxvf rsync-3.1.3.tar.gz -C /opt
#切换目录
cd /opt/rsync-3.1.3
#配置
./configure
#编译及安装
make && make install

2.修改rsync配置文件:

/etc/rsyncd.conf

#/etc/rsyncd: configuration file for rsync daemon mode
#See rsyncd.conf man page for more options.
#configuration example:
uid = nobody
gid = nobody
use chroot = no
max connections = 10
strict mode=yes
pid file = /var/run/rsyncd.pid
lock file=/var/run/rsync.lock
log file=/var/log/rsyncd.log
[web1]
path = /web1/wwwroot
comment = web1 file
ignore errrors
read only=no
write only=no
hosts allow=*
hosts deny=192.168.100.10
list=false
uid=root
gid=root
auth users=web1user
secrets file=/etc/web1.pass

3.新建密码文件(文件格式:user:pass)

/etc/web1.pass

> web1user:www123

修改密码文件权限

chmod 600 /etc/web1.pass

4.启动rsync守护进程

/usr/local/bin/rsync --daemon       

5.加入系统自启动文件

echo "/usr/local/bin/rsync --daemon" >> /etc/rc.local

6.查看rsync进程

ps -ef | grep rsync

二、web1服务器(内发发布节点:rsync+inotify)

1.安装rsync软件包

#解压
tar zxvf rsync-3.1.3.tar.gz -C /opt
#切换目录
cd /opt/rsync-3.1.3
#配置
./configure
#编译及安装
make && make install

2.新建密码文件,需和节点服务器密码一致

/etc/server.pass

> www123

3.修改密码文件权限

chmod 600 /etc/server.pass

4.安装inotify-tools

#解压
tar zxvf inotify-tools-3.14.tar.gz -C /opt
#切换目录
cd -C /opt/inotify-tools-3.14
#配置
./configure
#编译及安装
make && make install

5.编写shell脚本来配置内容发布节点

vim /web/inotifyrsync.sh

#!/bin/bash
host1=192.168.100.26
src=/web/wwwroot/
dst1=web1
user1=web1user
/usr/local/bin/inotifywait -mrq --timefmt ‘%d/%m/%y %H:%M‘ --format ‘%T %w%f%e‘ -e close_write,delete,create,attrib $src \
| while read files
do
/usr/bin/rsync -vzrtopg --delete --progress --password-file=/etc/server.pass $src [email protected]$host1::$dst1 > /dev/null 2>&1
echo "${files} was rsynced." >> /tmp/rsync.log 2>&1
done

6.为其指定可执行权限,然后放入后台运行

chmod 755 /web/inotifyrsync.sh
/web/inotifyrsync.sh &

7.将脚本加入系统自启动文件

echo "/web/inotifyrsync.sh &" >> /etc/rc.local

测试

在web1服务器节点的/web/wwwroot目录下添加、删除、修改文件,然后到web2服务器节点对应目录去查看文件是否跟随发布节点同步变化。

web1服务器为内容发布节点:

web2服务器进行数据同步:

原文地址:http://blog.51cto.com/10316297/2136440

时间: 2024-10-08 09:40:43

rsync+inotify搭建实时同步系统的相关文章

利用rsync+inotify搭建实时同步系统

系统环境(本例只列举一个服务节点): 内容发布节点server1:192.168.1.154 服务节点    c1:192.168.1.148 C1: #安装配置rsync [[email protected] ~]# yum install rsync -y [[email protected] ~]#vim /etc/rsyncd.conf uid = nobody gid = nobody ignore errors read only = no write only = no list 

中原六仔平台搭建实时同步系统

Rsync 优点中原六仔平台搭建Q1446595067 rsync具有安全性高.备份迅速.支持增量备份等优点,通过rsync可以解决对实时性要求不高的数据备份需求,例如定期地备份文件服务器数据到远程服务器上,对本地磁盘定期进行数据镜像等.Rsync 不足 随着应用系统规模的不断扩大,对数据的安全性和可靠性提出了更高的要求,rsync便暴露出了很多不足之处.首先,rsync同步数据时,需要扫描所有文件后进行比对,然后进行差量传输.如果文件数量达到了百万量级及以上时,扫描文件就非常耗费时间,有时还会

CentOS6.4_64位下搭建Rsync+Inotify实现实时同步

CentOS6.4_64位下搭建Rsync+Inotify实现实时同步 rsync是linux下的文件同步服务,功能简单来说就是服务端打开873端口,客户端连接这个端口,并对服务器端配置的目录进行同步,可以理解为客户端比对服务器端资源后,对增量或者差异的数据进行增删改操作,功能支持上传(推送)或下载(获取)比对,也就是远程数据比对本地数据而后对远程数据进行增删改操作,以及本地数据比对远程数据然后对本地数据进行增删改操作. centos6.4下默认已经安装,只需保证依赖服务xinetd开启即可.

rsync的简单介绍及rsync+inotify实现实时同步更新

Rsync的简单介绍及rsync+inotify实现实时同步更新 rsync是类unix系统下的数据镜像备份工具--remotesync.一款快速增量备份工具 Remote Sync,远程同步支持本地复制,或者与其他SSH.rsync主机同步.Rsync是超级进程来管理的,服务端口为873. 特点: 1.可以镜像保存整个目录树或文件系统: 2.有较高的数据传输效率: 3.可借助于SSH实现安全数据传输: 4. 支持匿名传输 工作模式: 1.shell模式,也称作本地模式 2.远程shell模式,

第三十四天-rsync+inotify实现实时同步案例

推荐: Rsync结合Inotify 实时同步配置 rsync+inotify实现实时同步案例 rsync+inotify实现多台服务器之间数据实时同步 Linux下Rsync+Inotify-tools实现数据实时同步

Ubuntu 下rsync+inotify实现实时文件同步

rsync+inotify实现实时文件同步 一.rsync的优点与不足 与传统的cp.tar备份方式相比,rsync具有安全性高.备份迅速.支持增量备份等优点,通过rsync可以解决对实时性要求不高的数据备份需求,例如定期的备份文件服务器数据到远端服务器,对本地磁盘定期做数据镜像等. 随着应用系统规模的不断扩大,对数据的安全性和可靠性也提出的更好的要求,rsync在高端业务系统中也逐渐暴露出了很多不足,首先,rsync同步数据时,需要扫描所有文件后进行比对,进行差量传输.如果文件数量达到了百万甚

linux rsync +inotify 实现 实时同步

前言:     rsync可以实现触发式的文件同步,但是通过crontab守护进程方式进行触发,同步的数据和实际数据会有差异,而inotify可以监控文件系统的各种变化,当文件有任何变动时,就触发rsync同步,这样刚好解决了同步数据的实时性问题. 一.基本环境 系统:CentOS 2.6.32-220.el6.x86_64软件包版本:rsync-3.0.6-12.el6.x86_64                    inotify-tools-3.14 下载链接:百度   inotify

通过rsync+inotify实现实时同步

需求:web服务器未做存储上的HA,为了保证主备服务器上目录及文件能够实时同步,当主服务器宕机时可快速切换到备服务器上,需将主服务器上的某些目录的文件实时同步到备服务器上 那么我选择了rsync+inotify实现实时同步 首先要了解是从哪台服务器同步到哪台服务器,不能弄反了,尤其是生产系统,且在生产系统中,先做测试目录,如果生产服务器上数据量不大,应先做好备份工作 先说环境 OS:linux rhel6.2 x86_64 192.168.10.72 安装rsync 配置rsync.conf19

实战:配置rsync+inotify实现实时同步备份

实战:配置rsync+inotify实现实时同步 Linux内核从2.6.13版本开始提供了inotify通知接口,用来监控文件系统的各种变化情况,如文件存取.删除.移动等.利用这一机制,可以非常方便地实现文件异动告警.增量备份,并针对目录或文件的变化及时作出响应. 使用rsync工具与inotify机制相结合,可以实现触发式备份(实时同步),只要原始位置的文档发生变化,则立即启动增量备份操作,否则处于静态等侍状态,这样一来,就避免了按固定周期备份进存在的延迟性.周期过密等问题. inotify