当前位置: 首页 > 配置 > 正文

lsyncd+inotify+rsync低延迟同步文件

inotify是linux内核用于通知用户文件系统变化的接口。需要内核版本2.6.13以上才可以支持。
这里是一篇介绍:http://www.ibm.com/developerworks/cn/linux/l-inotifynew/

Lsyncd是一个开源程序,使用C编写,通过调用inotify接口监控指定目录的文件变化情况,来调用rsync做数据传输。
这里是Lsyncd的github主页:https://github.com/axkibe/lsyncd

目前手上有个项目,其实很简单,其他业务向这里写入大量的图片,需要做一个冷备机器,最好实时备份图片,以免坏盘等丢失。
整体结构:主服务器上启动lsyncd,主服务器为文件源,使用inotify通知lsyncd,实现低延迟实时rsync备份数据写入备服务器。备服务器启动rsyncd服务监听,接受主服务器的连接。(日志用系统logrotate轮转)

1.需要lsyncd 2.0.7包,依赖lua包。

lua-5.1.4-1.el5.art.x86_64.rpm
lua-devel-5.1.4-1.el5.art.x86_64.rpm
lua-static-5.1.4-1.el5.art.x86_64.rpm

2.Lsyncd安装和其他程序的普通安装方式相同:

./configure --prefix=/usr/local/lsyncd make && make install

3.写入内核参数,用于大量文件同步,防止文件数目溢出(为防止重启丢失需要,写入rc.local)

echo "5000000000" >/proc/sys/fs/inotify/max_user_watches
echo "10000000" >/proc/sys/fs/inotify/max_queued_events
echo "8192" >/proc/sys/fs/inotify/max_user_instances

4.Lsyncd启动方式:/usr/local/lsyncd/bin/lsyncd /usr/local/lsyncd/conf/xxx.conf

5.Lsyncd某配置:

settings = { 
   logfile    = "/usr/local/lsyncd/log/lsyncd.log", 
   statusFile = "/usr/local/lsyncd/log/lsyncd.status", 
   nodaemon   = false, 
} 
sync{
default.rsync, 
rsyncBinary="/usr/bin/rsync",
source="/var/www",
target="$IP::$rsyncd_name",
rsyncOpts = {"-lcogP", "--log-file=/usr/local/lsyncd/log/rsync.log"}
}

6.rsync端配置:/etc/rsyncd.conf
使用rsync –daemon启动

uid=xxx
gid=xxx
comment= xxx
path=/var/www
ignore errors = true
read only = no
#secrets file=/etc/rsync.pass
#auth users=xxx
timeout = 600
transfer logging = true
log file=/var/log/rsyncd.log
log format="%o [%a] %m %P (%u) %f %l"
lock file=/var/run/rsyncd.lock

如需要密码验证,请把密码文件属主变更为启动rsyncd服务的用户,权限改为600,否则无法正常传输。

7.如果启动正常,在主服务器需要同步的目录内touch个空文件,20秒内,从服务器会同步完成。如果有错误,可以看之前的lsyncd和rsync日志,常见问题就是权限问题之类。请注意配置文件中的用户和同步目录本身权限匹配。

本文固定链接: https://www.cornercat.org/2013/05/lsyncdinotifyrsync%e4%bd%8e%e5%bb%b6%e8%bf%9f%e5%90%8c%e6%ad%a5%e6%96%87%e4%bb%b6/ | 墙角的小猫's Blog

该日志由 cornercat 于2013年05月16日发表在 配置 分类下, 你可以发表评论,并在保留原文地址及作者的情况下引用到你的网站或博客。
原创文章转载请注明: lsyncd+inotify+rsync低延迟同步文件 | 墙角的小猫's Blog
关键字: , ,

lsyncd+inotify+rsync低延迟同步文件:目前有2 条留言

  1. 沙发
    苏幕遮:
    Google Chrome 65.0.3325.181 Google Chrome 65.0.3325.181 Windows 7 x64 Edition Windows 7 x64 Edition

    我有两个服务器A和B,上面都启动了lsync和rsync,现在发现一个问题。

    我1点启动同步任务,进程OK文件都是正常同步的,但是在2点的时候同步进程死掉,这期间文件发生了变化(文件夹里多了好多的新文件)。然后我3点的时候重启了同步任务,此时在A或者B上文件变化都会同步,但是2~3点进程死掉之间的文件变化,却迟迟不见同步,请问怎么办?

    2018-04-23 下午6:52 [回复]
    • cornercat:
      Google Chrome 67.0.3396.10 Google Chrome 67.0.3396.10 Windows 10 x64 Edition Windows 10 x64 Edition

      你可以尝试清除或者修改一下/usr/local/lsyncd/log/lsyncd.status这个文件,这是同步状态文件,应该是记录了同步状态

      2018-04-23 下午9:53 [回复]

发表评论


快捷键:Ctrl+Enter
欢迎光临~
柚子