Chinaunix首页 | 论坛 | 博客
  • 博客访问: 178713
  • 博文数量: 65
  • 博客积分: 2283
  • 博客等级: 大尉
  • 技术积分: 715
  • 用 户 组: 普通用户
  • 注册时间: 2008-09-18 17:00
文章分类

全部博文(65)

文章存档

2011年(5)

2010年(20)

2009年(24)

2008年(16)

分类: LINUX

2010-04-18 23:02:46

    机缘巧合,听群里的兄弟提到了lsyncd这个软件,于是google了一把,发现竟然是google开源项目组的一个开源软件(相关链接)。
    眼神大致一扫,立马下载了一个进行体验:
    搭建lsyncd需要内核版本在2.6.13以上,因为它需要一个inotify的内核,这个内核的作用就是可以实时提供系统文件变化的信息,供lsyncd来进行同步文件操作。关于inotify这个东东,我下个文件会详细介绍。
    我的环境是centos 5.4,还需要两个软件包,rsync和lsyncd。
下载地址:
 
一切准备就绪后,我们就开始啦:
1. 在两台服务器上安装rsync
    因为centos一般都自带rsync软件,不过版本都比较老(一般是2.6.3),我们先卸载掉老版本,然后安装新版本。
[root@server ~]# rpm -e rsync
[root@server ~]# tar zvxf rsync-3.0.6.tar.gz
[root@server ~]# cd rsync-3.0.6
[root@server ~]# ./configure --prefix=/usr/local/rsync
[root@server ~]# make && make install
 
2. 在主服务器上安装lsyncd
    主服务器为同步数据的源服务器,从服务器不需要安装lsyncd,只启动rsyncd进程即可。
[root@server ~]#tar zxvf lsyncd-1.26.tar.gz
[root@server ~]#cd lsyncd-1.26
[root@server ~]#./configure
[root@server ~]#make && make install
 
3. 配置从服务器的rsync守护进程
vi /etc/rsyncd.conf
内容如下:
uid = root
gid = root
use chroot = no
max connections = 5
pid file = /var/run/rsyncd.pid
lock file = /var/run/rsync.lock
log file = /var/log/rsyncd.log
 
[data]
path = /data
hosts allow = 172.16.103.11  #这是主服务器的ip地址
ignore errors
read only = no
write only = no
 
保存退出后启动daemon进程。
[root@client ~]# rsync --daemon
PS: 我们一般使用rsync都是把启动守护进程的作为主服务器,然后从服务器来同步主服务器的数据,也就是同步rsyncd.conf中tag路径下的数据,而这次刚好相反,我们需要把lsyncd服务器的数据同步至rsync服务器的tag目录。
 
4. 配置主服务器lsyncd服务
首先编辑配置文件
[root@server lsyncd-1.26]# cp lsyncd.conf.xml /etc/
[root@server ~]# vi  /etc/lsyncd.conf.xml









                \\源路径
   \\目的路径

保存退出。
启动服务:
[root@server ~]#  /usr/local/lsyncd/bin/lsyncd --conf /etc/lsyncd.conf.xml
 
也可以写入系统服务
[root@server ~]# vi /etc/init.d/lsyncd                
#!/bin/bash
#
# lsyncd: Starts the lsync Daemon
#
# chkconfig: 345 99 90
# description:
Lsyncd uses rsync to synchronize local directories with a remote
#
machine running rsyncd. Lsyncd watches multiple directories
#
trees through inotify. The first step after adding the watches
#
is to, rsync all directories with the remote host, and then sync
#
single file buy collecting the inotify events.
# processname: lsyncd 
. /etc/rc.d/init.d/functions
lsyncd="/usr/local/bin/lsyncd"
lockfile="/var/lock/subsys/lsyncd"
prog="lsyncd"
RETVAL=0
start() { 
if [ -f $lockfile ]; then 
echo -n $"$prog is already running: " 
echo 
else 
echo -n $"Starting $prog: " 
daemon "$lsyncd --conf /etc/lsyncd.conf.xml" 
done
RETVAL=$?
echo
[ $RETVAL = 0 ] && touch $lockfile
 return $RETVAL
 
fi
}
stop() { 
echo -n $"Stopping $prog: " 
killproc $lsyncd 
RETVAL=$?
echo 
[ $RETVAL = 0 ] && rm -f $lockfile
return $RETVAL
}
case "$1" in 
start)
start 
;;
stop) 
stop
;; 
restart)
stop 
start
;; 
status)
status $lsyncd 
;;
*)
echo "Usage: lsyncd {start|stop|restart|status}"
exit 1
esac 
exit $?
 
5. 进行一系列的测试,新建、删除等操作,在我搭建的环境中,两台都是虚拟机,百兆网卡,同步的速度还是蛮快的,系统负载也不高,对于目录文件变动较少的环境比较适用。
 
后记:
    怪我看lsyncd介绍太马虎了,本以为这个软件同步效率可以赶超drbd,结果发现是看差几个字,罪过罪过~~~
    摘一段官方介绍:
    哈哈,就这段字看差了,我是做邮件的,看来这个软件只能供我自己消遣了。
阅读(2689) | 评论(2) | 转发(0) |
给主人留下些什么吧!~~

chinaunix网友2010-08-05 10:05:37

大文件有问题啊

chinaunix网友2010-04-29 10:00:58

学习了...