Lsyncd 实时同步

简介:

               Lsyncd+ssh

1、描述

    开源lsyncd采用inotify原理监听某一个目录,如果目录内发生变化,利用rsync协议自动同步多服务器,因此lsyncd是一个轻量级的实时镜像解决方案。

    细粒度的定制可以通过配置文件来实现,配置文件可以编写lua代码,这种方式简单,功能强大和灵活的配置。

2、开源软件

    依赖lua环境:

1
2
3
4
5
6
7
8
9
#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

    创建配置文件目录:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
#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服务:

1
2
3
#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









本文转自 Art_Hero 51CTO博客,原文链接:http://blog.51cto.com/curran/1416620,如需转载请自行联系原作者
目录
相关文章
|
4月前
|
监控 Unix Shell
Rsync+Inotify 实现数据同步
【8月更文挑战第25天】Rsync是一款适用于UNIX和类UNIX系统的高效数据备份工具,支持本地与远程数据复制。通过识别数据变更实现增量备份,减少网络传输量,提升效率。利用SSH加密保障数据安全,服务器负责定义源数据,客户端按需同步,确保双端一致性,常用端口为TCP-873。
63 3
|
安全 Unix Linux
【Linux网络服务】Rsync数据同步
【Linux网络服务】Rsync数据同步
|
监控 Linux
配置inotify + rsync 实现实时同步
配置inotify + rsync 实现实时同步
277 0
配置inotify + rsync 实现实时同步
|
存储 监控 安全
|
监控 Linux 网络安全
|
存储
实时同步lsyncd
实时同步lsyncd实时同步lsyncd 1 lsyncd 1.1 lsyncd 简介Lsyncd使用文件系统事件接口(inotify或fsevents)来监视对本地文件和目录的更改。Lsyncd将这些事件整理几秒钟,然后生成一个或多个进程以将更改同步到远程文件系统。
1146 0
|
存储 监控 Shell
实时同步sersync
实时同步sersync1 实时同步 1.1 实时同步原理存储服务器数据实时同步到备份服务器 1.2 什么是实时同步实时同步是一种只要当前目录触发事件,就马上同步到远程的目录。 1.3 为什么要实时同步保证数据的连续性减少人力成本 1.4 实时工具的选择inotify+rsyncsersync+rsynclsyncdInotify是一个通知接口,用来监控文件系统的各种变化,如果文件存取,删除,移动。
1270 0
|
监控 数据安全/隐私保护 Linux
rsync+Inotifywait实现文件实时同步
rsync+Inotifywait实现实时同步 背景: 某客户想实现实现异地灾备,想达到的是A机房出现断电的时候。数据能实时的将数据同步到B上,并且域名切换到B之后能提供业务 。使用rsync+inotify做web数据和ftp(ftp主要是用户上传的图片文件)的数据实时同步. 一:软件介绍: rsyncrsync是一个开源的快速备份工具,可以再不同主机之间镜像同步整个目录树,支持增量备份,保持链接和权限,且采用优化的同步算法,再传输前执行压缩,因此非常适用于异地备份、镜像服务器等应用。
2210 0
|
XML 监控 数据格式