天天看点

Lsyncd 实时同步Inotify Watches Limit

               Lsyncd+ssh

1、描述

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

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

2、开源软件

    依赖lua环境:

1

2

3

4

5

6

7

8

9

<code>#wget https://lsyncd.googlecode.com/files/lsyncd-2.1.5.tar.gz</code>

<code>#yum install lua lua-static lua-devel</code>

<code>#tar -xzvf lsyncd-2.1.5.tar.gz</code>

<code>#cd lsyncd-2.1.5</code>

<code>#./configure</code>

<code>#make</code>

<code>#make install</code>

<code>#whereis lsyncd</code>

<code>lsyncd: </code><code>/usr/local/bin/lsyncd</code>

    创建配置文件目录:

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

<code>#mkdir /etc/lsyncd</code>

<code>#cd /etc/lsyncd</code>

<code>#vim lsyncd.lua    --注意:lua语法的规则</code>

<code>--文件配置语法</code>

<code>settings{</code>

<code>    </code><code>logfile = </code><code>"/var/log/lsyncd.log"</code><code>,     --日志路径</code>

<code>    </code><code>statusFile = </code><code>"/var/log/lsyncd-status.log"</code><code>, --状态文件</code>

<code>    </code><code>pidfile = </code><code>"/var/run/lsyncd.pid"</code><code>, --pid文件路径</code>

<code>    </code><code>statusInterval = 1,  --状态文件写入最短时间</code>

<code>    </code><code>nodaemon = </code><code>false</code><code>,    --daemon运行</code>

<code>    </code><code>maxProcesses = 4,    --最大进程</code>

<code>    </code><code>maxDelays = 1        --最大延迟</code>

<code>}</code>

<code>--多host同步</code>

<code>servers = {</code>

<code>    </code><code>"192.168.0.10"</code><code>,</code>

<code>    </code><code>"192.168.0.20"</code>

<code>--同步规则</code>

<code>for</code> <code>_, server </code><code>in</code> <code>ipairs(servers) </code><code>do</code>    <code>--迭代servers</code>

<code>    </code><code>sync</code><code>{</code>

<code>            </code> 

<code>            </code><code>default.rsyncssh,      --默认</code><code>rsync</code><code>+</code><code>ssh</code><code>,</code><code>rsync</code><code>版本需要升级3以上版本</code>

<code>        </code><code>source</code> <code>= </code><code>"/test1"</code><code>,     --源目录</code>

<code>        </code><code>delete = </code><code>true</code><code>,          </code>

<code>        </code><code>host = server,         </code>

<code>        </code><code>targetdir = </code><code>"/test1"</code><code>,  --目标目录</code>

<code>        </code><code>exclude={                 </code>

<code>            </code><code>".txt"</code>             <code>--排除</code>

<code>        </code><code>},</code>

<code>        </code><code>rsync</code> <code>= {</code>

<code>            </code><code>binary = </code><code>"/usr/bin/rsync"</code><code>,</code>

<code>            </code><code>archive = </code><code>true</code><code>,    --归档</code>

<code>            </code><code>compress = </code><code>false</code><code>,  --压缩</code>

<code>            </code><code>owner = </code><code>true</code><code>,      --属主</code>

<code>            </code><code>perms = </code><code>true</code><code>,      --权限</code>

<code>            </code><code>whole_file = </code><code>false</code>

<code>        </code><code>ssh</code> <code>= {</code>

<code>            </code><code>port = 22</code>

<code>        </code><code>}</code>

<code>    </code><code>}</code>

<code>end</code>

注意:服务器之间需要配置ssh 无密码登录

    启动lsyncd服务:

<code>#lsyncd /etc/lsyncd/lsyncd.lua</code>

<code>#ps -ef | grep lsyncd</code>

<code>lsyncd    lsyncd.lua</code>

     本人线上环境同步文件使用rsync+crontab方式同步,由于同步文件复杂,所以crontab文件相当冗余复杂,经过整改,整个配置一个lua文件搞定,而且同步模式基本能达到实时同步,想实现更复杂的朋友,需要研究lua语法。如果有什么建议,请各位朋友不吝赐教。

To change the limit, run:

To make the change permanent, edit the file /etc/sysctl.conf and add this line to the end of the file:

本文转自 Art_Hero 51CTO博客,原文链接:http://blog.51cto.com/curran/1416620,如需转载请自行联系原作者

继续阅读