centos7中使用rsync和inotify同步文件(代码)

  • A+
所属分类:Centos

最近公司项目要部署负载均衡,负载均衡后,由于代码分布在不同的服务器上,一台一台服务器部署是不现实的。经过调研下,采用centos 的 rsync 传输文件和 inotify 监测目录下文件的变动。

一、环境准备

建立一台服务器作为代码发布服务器,该服务器作为rsync服务端,通过inotify监测网站代码文件,文件发生变化后,通过rsync同步到多个web服务器。

准备三台服务器如下:

rsync服务端: 192.168.189.5 作为rsync客户端,需要安装rsync和 inotify

web服务器1: 192.168.189.6 作为rsync服务端,需要配置rsync

web服务器2: 192.168.189.7 作为rsync服务端,需要配置rsync

二、在服务端(192.168.189.6)上配置rsync

①.  安装rsync

yum -y install rsync

②建立数据同步目录

mkdir -p /data/www/

③修改目录权限为777

chmod 777 /data/www/

④修改配置文件 vim /etc/rsyncd.conf

fake super = yes
transfer logging = yes

log file = /var/log/rsyncd.log

pid file = /var/run/rsyncd.pid

lock file = /var/run/rsync.lock

uid = root

gid = root

use chroot = no

ignore errors

read only = no

[web1]
comment = web content
path = /data/www
auth users = backup
secrets file = /etc/rsyncd.secrets
hosts allow = 192.168.189.5
hosts deny = *
list =false

⑤设置密码文件

echo "backup:backup" > /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

192.168.189.6 和 192.168.189.7 的配置相同, 将web1 改成web2即可。

三、配置数据发布服务器(192.168.189.5)

①安装rsync并开启服务

yum -y install rsync

rsync --daemon  #开启rsync

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

②安装inotify-tool

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

设置密码文件

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

④编写监控脚本

#!/bin/bash

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

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

DEST1=web1  #pc1的模块名

DEST2=web2  #pc2的模块名

Client1=192.168.189.6

Client2=192.168.189.7

User=backup

Passfile=/root/rsync/rsync.pass

[ ! -e $Passfile ] && exit 2

#wait for change

inotifywait -mrq --timefmt '%y-%m-%d %H:%M' --format '%T %w%f %e' -e modify,create,move,delete,attrib $SRC | while read file

do

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

#同步数据到pc1,下面命令其实就是rsync -avz /web_data/ backup@192.168.189.6::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 &

avatar

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: