免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 11211 | 回复: 10
打印 上一主题 下一主题

rsync+inotify实现多台web数据动态同步【分享】 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2011-09-25 22:22 |只看该作者 |倒序浏览
rsync+inotify实现多台web数据动态同步【分享】



背景:由于无存储共享设备,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@$WEB2ES
rsync -ahqzt --password-file=/etc/rsync-client.passwd  --delete $SRC $USER@$WEB3ES
rsync -ahqzt --password-file=/etc/rsync-client.passwd  --delete $SRC $USER@$WEB4ES
        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

论坛徽章:
2
2015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:57:09
2 [报告]
发表于 2011-09-26 11:37 |只看该作者
渣一样的速度,小量文件变动还好说,量稍微大一点完儿蛋
用python的那个应该好很多。

论坛徽章:
0
3 [报告]
发表于 2011-09-26 18:45 |只看该作者
inotify还真不如自己写的个性化的app

论坛徽章:
0
4 [报告]
发表于 2011-09-28 13:01 |只看该作者
是一种方案。学习了,谢谢

论坛徽章:
0
5 [报告]
发表于 2011-09-28 16:13 |只看该作者
恩很不错........

论坛徽章:
1
巨蟹座
日期:2013-12-30 17:06:34
6 [报告]
发表于 2011-09-28 22:01 |只看该作者
文件稍微多点,就完蛋。

论坛徽章:
1
射手座
日期:2014-03-06 22:16:03
7 [报告]
发表于 2011-10-24 13:23 |只看该作者
回复 3# hunter_search


    你所写的app,可否讨论一下.或者测试一下。

论坛徽章:
0
8 [报告]
发表于 2014-05-08 10:15 |只看该作者
局域网15M不到,说的支持单个文件的差异同步,结果怎么测试都不行,有实现了单个文件的差异同步的吗?指点一下。谢谢回复 2# lolizeppelin


   

论坛徽章:
7
荣誉版主
日期:2011-11-23 16:44:17子鼠
日期:2014-07-24 15:38:07狮子座
日期:2014-07-24 11:00:54巨蟹座
日期:2014-07-21 19:03:10双子座
日期:2014-05-22 12:00:09卯兔
日期:2014-05-08 19:43:17卯兔
日期:2014-08-22 13:39:09
9 [报告]
发表于 2014-05-08 17:01 |只看该作者
inotify tools好东西啦,感谢楼主分享。

论坛徽章:
2
2015年辞旧岁徽章
日期:2015-03-03 16:54:1515-16赛季CBA联赛之上海
日期:2016-05-05 09:45:14
10 [报告]
发表于 2014-05-12 17:37 |只看该作者
inotify tools  如果文件小,又多的话,确实不好,同步速度太慢,
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP