lsyncd在SUSE 11SP3下部署记录

0.介绍

Lsyncd实际上是lua语言封装了inotify和rsync工具,采用了Linux内核(2.6.13及以后)里的inotify触发机制,然后通过rsync去差异同步,达到实时的效果。特别适合大批量文件级别的实时同步,且不需要对底层做任何修改,目前在redhat linux 6.5的生产环境上已经使用了大半年了,非常稳定。

这次在生产录音文件服务器上部署,主要是为了同步录音文件到异地备份服务器上。

1.环境说明

SUSE Linux Enterprise Server 11 SP3

2.部署lsyncd命令

1)从当前redhat linux 6的生产环境下拷贝lsyncd、liblua-5.1.so文件下来(因为在这个版本的SUSE上从0开始配置非常麻烦,耗时不说,还不一定成功,经过多次尝试都不行之后,忽然想到能否直接拷贝现成的过来,因为内核版本相近,理论上是没问题的!)

$ (which lsyncd) .
/usr/lib64/liblua-5.1.so

2)将以上文件放到原位置并测试,只要不报错,基本上就没问题

$ ./lsyncd -version
Version: 2.1.5

3) 可执行文件和so文件

链接:https://share.weiyun.com/hCPSWH1a 密码:zazwq2

3.同步配置

1)服务端rsyncd配置

$ cat /etc/rsyncd.conf
uid = bkadmin
gid = bkadmin
address = 10.1.1.1
port = 873
log file = /var/log/rsyncd.log
pidfile = /var/run/rsyncd.pid
lock file = /var/run/rsync.lock
secrets file = /etc/rsync.pass 
motd file = /etc/rsyncd.Motd

[server_bak]
path = /backup_2/server_bak
auth users = bkadmin
read only = no

$ cat /etc/rsync.pass 
bkadmin:123456

#必须设置权限为600
$ chmod 600 /etc/rsync.pass  
#重启xinetd服务
$ /etc/init.d/xinetd restart

2)本机创建lsyncd配置

$ echo '123456' > /etc/rsync.pass
#必须设置权限为600
$ chmod 600 /etc/rsync.pass  
$ cat /etc/lsyncd.conf
settings {
    -- 传输日志文件
    logfile ="/var/log/lsyncd_zz.log",
    statusFile ="/var/run/lsyncd.status",
    inotifyMode = "CloseWrite or Modify",
    maxProcesses = 1,
    init=false,
    nodaemon=false
}

-- 同步至异地备份服务器
sync {
    default.rsync,
    source    = "/share/", -- 需要同步的目录
    target    = "[email protected]::server_bak",
    delete="running",
    -- exclude = { ".*", ".tmp" },
    -- delay = 30, -- 传输密度,30s传输一次
    delay = 60,
    rsync = {
        binary = "/usr/bin/rsync",
        archive = true,
        compress = true,
        verbose   = true,
        password_file = "/etc/rsync.pass", 
        _extra    = {"--bwlimit=256"} -- 限制传输带宽
        }
}

3) 启动

#前台启动,检查服务是否正常传输文件
$ lsyncd -nodaemon  /etc/lsyncd_zz.conf
#后台启动
$ lsyncd  /etc/lsyncd_zz.conf

image-20210324132342698

4.问题

​ 当需要同步的数据量上百G时,进程起来一会后,自动停了。查看日志:因为同步的数据量较大,需要lsyncd监测的inode数量超过了自身默认的最大监控数量,所以报错

扫描二维码关注公众号,回复: 12897719 查看本文章
$ tail -f /var/log/lsyncd/lsyncd.log
遇到:Error: Terminating since out of inotify watches.
Consider increasing /proc/sys/fs/inotify/max_user_watches

解决办法:
echo 65535000 > /proc/sys/fs/inotify/max_user_watches
这个值改成多少需要根据源目录所在分区的的inode多少来定(使用df -i查看该分区总的inode数量)

$ sysctl -p

最后重启 lsyncd进程

猜你喜欢

转载自blog.51cto.com/4073279/2670516
今日推荐