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

1:单独使用rsync的不足:

rsync同步数据时,需要扫描所有文件后进行比对,然后进行差量传输。如果文件数量达到了百万甚至千万量级,扫描所有文件将是非常耗时的,而且发生变化的往往是其中最少的一部分,因此rsync是非常低效的方式。其此,rsync不能实时监测,同步数据,虽然它可以通过Linux守护进程的方式触发同步,但是两次触发动作一定会有时间差,可能导致服务器端和客户端数据不一致,无法在出现应用故障时完全恢复数据。基于以上原因,rsync+inotify组合出现了。

2:inotify的简介:

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

3:安装inotify工具inotify-tools:

1)inotify的特性需要Linux内核的支持,内核版本需在2.6.13版本以上.

[root@analyse ~]# uname -r
2.6.18-194.32.1.el5

[root@analyse ~]# ll /proc/sys/fs/inotify/
-rw-r--r-- 1 root root 0 04-05 14:46 max_queued_events
-rw-r--r-- 1 root root 0 04-05 14:46 max_user_instances
-rw-r--r-- 1 root root 0 04-05 14:46 max_user_watches
如果有上面3项输出,就表示系统默认支持inotify,可以安装inotify-tools了。

可以到http://inotify-tools.sourceforge.net/下载相应版本的inotify-tools,然后开始编译安装。过程如下:

[root@mail ~]# tar zxvf inotify-tools-3.14.tar.gz

[root@mail ~]# cd inotify-tools-3.14
[root@mail inotify-tools-3.14]# ./configure && make && make install

[root@mail inotify-tools-3.14]# ll /usr/local/bin/inotifywa*
-rwxr-xr-x 1 root root 47208 04-05 15:11 /usr/local/bin/inotifywait
-rwxr-xr-x 1 root root 43562 04-05 15:11 /usr/local/bin/inotifywatch

安装完inotify-tools后,会生成inotifywait和inotifywatch两个指令。其中,inotifywait用于等待文件或文件集的一个特定事件,可以监控任何文件和目录设置,并且可以递归地监控整个目录树;inotifywatch用于收集被监控的文件系统统计数据,包括每个inotify事件发生多少次信息。

4:inotify相关参数:

inotify定义了一些接口参数,可以用来限制inotify消耗kernel memory的大小。由于这些参数都是内核参数,因此,可以根据应用需求,实时调节其大小。

[root@mail ~]# cat /proc/sys/fs/inotify/max_queued_events 
16384

##表示调用inotify_init时分配到inotify instance中可排队的event数的最大值,超过这个值得事件被丢弃,但会触发In_q_overflow事件。

[root@mail ~]# cat /proc/sys/fs/inotify/max_user_instances 
128

##表示每一个real user ID可创建的inotify instances的数量上限。

[root@mail ~]# cat /proc/sys/fs/inotify/max_user_watches 
8192

##表示每一个inotify实例相关联的watchs的上限,也就是每一个inotify实例可监控的最大目录数。如果监控的文件数目巨大,需要根据实际情况适当增加此值得大小。例如:

[root@mail ~]# echo 30000000> /proc/sys/fs/inotify/max_user_watches

5:inotifywait相关参数:

inotifywait是一个监控等待事件,可以配合shell脚本使用它。

-m ,即“--monitor”,表示始终保持事件监听状态;

-r ,即“--recursive”,表示递归查询目录;

-q ,即“--quiet”,表示打印出监控事件;

-e ,即“--event”,通过此参数可以指定要监控的事件,常见的事件有modify,delete,create和attrib等。

应用案例:利用rsync+inotify搭建实时同步系统

系统环境:

Web1 192.168.0.189 服务节点

Web2 192.168.0.196 服务节点

Web3 192.168.0.249 服务节点

Server 192.168.0.176 ##充当的是内容分发系统:

1:安装rsync和inotify-tools:

inotify-tools是用来监控文件系统的工具,因此必须安装在内容分发节点上,服务节点上无需安装;所有都安装rsync。

在这个案例中,内容发布节点(即Server)充当rsync的客户端角色,而3个服务节点充当了rsync的服务器端的角色,整个数据同步的过程其实就是一个从客户端向服务器端发送数据的过程.

配置过程略简。

2:在三个服务节点上配置rsync:

Web1节点的rsyncd.conf配置如下:

uid = nobody
gid = nobody
use chroot = no
max connections = 10
strict modes = yes
pid file = /var/run/rsyncd.pid
lock file = /var/run/rsyncd.lock
log file = /var/run/rsyncd.log

[web1]
path = /web1/www/
comment = 51auto www file
ignore errors
read only = no
write only = no
hosts allow = 192.168.0.176
hosts deny = *
list = false
uid = root
gid = root
auth users = web1user
secrets file = /etc/web1.passwd

Web2节点的配置如下:

uid = nobody
gid = nobody
use chroot = no
max connections = 10
strict modes = yes
pid file = /var/run/rsyncd.pid
lock file = /var/run/rsyncd.lock
log file = /var/run/rsyncd.log

[web2]
path = /web2/www/
comment = 51auto www2 file
ignore errors
read only = no
write only = no
hosts allow = 192.168.0.176
hosts deny = *
list = false
uid = root
gid = root
auth users = web2user
secrets file = /etc/web2.passwd

Web3配置:

uid = nobody
gid = nobody
use chroot = no
max connections = 10
strict modes = yes
pid file = /var/run/rsyncd.pid
lock file = /var/run/rsyncd.lock
log file = /var/run/rsyncd.log

[web3]
path = /web3/www/
comment = 51auto www3 file
ignore errors
read only = no
write only = no
hosts allow = 192.168.0.176
hosts deny = *
list = false
uid = root
gid = root
auth users = web3user
secrets file = /etc/web3.passwd

在配置完3台服务节点的rsyncd.conf文件后,依次启动rsync守护进程。接着将rsync服务加入开机启动:

[root@varnish ~]# /usr/local/bin/rsync --daemon

[root@varnish ~]# echo "/usr/local/bin/rsync --daemon" >> /etc/rc.local

-------------------------------------------------------------

3:配置内容分发节点:

配置内容分发节点的主要工作是将生成的静态网页实时同步到集群中3个服务节点上,这个过程可以通过一个shell脚本完成。内容如下:

~                                       
~

本文转自 kuchuli 51CTO博客,原文链接:http://blog.51cto.com/lgdvsehome/827103,如需转载请自行联系原作者

利用rsync+inotify搭建实时同步系统相关推荐

  1. Rsync+inotify搭建实时同步系统

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

  2. rsync+inotify实现实时同步案例详解

    rsync+inotify实现实时同步案例详解 转自:http://chocolee.blog.51cto.com/8158455/1400596 随着应用系统规模的不断扩大,对数据的安全性和可靠性也 ...

  3. rsync + inotify 数据实时同步

    一.rsync介绍 rsync英文全称为Remote synchronization,从软件的名称就可以看出来,Rsync具有可是本地和远程两台主机之间的数据快速复制同步镜像.远程备份的功能,这个功能 ...

  4. rsync + inotify 实现实时同步

    rsync + inotify 实现实时同步 rsync 简介 Rsync是一款开源的.快速的.多功能的.可实现全量及增量的本地或远程数据同步备份的优秀工具.并且可以不进行改变原有数据的属性信息,实现 ...

  5. rsync+inotify实现实时同步案例--转

    转自:http://chocolee.blog.51cto.com/8158455/1400596 随着应用系统规模的不断扩大,对数据的安全性和可靠性也提出的更好的要求,rsync在高端业务系统中也逐 ...

  6. rsync+inotify实现实时同步案例

    随着应用系统规模的不断扩大,对数据的安全性和可靠性也提出的更好的要求,rsync在高端业务系统中也逐渐暴露出了很多不足,首先,rsync同步数据时,需要扫描所有文件后进行比对,进行差量传输.如果文件数 ...

  7. linux目录自动同步,Linux下rsync+inotify实现实时文件自动同步

    背景:随着时代的发展,手工的同步文件的功能已经不适合为高效的现代化企业的服务了. rsync的局限性: 1.对于大的文件(百万级.千万级的)同步耗时. 2.不能实时的检测,rsync是根据Linux守 ...

  8. Linux平台上文件同步——rsync+inotify之实时同步

    1 前言 1.1 概述 本文介绍使用rsync和 inotify-tools,实现linux 上的本地实时同步和本地定时同步的方法. 1.2 实验环境 服务器两台 操作系统: CentOS-7.4 软 ...

  9. Rsync+inotify实现实时同步

    如果有一天去接受面试:面试官问你一个1t的文件需要进行传输,问题用何种方法.假如你答了scp或者ftp.那么你挂的几率是很大的 一.inotify介绍 inotify-tools有两个命令 //ino ...

最新文章

  1. 037——VUE中表单控件处理之表单修饰符:lazy/number/trim
  2. 改造Cobol项目应该注意的几个问题
  3. 网页中的各种高度说明
  4. ie插件获取dom_读书笔记《DOM编程艺术》DOM
  5. C语言程序控制语句——while
  6. input type=checkbox 前面有个可供打钩的小方框 HTML DOM Checkbox 对象
  7. html源码蔡,html基础代码详解
  8. 完美 全兼容 解决 文字两端对齐 justify 中文姓名对齐
  9. OCR文字识别软件那个好?
  10. SAP UI5 应用开发教程之六十五 - 基于 OData V4 的 SAP UI5 表格控件如何实现创建,编辑和保存功能试读版
  11. android9手机* 代码,android Telephony学习 --- 第九篇 USSD简介
  12. 计算机考试有python吗_计算机二级考试有python吗
  13. 推荐5款常用编程文本编辑器
  14. kali如何对网站进行ddos攻击
  15. 计算机产品可以进项抵扣,企业购入的软件产品可以全额抵扣进项税吗?
  16. 下载jupyterlab中的文件夹
  17. 为什么现在的视频都会加入自动字幕功能?
  18. 为开发者而生的Twig(上)-Twig使用指南
  19. pwcorr_a:输出相关系数矩阵至Word和Excel
  20. Android Studio for mac(Android集成开发工具)

热门文章

  1. Windows2008r2如何关闭防火墙
  2. JQuery合并table单元格--有限制(table格式需要注意)
  3. CxImage使用心得(转载)
  4. 转:c++builder读写INI文件
  5. Logstash读取Kafka数据写入HDFS详解
  6. 控制层@Value注解取不到值
  7. 利用opencv作透明重叠人群密度热度图
  8. Win10系列:JavaScript动画3
  9. Java 集合深入理解(15):AbstractMap
  10. 启动XP出现“Operating System Not Found”