Lsyncd+ssh
1、描述
开源lsyncd采用inotify原理监听某一个目录,如果目录内发生变化,利用rsync协议自动同步多服务器,因此lsyncd是一个轻量级的实时镜像解决方案。
细粒度的定制可以通过配置文件来实现,配置文件可以编写lua代码,这种方式简单,功能强大和灵活的配置。
2、开源软件
依赖lua环境:
#wget https://lsyncd.googlecode.com/files/lsyncd-2.1.5.tar.gz #yum install lua lua-static lua-devel #tar -xzvf lsyncd-2.1.5.tar.gz #cd lsyncd-2.1.5 #./configure #make #make install #whereis lsyncd lsyncd: /usr/local/bin/lsyncd
创建配置文件目录:
#mkdir /etc/lsyncd #cd /etc/lsyncd #vim lsyncd.lua --注意:lua语法的规则 --文件配置语法 settings{ logfile = "/var/log/lsyncd.log", --日志路径 statusFile = "/var/log/lsyncd-status.log", --状态文件 pidfile = "/var/run/lsyncd.pid", --pid文件路径 statusInterval = 1, --状态文件写入最短时间 nodaemon = false, --daemon运行 maxProcesses = 4, --最大进程 maxDelays = 1 --最大延迟 } --多host同步 servers = { "192.168.0.10", "192.168.0.20" } --同步规则 for _, server in ipairs(servers) do --迭代servers sync{ default.rsyncssh, --默认rsync+ssh,rsync版本需要升级3以上版本 source = "/test1", --源目录 delete = true, host = server, targetdir = "/test1", --目标目录 exclude={ ".txt" --排除 }, rsync = { binary = "/usr/bin/rsync", archive = true, --归档 compress = false, --压缩 owner = true, --属主 perms = true, --权限 whole_file = false }, ssh = { port = 22 } } end
注意:服务器之间需要配置ssh 无密码登录
启动lsyncd服务:
#lsyncd /etc/lsyncd/lsyncd.lua #ps -ef | grep lsyncd lsyncd lsyncd.lua
本人线上环境同步文件使用rsync+crontab方式同步,由于同步文件复杂,所以crontab文件相当冗余复杂,经过整改,整个配置一个lua文件搞定,而且同步模式基本能达到实时同步,想实现更复杂的朋友,需要研究lua语法。如果有什么建议,请各位朋友不吝赐教。
Inotify Watches Limit
To change the limit, run:
# echo 16384 > /proc/sys/fs/inotify/max_user_watches
To make the change permanent, edit the file /etc/sysctl.conf and add this line to the end of the file:
fs.inotify.max_user_watches=16384
转载于:https://blog.51cto.com/curran/1416620