一. 环境说明

由于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. Python基础:函数的介绍及应用

    # 函数的定义 def firstFun(): print("----------------------") print("剑来") print(" ...

  2. android用户登录验证

    转自https://www.cnblogs.com/android-blogs/p/5912585.html

  3. CENTOS 配置好SVN服务环境后,其他服务器无法访问 Error: Can't connect to host '192.168.1.103': 由于连接方在一段时间后没有正确答复或连接的主机没有反应,连接尝试失败。

    CENTOS 配置好SVN服务环境后,其他服务器无法访问   根据 下面的步骤配置好服务后,使用本机可以正常 连接到 SVN 服务, 但是使用局域网的其他服务器访问时出现下面的错误, Error: C ...

  4. HowTo: Xen 4.1.3 Windows 8 HVM domU with Intel HD4000 VGA Passthrough on Debian Wheezy

    http://linux-bsd-sharing.blogspot.com/2012/10/howto-xen-413-windows-8-hvm-domu-with.html Update 05/0 ...

  5. oracle 中时间类型 date 与 long 互转

    我们在保存时间到数据库时,有时候会保存long型的数据,固定长度是13位,是用当前时间减去1970-01-01,再换算成毫秒得到的结果. 但是要考虑到时区问题中国的时区时+8区所以时间要加上8小时 o ...

  6. [C++] 2D Array's memory allocation

    2D Array's memory allocation

  7. xgboost 里边的gain freq, cover

    assuming that you're using xgboost to fit boosted trees for binary classification. The importance ma ...

  8. 在Linux下配置.net网站

    一.Linux安装 1.1 Linux环境 本篇文章选择VMWare虚拟机安装Linux,使用的Linux是CentOS-7.可以在百度上自行下载一个VMWare和CentOS-7镜像,建议使用最新版 ...

  9. JDBC 连接 MySQL 时碰到的小坑

    最近从MS SQL Server换到了MySQL,已经是8.11版本了,安装的时候似乎还用了新的身份认证方式之类的,连接过程中也是磕磕绊绊,碰到很多奇奇怪怪的问题,在此记录下来. 驱动加载: 以前使用 ...

  10. [GO]文件的收发服务器

    发送方 package main import ( "fmt" "os" "net" "io" ) //发送文件内容 f ...