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,如需转载请自行联系原作者