实时同步服务(inotify+sersync)

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了实时同步服务(inotify+sersync)相关的知识,希望对你有一定的参考价值。

【inotify】

一.Inotify概念

1.概念
一种强大的,细粒度的,异步文件系统事件监控机制,内核从2.6.23开始支持使用,具体监控事项(增删改)
2.安装软件
yum -y install inotify-tools (前提是部署好epel源)
3.inotify软件应用软件前提
linux内核从2.6.13起开始使用,加入inotify支持
[[email protected] ~]#cd /proc/sys/fs/inotify/
[[email protected] /proc/sys/fs/inotify]#ls
max_queued_events 队列容纳事件:16384
max_user_instances 默认进程数:128
max_user_watches 默认监控量:8192
max_user_watches: 设置inotifywait或inotifywatch命令可以监视的文件数量(单进程)
max_user_instances: 设置每个用户可以运行的inotifywait或inotifywatch命令的进程数
max_queued_events: 设置inotify实例事件(event)队列可容纳的事件数量
4.inotify软件命令
/usr/bin/inotifywait 开启实时监控服务(监控文件/目录数据变化)
/usr/bin/inotifywatch 统计事件变化次数
5./usr/bin/inotifywait 命令参数说明
-m (--monitor) 实时监控
-r 表示递归
-q (--quiet) 安静的输出信息,不提示,或输出重要信息
--mtime 指定时间输出格式
--format 指定输出格式
-e 指定监控事件参数
man strftime 可查看相关参数
6.监控重要的事件
(1)close_write事件
(2)move_to(移入)/move_from(移走)
(3)delete
(4)create
7.inotify 命令监控事件操作命令
(1)指定查看事件时间及显示格式 --timefmt --format
[[email protected] /]#inotifywait -mrq --timefmt "%d-%m-%y %H:%M" --format "%T %w%f" /oldgirl/
优化二:
[[email protected] /]#inotifywait -mrq --timefmt "%F %H:%M" --format "%T %w%f 事件:%e" /oldgirl/
(2)指定显示查看事件 %e
[[email protected] /]#inotifywait -mrq --timefmt "%d-%m-%y %H:%M" --format "%T %w%f 事件:%e" /oldgirl/
(3)指定查看的事件 -e
[[email protected] /]#inotifywait -mrq --timefmt "%d-%m-%y %H:%M" --format "%T %w%f 事件:%e" -e create /oldgirl/

技术分享图片

二.部署过程

1.划分存储与备份服务器
2.在nfs存储器上部署inotify监控服务器,监控相应文件或目录数据信息变化
3.将监控的文件/目录中变化信息进行推送,实现实时备份到rsync服务器

三.部署原理

1.rsync守护进程模式要部署完成
2.inotify实时监控数据变化服务部署
[[email protected] ~]#yum -y install inotify-tools 安装inotify软件
[[email protected] ~]#cd /proc/sys/fs/inotify/ 查看inotfi的相关配置文件
[[email protected] /]#inotifywait -mrq /oldgirl/ 开启实时监控
3.利用脚本方式,将以上服务串联在一起
/server/scripts/inotify.sh 编写脚本如下
#!/bin/bash
inotifywait -mrq --format “%w%f” -e create,delete,close_wrte,moved_to /data | \
while read line
do
rsync -avz /data/ [email protected]::backup --password-file=/etc/rsync.password
done

四.inotify 优化(/proc/sys/fs/inotify/)

  1. max_user_watches 优化
    echo “50000000” >/proc/sys/fs/inotify/max_user_watches
  2. max_queued_events优化
    echo “50000000” >/proc/sys/fs/inotify/max_queued_events
    注意:以上配置重启可能会失效,需要放置在rc.local文件中

五.inotify 优点/缺点

1.inotify 优点
监控文件系统事件变化,通过nfs共享同步工具实现数据同步
2.inotify 缺点
(1)并发如果>200个文件(4-100k),同步会有延迟
(2)脚本推送同步服务的过程中,是增量传输的,影响传输效率
(3)监控到事件时,rsync同步是单线程的,sersync是多线程同步的
(4)inotify实现同步需要编写shell脚本,来实现实时同步

【sersync】

一.sersync 介绍

1.sersync 功能
(1)支持配置文件管理
(2)真正的守护进程是socket
(3)可以对失败文件定时重传(定时任务功能实现)
(4)第三方的http接口
(5)默认多线程同步
2.sersync 部署
(1)部署好rsync守护进程服务
(2)下载sersync服务
官方地址:https://github.com/wsgzao/sersync
解压缩软件程序包:unzip sersync_installdir_64bit.zip
将软件程序目录移动到指定目录中:mv sersync/ /usr/local/
编写sersync配置文件(/usr/local/sersync/conf)

技术分享图片
注释说明:实时同步的排除功能,排除特殊文件

技术分享图片
注释说明:指定监控文件或目录变化的事件信息

技术分享图片
注释说明:配置文件主修改参数

(3)启动sersync服务
1.授予sersync执行权
cd sersync/sbin sbin目录下授权执行权
chmod +x sersync --- 授予sersync命令拥有执行权限
2.执行命令
./sersync?-dro?/usr/local/sersync/conf/confxml.xml
[[email protected] data]# ps -ef|grep sersync 查看服务启动情况
参数:
参数-d:启用守护进程模式
参数-r:在监控前,将监控目录与远程主机用rsync命令推送一遍
参数-n: 指定开启守护线程的数量,默认为10个
参数-o:指定配置文件,默认使用confxml.xml文件
参数-m:单独启用其他模块,使用 -m refreshCDN 开启刷新CDN模块
参数-m:单独启用其他模块,使用 -m socket 开启socket模块
参数-m:单独启用其他模块,使用 -m http 开启http模块
不加-m参数,则默认执行同步程序
3.sersync 总结
互联网常见数据同步方法总结:

  1. inotify(sersync)+rsync 是文件级别的。
  2. drbd数据同步软件,基于block块同步
  3. 第三方软件的同步功能:mysql同步(主从复制),oracle,mongodb
  4. 程序双写,直接写两台服务器

以上是关于实时同步服务(inotify+sersync)的主要内容,如果未能解决你的问题,请参考以下文章

sersync基于rsync+inotify实现数据实时同步

Linux三阶段之四:实时同步(inotify+rsync,sersync+rsync)

实时同步sersync

[转帖]sersync基于rsync+inotify实现数据实时同步

三sersync+rsync实现服务器文件实时同步

sersync实时同步