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

*背景:由于无存储共享设备,web集群中的代码均存放在本地,最终导致web节点之间的数据无法一致。
*解决办法:采用rsync+inotify,实现多台web数据动态同步
*解决思路:比如有a、b、c、d四台web,为解决哪台服务器为源数据服务器,我们在A服务器上安装rsync+inotify,然后将一个二级域名指向A服务器,这样以后网站编辑、开发人员之间访问二级域名进行日常网站更新,A服务器在检测到本地有数据更新时,便动态(触发式)向其它服务器发送更新数据。
*注意:一定要使用rsync相同的版本,否则会出现未知错误。
*选择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 下载地址:http://rsync.samba.org/

复制代码

代码如下:

cd /data/software
wget https://rsync.samba.org/ftp/rsync/rsync-3.0.9.tar.gz
tar zxvf rsync-3.0.9.tar.gz
cd rsync-3.0.9
./configure
make
make install

*安装完成后显示信息

复制代码

代码如下:

mkdir -p /usr/local/bin
/usr/bin/install -c -m 755 rsync /usr/local/bin
mkdir -p /usr/local/share/man/man1
mkdir -p /usr/local/share/man/man5
if test -f rsync.1; then /usr/bin/install -c -m 644 rsync.1 /usr/local/share/man/man1; fi
if test -f rsyncd.conf.5; then /usr/bin/install -c -m 644 rsyncd.conf.5 /usr/local/share/man/man5; fi

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

复制代码

代码如下:

uid = root
gid = root
use chroot = no
max connections = 20
strict modes = yes
log file = /data/logs/rsyncd/rsyncd.log
pid file = /data/logs/rsyncd/rsyncd.pid
lock file = /data/logs/rsyncd/rsync.lock
log format = %t %a %m %f %b
[web]
path = /data/vhosts/it121net/
auth users = username
read only = no
hosts allow = 192.168.1.0/24 #可以是IP段,也可以是IP地址
list = no
uid = root
gid = root
secrets file = /etc/rsync.passwd
ignore errors = yes

*创建目录,用于存放日志。

复制代码

代码如下:

mkdir /data/logs/rsyncd

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

复制代码

代码如下:

username:passwd

*#chmod 600 /etc/rsync.passwd
*启动rsync,启动后使用netstat查看,会发现系统已启动873端口

复制代码

代码如下:

# rsync --daemon --config=/etc/rsync.conf

*加入开机启动

复制代码

代码如下:

# echo "rsync --daemon --config=/etc/rsync.conf" >>/etc/rc.local

*关闭

复制代码

代码如下:

killall rsync

*二、源服务器安装rsync+inotify (在a服务器上操作)
*安装rsync(仅安装即可,不需配置)

复制代码

代码如下:

cd /data/software
wget https://rsync.samba.org/ftp/rsync/rsync-3.0.9.tar.gz
tar zxvf rsync-3.0.9.tar.gz
cd rsync-3.0.9
./configure
make
make install

*echo "passwd" > /etc/rsync-client.passwd
*chmod 600 /etc/rsync-client.passwd
*安装inotify 下载地址:https://github.com/rvoicilas/inotify-tools/wiki/

复制代码

代码如下:

cd /data/software
wget http://cloud.github.com/downloads/rvoicilas/inotify-tools/inotify-tools-3.14.tar.gz
tar zxvf inotify-tools-3.14.tar.gz
cd inotify-tools-3.14
./configure
make
make install

*创建启动脚本
*#vi /etc/rsync-web.sh 加入如下内容

复制代码

代码如下:

#!/bin/sh
SRC=/data/vhosts/it121net/
DES=web
WEB2=192.168.1.102
WEB3=192.168.1.103
WEB4=192.168.1.104
USER=username
/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放入后台执行,否则关闭终端后此脚本进程会自动结束
/etc/rsync-web.sh &

*关闭脚本

复制代码

代码如下:

sudo pkill rsync
sudo pkill inotifywait

*@ERROR: chdir failed rsync error: error starting client-server protocol (code 5) at main.c(1503) [sender=3.0.6]解决办法

复制代码

代码如下:

setsebool -P rsync_disable_trans on

*rsync安装路径(注意查看)

复制代码

代码如下:

/usr/bin/rsync
/usr/local/bin/rsync
/etc/xinetd.d/rsync

(0)

相关推荐

  • rsync+inotify实现文件的实时同步

    工作中的一个需求,生产环境测试通过,可以实现文件的实时同步,希望对大家有帮助,希望看到的同志,一定要顶,这样才是好同志嘛!呵呵rsync+inotify实现文件的实时同步环境描述:现有两台服务器,要实 ...

  • 扁平web数据统计模【做作业】

    做作业了,做作业了.今天我们的作业是一个扁平web数据统计模块,不知道大家能不能认真完成呢? 提示:画布大小800*600 注意点:1.比例大小 2.投影的位置 要求:提交的作业在背景的右下角或评论框 ...

  • Win7下搭建web服务器的简单步骤

    用户们若果需要局域网内资源的共享,是要使用到Web服务器的.用户们把自己的文件.信息资料,上传到服务器实现了与大家进行资源的共享,信息还可以达到同步.同时它也是一个很好的信息共享平台,方便又实用.那么 ...

  • 苹果手机iPhone X 快捷的传送备忘录到另一台iPhone的具体操作步骤

    iPhone X 如何快捷的传送备忘录到另一台iPhone呢?接下来小编就会和大家分享一下具体的方法.具体如下:1. 首先解锁iPhone X,轻划 iPhone X右上角,打开到下图所示界面,重按下 ...

  • CentOS 5.4 rsync+inotify配置触发式(实时)文件远程同步

    软件:rsync-2.6.8-3.1(一般系统默认安装)、inotify-tools-3.14.tar.gz 主机:Linux-Master:10.10.50.217(源主机)、Linux-Slave ...

  • Excel数据可视化动态图制作(用excel做数据动态图)

    Excel图表对于多数人来将应该是不陌生的,大家都会用图表来简单明了的展示各类数据.但是图表制作有一种比较尴尬的情况,那就是当数据维多过多的时候,图表看起来就会显得非常的杂.如上图,我们根据子公司1- ...

  • 如何搭建一台Linux媒体服务器的具体步骤

    图1:ZaReason的MediaBox。 几乎任何Linux都能成为出色的媒体服务器系统,因为它占用资源少、运行又稳定,所以你可以使用自己最熟悉的任何一个版本的Linux。任何Ubuntu变种版本( ...

  • 91助手怎么备份应用数据 91手机助手一键备份应用数据的方法步骤

    手机升级或者刷机但是手机的游戏数据要怎么办呢?来教您使用91助手一键备份应用数据! 【操作步骤】 1、android 打开91助手——功能大全——备份还原——应用数据 ps:android系统要备份应 ...

  • 如何解决Oracle数据库中重复数据的方法步骤

    在平时的开发中,我们经常遇到数据表中出现重复的数据,那么该如何解决呢?这里介绍两种情况下的数据去重方法,一、完全重复数据去重;二、部分字段数据重复去重。 一、完全重复数据去重方法 对于表中完全重复数据 ...