rsync+inotify文件实时同步

       rsync+inotify文件实时同步

        一个CMS内容发布系统,后端采用负载均衡集群部署方案,由一个负载调度节点、2个服务节点和一个内容发布节点构成,内容发布节点负责将用户发布的数据生成静态页面,同时将静态网页传输至2个服务节点,而负载调度节点负责将用户请求根据负载算法调度到相应的服务节点上,实现用户访问。用户要求在前端访问到的网页数据始终是最新的、一致的。
       VMWare环境下使用一台CentOS6.0主机,一台作为内容发布节点,存储网页更新的数据。另外两台CentOS6.0主机作为服务节点,存储的是从内容发布节点同步的数据。负载调度不考虑。如下图所示:




说明如下:
操作系统 : CentOS 6.5
源服务器: 192.168.66.15
目标服务器: 192.168.66.20  192.168.66.13
目的: 把源服务器上/web/www目录,实时同步到目标服务器的/web1/www以及/web2/www目录下。


操作如下所示:

一,服务节点1配置:

1,关闭SELINUX,关闭防火墙。
vim  /etc/selinux/config 
SELINUX=disabled 

setenforce 0   #立即生效

service iptables stop  # 关闭防火墙

2,安装Rsync服务端软件
yum install rsync  xinetd  
 
vi /etc/xinetd.d/rsync #编辑配置文件,设置开机启动rsync
disable = no

/etc/init.d/xinetd start #启动(CentOS中是以xinetd来管理Rsync服务的)

3. 创建/etc/rsyncd.conf文件,并编辑(文末链接更加详细)
vim /etc/rsyncd.conf  

use chroot = no
max connections = 10
strict modes = yes
pid file = /var/run/rsyncd.pid
lock file = /var/run/rsync.lock
log file = /var/log/rsyncd.log
[web1]
path = /web1/www/      #rsync服务端数据目录路径
comment = web1 file      #模块名称
ignore errors
read only = no
write only = no
hosts allow = 192.168.66.15   #这里就是源服务器端的IP
hosts deny = *
list = false
uid = root
gid = root
auth users = web1user
secrets file = /etc/web1.pass   #用户认证配置文件,里面保存用户名称和密码,后面会创建这个文件

4. 建立密码文件即用户认证文件
vim /etc/web1.pass
内容:web1user:123456

5. 修改文件权限
chmod 600 /etc/web1.pass
chmod 600 /etc/rsyncd.conf  

6,启动rsync(重启)
 service xinetd restart 

7,建立同步文件夹
mkdir  /web1/www

二,服务节点2配置:

1,关闭SELINUX,关闭防火墙。
vim  /etc/selinux/config 
SELINUX=disabled 

setenforce 0   #立即生效

service iptables stop  # 关闭防火墙

2,安装Rsync服务端软件
yum install rsync  xinetd  
 
vi /etc/xinetd.d/rsync #编辑配置文件,设置开机启动rsync
disable = no

/etc/init.d/xinetd start #启动(CentOS中是以xinetd来管理Rsync服务的)

3. 创建/etc/rsyncd.conf文件,并编辑(文末链接更加详细)
vim /etc/rsyncd.conf  

use chroot = no
max connections = 10
strict modes = yes
pid file = /var/run/rsyncd.pid
lock file = /var/run/rsync.lock
log file = /var/log/rsyncd.log
[web2]
path = /web2/www/      #rsync服务端数据目录路径
comment = web2 file      #模块名称
ignore errors
read only = no
write only = no
hosts allow = 192.168.66.15   #这里就是源服务器端的IP
hosts deny = *
list = false
uid = root
gid = root
auth users = web2user
secrets file = /etc/web2.pass   #用户认证配置文件,里面保存用户名称和密码,后面会创建这个文件

4. 建立密码文件即用户认证文件
vim /etc/web2.pass
内容:web2user:123456

5. 修改文件权限
chmod 600 /etc/web2.pass
chmod 600 /etc/rsyncd.conf  

6,启动rsync(重启)
 service xinetd restart 

7,建立同步文件夹
mkdir  /web2/www


三,内容发布节点配置:

1,关闭SELINUX,关闭防火墙。
vim  /etc/selinux/config 
SELINUX=disabled 

setenforce 0   #立即生效

service iptables stop  # 关闭防火墙

2,安装Rsync服务端软件
whereis rsync    #查看系统是否已安装rsync,出现下面的提示,说明已经安装

yum install rsync  xinetd  
 
vi /etc/xinetd.d/rsync #编辑配置文件,设置开机启动rsync
disable = no

/etc/init.d/xinetd start #启动(CentOS中是以xinetd来管理Rsync服务的)

3,安装 inotify-tools(rpm安装)

我们可以去下面这个连接下载最新的yum源,如下:

http://dl.fedoraproject.org/pub/epel/6/x86_64/

下载epel-release-6-8.noarch.rpm软件包并安装,如下:

wget http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm

rpm -ivh epel-release-6-8.noarch.rpm

yum –y install inotify-tools

rpm -ql inotify-tools

安装完成后,会产生下面两个命令


[root@localhost test]# ls /usr/bin/inotify*

/usr/bin/inotifywait  /usr/bin/inotifywatch

4. 建立认证密码文件
vim   /etc/server.pass
内容:123456

5. 修改密码文件权限
chmod 600 /etc/server.pass

6. 创建并编辑脚本文件:/web/www/rsyncinotify.sh
#!/bin/bash
host1=192.168.66.20
host2=192.168.66.13
src=/web/www/
dst1=web1
dst2=web2
user1=web1user
user2=web2user
/usr/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 $user1@$host1::$dst1
        /usr/bin/rsync -vzrtopg --delete --progress --password-file=/etc/server.pass $src $user2@$host2::$dst2
                echo "${files} was rsynced" >> /tmp/rsync.log 2>&1
        done

7. 修改sh文件权限
chmod  755  /web/www/rsyncinotify.sh


至此配置完毕

四,测试:

1. 运行内容发布节点脚本
sh  web/www/rsyncinotify.sh
(运行的时候,脚本是处在运行的状态)

2,此时去/web/www目录下新建文件,此时就会自动同步到其他的两台服务器上面。

3,此时查看,脚本已经开始运行了!!!!!如下图,这就是在同步!!!可以去服务器下的目录去查看!


4. 开启服务节点rsync守护进程
/usr/bin/rsync --daemon  --config=/etc/rsyncd.conf


参考文档:
Linux下Rsync+Inotify-tools实现数据实时同步

rsync+inotify实现实时同步


  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值