`
d2hellen
  • 浏览: 105823 次
  • 性别: Icon_minigender_1
  • 来自: 珠海
社区版块
存档分类
最新评论

rsync+inotify实现多台web数据动态同步

 
阅读更多
ps: 最新的可以从http://rsync.samba.org/ftp/rsync/src/rsync-3.0.9.tar.gz下载

#wget http://rsync.samba.org/ftp/rsync/src/rsync-3.0.9.tar.gz命令就可以咯

背景:由于无存储共享设备,web集群中的代码均存放在本地,最终导致web节点之间的数据无法一致。
解决办法:采用rsync+inotify,实现多台web数据动态同步

解决思路:比如有a、b、c、d四台web,为解决哪台服务器为源数据服务器,我们在a服务器上安装rsync+inotify,然后将一个二级域名指向a服务器,这样以后网站编辑、开发人员之间访问二级域名进行日常网站更新,a服务器在检测到本地有数据更新时,便动态(触发式)向其它服务器发送更新数据

选择rsync+inotify的理由:在常规的数据同步应用案例中,大多数人会选择使用rsync来完成数据同步,笔者选择rsync+inotify的理由如下
1、服务器性能:rsync只能实现定时更新,无论网站有无文件更新,rsync都会按着定时任务去检查文件是否有更新,当数据文件较大时会使服务器性能下降;而rsync+inotify为触发式更新,也就是说只有当某个文件发生改动时才会更新,这样一来对服务器性能影响较小
2、数据实时性:如果选择rsync,每隔多长时间同步一次数据是个问题,时间越短,对性能影响就越大。时间太长,用户/编辑无法接受。采用rsync+inotify可实现实时更新,当a服务器文件有更新时,其它服务器立即更新


环境拓扑
a:192.168.1.101
b:192.168.1.102
c:192.168.1.103
d:192.168.1.104
注:数据源服务器为a,目标服务器为b、c、d


一、目标服务器安装rsync (在b、c、d服务器上操作,安装配置均一样)

安装rsync
#tar zxvf rsync-3.0.8.tar.gz
#cd rsync-3.0.8
#./configure && make && make install


配置rsync
#vi /etc/rsync.conf    加入如下内容

uid = root
gid = root
use chroot = no
max connections = 20
strict modes = yes
log file = /var/log/rsyncd.log
pid file = /var/run/rsyncd.pid
lock file = /var/run/rsync.lock
log format = %t %a %m %f %b
[web]
path = /usr/local/nginx/html/
auth users = rsync
read only = no
hosts allow = 192.168.1.0/24
list = no
uid = root
gid = root
secrets file = /etc/rsync.passwd
ignore errors = yes

创建认证
#vi /etc/rsync.passwd
rsync:rsync

#chmod 600 /etc/rsync.passwd

启动rsync,启动后使用netstat查看,会发现系统已启动873端口
# rsync –daemon –config=/etc/rsync.conf  

加入开机启动
# echo "rsync –daemon –config=/etc/rsync.conf" >>/etc/rc.local

二、源服务器安装rsync+inotify (在a服务器上操作)
安装rsync(仅安装即可,不需配置)
#tar zxvf rsync-3.0.8.tar.gz
#cd rsync-3.0.8
#./configure && make && make install
#echo "rsync" > /etc/rsync-client.passwd
#chmod 600 /etc/rsync-client.passwd

安装inotify
#tar zxvf inotify-tools-3.13.tar.gz
#cd inotify-tools-3.13
#./configure && make && make install

#vi /etc/rsync-web.sh   加入如下内容
#!/bin/sh
SRC=/usr/local/nginx/html/
DES=web
WEB2=192.168.1.102
WEB3=192.168.1.103
WEB4=192.168.1.104
USER=rsync
/usr/local/bin/inotifywait -mrq -e create,move,delete,modify $SRC | while read D E F
         do
rsync -ahqzt –password-file=/etc/rsync-client.passwd  –delete $SRC $USER@$WEB2::$DES
rsync -ahqzt –password-file=/etc/rsync-client.passwd  –delete $SRC $USER@$WEB3::$DES
rsync -ahqzt –password-file=/etc/rsync-client.passwd  –delete $SRC $USER@$WEB4::$DES
         done

#chmod +x /etc/rsync-web.sh
#nohup /etc/rsync-web.sh &       //必须使用nohup放入后台执行,否则关闭终端后此脚本进程会自动结束


三、测试
在a服务器/usr/local/nginx/html目录下进行增、添、改、删文件,看b、c、d服务器是否能得到同步

参考文献:
http://bbs.linuxtone.org/thread-2681-1-1.html
分享到:
评论

相关推荐

    rsync+inotify实现服务器之间目录文件实时同步

    **需求背景**:假设有一家公司的业务需求,需要实现两台 web 服务器之间的两个目录实时同步。 **实现方案**:采用 rsync+inotify 方案。 1. **安装配置 rsync**: - 下载 rsync 源码包并编译安装。 - 创建认证...

    rsync+inotify.zip

    将rsync与inotify结合使用,可以实现高效且实时的文件同步策略。例如,可以在一个目录上设置inotify监听,一旦有文件变动,就触发rsync进行同步。这样的组合在Web开发中特别有用,可以实现实时编译、部署静态资源,...

    两台linux服务器目录实时同步(Rsync+Inotify)

    本文将详细介绍如何通过结合`Rsync`与`Inotify`这两种强大工具,在两台Linux服务器之间实现实时目录同步。 #### 二、Rsync简介 `Rsync`是一种用于文件传输的高效工具,它支持增量备份,即只传输两个文件差异的部分...

    rsync+innotify数据同步

    ### rsync+inotify 实现高效数据同步 在IT领域,数据同步是保障业务连续性和数据完整性的重要环节。传统的数据备份方法如`cp`和`tar`存在诸多局限,如效率低下、安全性不足以及不支持增量备份等。相比之下,`rsync`...

    inotify+rsync+supervisor实现服务器文件同步详细说明

    同步方案:采用inotify监听文件变化,触发rsync实时同步,并且用supervisor监控inotify进程,莫明死掉后会立即重新启动。 需求:adminweb上的/data/www/user下的代码要同步到web1\2\3上 172.40.0.203:web1 172.40.0...

    linux系统中通过rsync+inotify实现网页自动同步

    使用多个web服务器实现负载均衡,为了保持前端web服务器上资源的一致性可以通过rsync在主服务器上(可写入数据)将更新过的文件同步到其他从服务器(只读服务器),但是不能自动的进行实时同步,使用inotify可以实现实时...

    OS + Linux File nfs / samba / rsync / inotify / smb / webdav

    这些技术在多台计算机之间进行数据交互、协作工作或者备份中起到关键作用。下面将详细阐述每个概念: 1. **NFS(Network File System)**: NFS是一种由Sun Microsystems开发的协议,允许网络上的不同操作系统之间...

    3.6: rsync同步操作 、 inotify实时同步 、 数据库服务基础 、 管理表数据(1).docx

    本文档主要介绍了Linux环境下的几个关键概念和技术,包括rsync同步操作、inotify实时同步以及数据库服务的基础知识,重点在于rsync的使用和数据库管理。 1. **rsync同步操作**: `rsync`是一个强大的、快速的文件...

    inotify-tools-3.14和3.13合集

    在Linux操作系统中,`inotify-...总的来说,`inotify-tools`和`rsync`的结合使用是Linux环境下实现高效、实时文件同步的重要技术。通过合理配置,它们可以提供可靠的数据保护和一致性保障,同时降低系统资源的消耗。

    Linux web服务器文件及时同步手册

    - **定义**:`sersync`是一种基于`inotify`和`rsync`的自动化文件同步工具,可以实现实时监控文件系统的变更,并将更改同步到多台服务器。 - **优点**: - 实现了真正的实时同步,提高了数据一致性; - 支持多线程...

    linux系统文件的实时同步的实现

    本文将详细介绍如何利用`rsync`和`inotify`工具来实现两台Linux服务器之间的文件实时同步。 #### 二、测试环境 本实验使用的测试环境包括两台Linux服务器: - **主服务器**:IP地址为192.168.1.7 - **备份服务器*...

    Linux+sersync实时同步文件.docx

    sersync 使用 rsync 命令来实现文件同步。 同步解决方案对比 sersync 相比于其他同步解决方案,如 inotify-tools+rsync 和 Openduckbill,具有以下优点: * 使用 C++ 编写,运行速度更快 * 对 Linux 系统文件系统...

    老男孩linux笔记上

    - Rsync+inotify数据同步:Rsync是一种用于远程或本地文件同步的工具,inotify是Linux内核的一个特性,能够监控文件系统的变化。结合使用,可实现文件的实时同步。 - Rsync+sersync数据同步:sersync是一种基于...

    Linux服务器的运维

    通过以上的知识点,我们不仅能够了解到Linux服务器的基本优化方法,还能够掌握如何配置和管理Apache、MySQL和Nginx等关键网络服务,以及实现数据同步的高级功能。这些都是Linux服务器运维工作中不可或缺的技能。

    nodejs-contagious:一对多inotify事件驱动的异步文件系统同步守护程序

    异步特性使rsync任务可以串联完成,而不会中断inotify观察程序进程,从而使其在多个服务器之间高效同步大量文件。 特征 一对多复制 基于Rsync SSH密钥的复制 递归路径观察 多个路径位置 排除模式 用例 创建该守护...

    tomcat根目录同步方案

    3. **多线程支持**:`sersync`内置了多线程同步机制,在处理大型文件时能更好地利用系统资源,确保文件实时同步。 4. **错误处理机制**:当遇到同步失败的情况时,`sersync`会自动将其放入失败队列,并按照预设时间...

Global site tag (gtag.js) - Google Analytics