一. 环境说明

由于web服务器所提供的网站数据需要保持一致,但当服务器越来越多时,这些主机之间同步网站数据会很麻烦。

解决方案是在后端建立一个数据发布服务器,该服务器作为rsync客户端,通过inotify机制实时监控网站数据,当数据发生变化后调用rsync命令上传数据到多个web服务器(也是rsync服务器)

我使用3台机器做的实验

pc1的ip为192.168.0.230,作为web服务器1,也是rsync服务端,需要修改/etc/rsyncd.conf配置文件

pc2的ip为192.168.0.231,作为web服务器2,也是rsync服务端,需要修改/etc/rsyncd.conf配置文件

pc3的ip为192.168.0.240,作为数据发布服务器,是rsync的客户端,不需要配置/etc/rsyncd.conf,但是需要安装inotify

二. 在web服务器上部署rsync服务器

在多台web服务器上部署rsync服务,这些rsync服务需要提供客户端上传功能,以实现客户端主机将数据推送到rsync服务器,这样我们只需要在192.168.0.240主机上修改数据,就可以实时推送数据到两台web服务器

pc1的配置如下

yum -y install rsync   #centos7中默认已安装

mkdir -p /var/www/001    #建立数据同步存放目录

chmod 770 /var/www/001    #修改权限,必须要有读,写,执行权限,否而会失败。

chown nobody.nobody /var/www/001   #修改所属

然后修改配置文件,vim /etc/rsyncd.conf    如下

transfer logging = yes

log file = /var/log/rsyncd.log

pid file = /var/run/rsyncd.pid

lock file = /var/run/rsync.lock

uid = nobody

gid = nobody

use chroot = no

ignore errors

read only = no

[web1]   #设置web1模块

comment = web content

path = /var/www/001 #模块web1的路径

auth users = tom

secrets file = /etc/rsyncd.secrets

host allow = 192.168.0.240

hosts deny=*

list = false

然后设置密码文件,防火墙

echo "tom:123" > /etc/rsyncd.secrets

chmod 600 /etc/rsyncd.secrets

rsync --daemon    #一定记得要开启rsync

echo "rsync --daemon" >> /etc/rc.local

firewall-cmd --permanent --add-port=873/tcp    #rsync默认端口是873,设置防火墙永久允许

firewall-cmd --reload

pc2的配置和pc1一样,为了容易区分,可在pc2上建立同步数据存放目录/var/www/002

三。配置数据发布服务器(192.168.0.240)

1. 安装相应软件

yum -y install rsync

rsync --daemon  #开启rsync

yum -y install automake libtool   #安装编译安装软件所需工具

wget http://downloads.sourceforge.net/project/inotify-tools/inotify-tools/3.13/inotify-tools-3.13.tar.gz        #下载inotify-tool软件包

解压后进入inotify-tools-3.13目录,执行如下安装

./configure      #默认安装路径是/usr/local,如果想改变路径可在后面加参数 --prefix 路径名

make && make install

2. 设置密码文件

echo "123" > /root/rsync.pass   #名字可任意写,123为rsync服务端配置的用户名为tom的密码

chmod 600 /root/rsync.pass

3. 编写监控脚本

vim notify_rsync.sh

#!/bin/bash

export PATH=/bin:/usr/bin:/usr/local/bin

SRC=/web_data/   #设置修改数据的目录

DEST1=web1  #pc1的模块名

DEST2=web2  #pc2的模块名

Client1=192.168.0.230

Client2=192.168.0.231

User=tom

Passfile=/root/rsync.pass

[ ! -e $Passfile ] && exit 2

#wait for change

inotifywait -mrq --timefmt '%y-%m-%d %H:%M' --format '%T %w%f %e' \

--event modify,create,move,delete,attrib $SRC | while read line

do

echo "$line" > /var/log/inotify_web 2>&1

#同步数据到pc1,下面命令其实就是rsync -avz /web_data/ tom@192.168.0.230::web1,然后把输出结果记录在sync_web1中

rsync -avz --delete --progress --password-file=$Passfile $SRC ${User}@$Client1::$DEST1 >> /var/log/sync_web1 2>&1

#同步数据到pc2

rsync -avz --delete --progress --password-file=$Passfile $SRC ${User}@$Client2::$DEST2 >> /var/log/sync_web2 2>&1

done &

然后执行此脚本 sh notify_rsync.sh,之后在/web_data/目录下的操作就可同步到web1和web2的相应同步目录中了

注意,我还禁用了selinux,方法如下

1. 查看SELinux状态:

/usr/sbin/sestatus -v      #如果SELinux status参数为enabled即为开启状态

getenforce                 #也可以用这个命令检查

2. 关闭SELinux:

临时关闭(不用重启机器):

setenforce 0     #设置SELinux 成为permissive模式

setenforce 1     #设置SELinux 成为enforcing模式

3. 修改/etc/selinux/config 文件

将SELINUX=enforcing改为SELINUX=disabled

重启机器即可

centos7中使用Rsync和inotify同步文件的更多相关文章

  1. 使用rsync备份与同步文件

    在数字化时代的今天,随着个人拥有的数据量急剧增加,对其中的重要数据进行备份以保证其安全性.正确性变得越来越重要.同时,由于在公司.实验室.家里.外出等不同环境下往往使用不同的电脑设备(如台式机.笔记本 ...

  2. 通过在shell脚本中用scp或rsync实现远程同步文件

    通过在shell脚本中用expect实现远程scp文件  shell expect的简单用法 http://myunix.blog.51cto.com/191254/1095074 http://ji ...

  3. Centos7 rsync+inotify两台服务器同步文件(单向)

    注:本篇介绍的是单向同步,即A文件同步到B,但B的文件不同步到A,双向同步的在下一篇文章中. rsync与inotify不再赘述,直接进入实战. 0.背景 两台服务器IP地址分别为: 源服务器:192 ...

  4. rsync+inotify实时数据同步

    没有实际的用过,先mark一下,后面实践. https://www.osyunwei.com/archives/7447.html 一.为什么要用Rsync+sersync架构? 1.sersync是 ...

  5. rsync实现文件备份同步(比如服务器镜像)

    [rsync实现网站的备份,文件的同步,不同系统的文件的同步,如果是windows的话,需要windows版本cwrsync] 一.什么是rsync rsync,remote synchronize顾 ...

  6. 用rsync命令删除大文件夹

    删除大文件夹 rsync 命令做同步文件用的命令 我们可以借助其快速的运行 来对大文件夹删除:原来就是 新建一个空文件夹 然后把这个空文件夹同步到一个大文件夹下面: 这样会删除大文件夹下面的内容 是高 ...

  7. CentOS7之Rsync+Inotify架构实现实时同步文件和文件夹

    简介:rsync是用来同步文件和文件夹的,inotify是用来实现监听变动而自动同步的 OS:Centos7.3 服务器端:172.16.13.157 客 户 端  :172.16.13.156 目  ...

  8. Inotify+Rsync实现Linux服务器文件同步

    做这个功能的时候遇到了好多坑,在此感谢一下这篇博客 http://kerry.blog.51cto.com/172631/734087/  ,大家参照这篇博客就能实现该功能. 另外如果想详细了解一下的 ...

  9. CentOS7.5搭建Rsync,实现文件同步

    Rsync(remote sync)是UNIX及类UNIX平台下一款神奇的数据镜像备份软件,它不像FTP或其他文件传输服务那样需要进行全备份,Rsync可以根据数据的变化进行差异备份,从而减少数据流量 ...

随机推荐

  1. Oracle 下基于 DBMS_RESOURCE_MANAGER 包估算数据库存储 IO 性能

    :first-child { margin-top: 0; } blockquote > :last-child { margin-bottom: 0; } img { border: 0; m ...

  2. $(window).load()和$(document).ready()

    一.前言 我们在编写前端代码的js文件时,往往是会先写一个$(function(){}),然后才会在大括号里面继续写我们自己的代码.当时并不能理解为什么要添加这样一个东西,只是把它当做一个标签一样添加 ...

  3. unity自带寻路Navmesh入门教程

    http://liweizhaolili.blog.163.com/blog/static/16230744201271161310135/ http://liweizhaolili.blog.163 ...

  4. svn: Can't connect to host

    关于“svn: Can't connect to host '*.*.*.*': 由于连接方在一段时间后没有正确答复或连接”的解决方法   阿里云服务器环境(PHP+Nginx+MySQL) [原因1 ...

  5. 如何在MyEclipse中使用Maven

    https://jingyan.baidu.com/article/fd8044facb9bc85031137a91.html?qq-pf-to=pcqq.group Maven不仅是一个构建工具,还 ...

  6. 13-Oulipo(kmp裸题)

    http://acm.hdu.edu.cn/showproblem.php?pid=1686 Oulipo Time Limit: 3000/1000 MS (Java/Others)    Memo ...

  7. LoadRunner11学习记录四 -- 集合点

    LoadRunner集合点的设置: 我们来想象一个场景,10名运动员参加长跑比赛,出发点同时起跑,他们是并排奔跑的:跑了N圈之后,因为有体能更强的,有体能稍弱的,他们的队形并排变成了前后.几乎一个跑道 ...

  8. EZOJ #258

    传送门 分析 我们考虑一个点有多少中情况可以被删除 我们发现只有删除它自己和删祖先共$dep_i$中 所以每个点的答案就是$\frac{1}{dep_i}$ 代码 #include<iostre ...

  9. Spring.net init-method destroy-method

    <object id="exampleInitObject" type="Examples.ExampleObject" init-method=&quo ...

  10. 两个线程并发执行以下代码,假设a是全局变量,那么以下输出______是不可能的?

    3.两个线程并发执行以下代码,假设a是全局变量,那么以下输出______是不可能的? void foo(){    ++a;    printf("%d ",a);}A.3 2   ...