天天看點

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,如需轉載請自行聯系原作者

繼續閱讀