lsyncd+rsync 实现实时自动同步

鉴客 发布于 2013/12/16 00:07
阅读 7K+
收藏 32

本示例所需要的软件是:lsyncd与rsync

一般rsync软件是通过crond这支后台进行(计划任务)来实现自动同步数据,如今已有更好的开源软件来代替使用crond了,那就是 lsyncd( Live Syncing (Mirror) Daemon),它的工作原理:监视本地(rsync client)的目录,当源数据有文件或目录更新时,更新本地文件或目录到远端机器(rsync server),保持实时文件同步,但是它更新数据时需要远端rsync server运行rsync demon
一、配置环境如下

系统版本CentOS5.8

服务端:rsync(接收同步资源服务器)

客户端:lsyncd+rsync(发送资源服务器)

(1)需要配置rsyncd.conf文件的一端,称为rsync server

(2)不需要配置rsyncd.conf文件的一端,称为rsync client

clip_image002

二、服务器端安装

1. 安装rsync

2. yum install rsync

默认情况下rsync已安装检查安装

rpm –qa|grep rsync

检查rsync 运行状态

chkconfig –list rsync

rsync off (默认为开启)

在xinetd配置中打开rsync服务

[root@node2 ~]# vi /etc/xinetd.d/rsync

disable = no ## 默认yes 改成 no

再次检查rsync状态

chkconfig –list rsync

rsync on(已开启服务)

3. 确认xinetd服务开启

[root@node2 ~]# chkconfig --level 345 xinetd on

启动xinetd
[root@node2 ~]# service xinetd start
Starting xinetd: [ OK ]

4、配置rsyncd

[root@node2 ~]# vi /etc/rsyncd.conf

log file = /var/log/rsyncd.log
pid file = /var/run/rsyncd.pid
lock file = /var/run/rsync.lock
[wwwroot]
path = /www/html
hosts allow = 172.16.23.171
uid = root
gid = root
read only = false
5、重启服务

service xinetd restart

确认873端口监听
[root@node2 ~]# netstat -anp | grep 873
tcp 0 0 0.0.0.0:873 0.0.0.0:* LISTEN 3169/xinetd
6、建立资源同步目录
mkdir /www

mkdir /www/html

chmod 777 –R www

三、客户端安装(node1上的配置)
1、安装rsync

yum install rsync

2、安装lsyncd:

需要lua支持。

安装套件rpmforge-release提供更多yum源。

wget http://pkgs.repoforge.org/rpmforge-release/rpmforge-release-0.5.2-2.el5.rf.x86_64.rpm

rpm -ivh rpmforge-release-0.5.2-2.el5.rf.x86_64.rpm

yum install lua

yum install lsyncd
3、建立配置文件lsyncd.conf
[root@node1~]# vi /etc/lsyncd.conf
settings = {
logfile = "/var/log/lsyncd.log",
statusFile = "/tmp/lsyncd.stat",
statusInterval =1,
}
sync{
default.rsync,
source="/www/html/",
target="172.16.23.173::wwwroot",

init=false,
rsyncOps={"-avz","--delete"}
}

说明:/www/html #要实时同步的目录
172.16.23.173/175/172 #要实时同步到的远端机器即接收服务器地址。
wwwroot #对应远端机器的rsync的tag(下边node2配置中设定)
如果要同步多台就在这个文件中每同步一台加一项如下:

sync{

default.rsync,

source="/www/html/",

target="172.16.23.172::wwwroot",

init=galse,

rsyncOps={"-avz","--delete"}

}

sync{

default.rsync,

source="/www/html/",

target="172.16.23.175::wwwroot",

init=galse,

rsyncOps={"-avz","--delete"}

}

4、建立资源同步目录
mkdir /www

mkdir /www/html

chmod 777 –R www

5、建立lsyncd日志文件轮转

[root@node1~]# vi /etc/logrotate.d/lsyncd

/var/log/lsyncd {
missingok
notifempty
sharedscripts
postrotate
/etc/rc.d/init.d/lsyncd restart 2>&1 > /dev/null || true
endscript
}

说明:它的日志保存的文件为/var/log/lsyncd

6、启动lsyncd
[root@node1~]# /etc/init.d/lsyncd start 或service lsyncd start

确认lsyncd是否启动

[root@node1~]# /etc/rc.d/init.d/lsyncd status 或service lsyncd status

lsyncd (pid 21125) is running...

把lsyncd加入到随机器启动当中

[root@node1~]# chkconfig lsyncd on

文章出处:http://250688049.blog.51cto.com/643101/1019663

加载中
0
linclin
linclin
inotify和lsyncd有啥区别
0
qycms_cn
qycms_cn
我比熟悉notify
0
张不凡
张不凡
可靠吗 这个东西?会不会出现同步失败?
0
宏哥
宏哥

这个东西对宏哥来说, 还是挺有用的

0
jackjc
jackjc
这个不错
0
mark35
mark35


chkconfig –list rsync
应该是两个横杠
chkconfig --list rsync


chkconfig --level 345 xinetd on
如果不需要定时开启服务那么可不必借用xinetd来启动而直接启动rsync服务

chkconfig rsync on 





0
kenyon_君羊
kenyon_君羊
实时同步有时CPU占用会过高,不是级别高的文件存储,还是crontab划算
0
Waichung
Waichung
请问一下楼主,lsyncd的日志文件如何设置大小?
0
UstarWay
UstarWay
能否推荐使用于单服务器将远程数据同步备份到本地的解决方案呢?在此谢谢!
返回顶部
顶部