Rsync + Intofy 数据实时同步方案

Rsync + Intofy 数据实时同步方案

  • 一、Rsync
    • 1.1 Rsync特性
    • 1.2 部署Rsync下行同步
      • 1.2.1 Master节点
        • 安装配置
        • 开启服务
      • 1.2.2 Slave节点
    • 1.3 报错排查
      • @ERROR: auth failed on module wwwroot
  • 二、Intofy
    • 2.1 Intofy的使用方法
    • 2.2 部署 Rsync+Inotify 实时同步
      • 2.2.1 Master
      • 2.2.2 Slave
        • 优化Slave内核参数
        • 安装Intofy-tools
        • 编写自动监控同步脚本

一、Rsync

Rsync是一种快速且用途广泛的文件复制工具,常用于备份和镜像
官方网站:https://rsync.samba.org/
使用delta-transfer算法 监听端口 873 运行模式 C/S

1.1 Rsync特性

  1. 可以镜像保存整个目录树和文件系统
  2. 可以很容易做到保持原来文件的权限、时间、软硬链接等等
  3. 无须特殊权限即可安装
  4. 优化的流程,文件传输效率高
  5. 可以使用rcpssh等方式来传输文件,当然也可以通过直接的socket连接
  6. 支持匿名传输

1.2 部署Rsync下行同步

节点名 IP地址
master 192.168.0.10
slave 192.168.0.20

1.2.1 Master节点

安装配置

systemctl stop firewalld
systemctl disable firewalld
setenforce 0

yum -y install rsync

vim /etc/rsyncd.conf

uid = root
gid = root
use chroot = yes
address = 192.168.0.10
port 873
log file = /var/log/rsyncd.log
pid file = /var/run/rsyncd.pid
hosts allow = 192.168.0.0/24
[wwwroot]        
path = /var/www/html
comment = Document Root of www.example.com
read only = yes
dont comperss = *.gz *.bz2 *.tgz *.zip *.rar *.z
auth users = fox
secrets file = /etc/rsyncd_users.db

#创建用户文件格式[用户名:密码]
echo "fox:123456" > /etc/rsyncd_users.db

#设置其权限600[官方推荐值]
chmod 600 /etc/rsyncd_users.db

开启服务

#开启服务
rsync --daemon

#检查端口服务是否开启
netstat -natp | grep "rsync"

mkdir -p /var/www/html
cd /var/www/html
touch dog.html cat.html
ls

1.2.2 Slave节点

systemctl stop firewalld
systemctl disable firewalld
setenforce 0

yum install -y rsync

mkdir /slave
chmod 777 /slave

#配置绵密交互
echo "123456" > /etc/server.pass

#给密钥文件赋权600
chmod 600 /etc/server.pass

rsync -az --delete --password-file=/etc/server.pass [email protected]::wwwroot /slave
#rsync,使用密钥文件/etc/server/pass对应fox用户,IP地址为192.168.0.10的共享模块文件进行压缩,并归档同步至当前服务器的/slave目录下,同时删除差异内容,保持一致性

ls /slave
#查看下行同步是否成功

1.3 报错排查

@ERROR: auth failed on module wwwroot


检查用户名密码是否与Master配置文件中的相符

二、Intofy

Inotify是Linux内核特性,用于监控文件系统,并且及时向专门的应用程序发出相关的事件警告,比如读写删等操作

2.1 Intofy的使用方法

inotifywait -mrq -e modify,create,move,delete /slave

常用参数

  • -m:持续进行监控
  • -r:递归监控所有子对象
  • -q:简化输出信息
  • -e:指定要监控哪些事件类型
  • modify:修改
  • create:创建
  • move:移动
  • delete:删除

内核优化
/etc/sysctl.conf(内核参数配置文件)

max_queue_events		#监控事件队列大小
max_user_instances  	#最多监控实例数
max_user_watches    	#每个实例最多监控文件数  

2.2 部署 Rsync+Inotify 实时同步

2.2.1 Master

vim /etc/rsyncd.conf
read only = no
#关闭只读模式,否则将不可写入

#通过杀死进程的方法重启rsync
kill `cat /var/run/rsyncd.pid`

netstat -natp | grep rsync

rsync --daemon
netstat -natp | grep rsync

chmod 777 /var/www/html

2.2.2 Slave

优化Slave内核参数

echo "fs.inotify.max_queued_events = 32768
fs.inotify.max_user_instances = 1024
fs.inotify.max_user_watches = 1048576" >> /etc/sysctl.conf

安装Intofy-tools

wget -P /opt https://nchc.dl.sourceforge.net/project/inotify-tools/inotify-tools/3.13/inotify-tools-3.13.tar.gz
cd /opt
#将软件包传至该目录下
tar -zxvf inotify-tools-3.13.tar.gz

cd /opt/inotify-tools-3.13/
./configure
make -j 4 && make install

编写自动监控同步脚本

vim /opt/inotify.sh

#!/bin/bash
INOTIFY_CMD="inotifywait -mrq -e create,delete,move,modify,attrib /slave"
#INOTIFY_CMD变量:持续监控 /slave 目录中的创建,删除,移动,修改,改变时间的操作
RSYNC_CMD="rsync -azH --delete --password-file=/etc/server.pass /salve [email protected]::wwwroot"
#RSYNC_CMD变量:使 fox 用户,/etc/server.pass 密钥文件,将 /slave 目录下的文件进行压缩,归档,保留硬链接文件同步至 192.168.0.10 的共享模块定义的目录 /var/www/html 下,并删除差异性内容,保持一致性

#检测目录是否有修改操作
$INOTIFY_CMD | while read DIRECTORY EVENT FILE
do
	#判断是否有正在进行的rsync任务,如果没有则执行
    if [ $(pgrep rsync | wc -l) -le 0 ] ; then
        $RSYNC_CMD
	fi
done

赋予权限并后台运行

cd /opt/
chmod +x inotify.sh
./inotify.sh
#给脚本赋权并在后台执行

创建一个新的文件并删除一个已有的文件

cd /slave

touch fox.html
rm -rf dog.html

ls


Rsync + Intofy 数据实时同步方案_第1张图片

你可能感兴趣的:(运维,经验分享,网络,rsync,inotify,服务器,运维,linux)