lsyncd (실시간 동기화 유틸)
예전에 rsync 와 연동하여 몇번 사용했던건데 잘 사용하면 꽤 유용할듯 하다.
rsyncd 단점
실시간 동기화의 어려움
시스템 퍼포먼스 분산의 어려움
차등 동기화 방식으로 서버 댓수에 따라 동기화 시간이 걸린다
Inotify 파일 시스템을 감지하는 커널모듈
[root@localhost ~]# grep -i inotify /boot/config-`uname -r`
CONFIG_INOTIFY=y
CONFIG_INOTIFY_USER=y
설치
tar xvfz lsyncd-1.26.tar.gz
cd lsyncd-1.26
make && make install
원본자료 → 동기화할 서버 (백업서버?)
xxx.xxx.250.98 → xxx.xxx.26.4
Lsyncd Rsyncd.conf + xinetd
xxx.xxx.250.98 서버에서는 단지
lsyncd /home/tc1/ xxx.xxx.26.4::BACKUP 요렇게만 날려주면 데몬이 올라가면서 자동으로 동기화 된다.
26.4 서버에서는
vim /etc/rsyncd.conf 아래와 같이 작성해줬다.
path = /home/test
comment = lsyncd test
uid = root
gid = root
use chroot = yes
read only = no
hosts allow = xxx.xxx.250.98
max connections = 1
timeout 600
여러개를 동기화 할려면 lsyncd.conf 파일일 수정해준다 아래꺼 같은데 수정해주고 /etc/init.d/lsyncd 스크립트 만들어서
시작해주면 될듯 ..
/usr/local/src/lsyncd-1.26/lsyncd.conf.xml
스크립트는 아래와 같다..
/etc/init.d/lsyncd [stop | start| 이런식으로 날려주자~
# description: lsyncd auto start script
pid=`pidof lsyncd`
if [ $? -eq 0 ]; then
echo “lsyncd (pid $pid) is running…”
echo ” “
else
echo “Starting lsyncd…”
echo ” “
/usr/local/bin/lsyncd
fi
}
echo “Stopping lsyncd…”
echo ” “
/bin/kill -9 `/sbin/pidof rsync`
until [ -z $(/sbin/pidof lsyncd) ]; do :; done
}
start)
start
;;
stop)
stop
;;
restart)
stop
start
;;
status)
pid=`pidof lsyncd`
if [ $? -eq 0 ]; then
echo “lsyncd (pid $pid) is running…”
echo ” “
else
echo “lsyncd is not running”
echo ” “
fi
;;
*)
exit 1
esac
운영하다가 보면 디렉토리가 8천개 넘는경우 동기화가 정상적으로 작동 되지 않는다.
[root@localhost ~]# cat /proc/sys/fs/inotify/max_user_watches
8192
커널변수 수정
vim /etc/sysctl 열어서 아래라인 삽입하고
# lsyncd max Directory number fix
fs.inotify.max_user_watches = 16000
sysctl -p 적용한다.
특정디렉토리만 지울려고 할때
/etc/lsyncd_exclude.lst
– 아래와 같이 제외 시킬 디렉토리 지정만 해주면 됨
lib/sms
lib/sms/LOCK
lib/sms/LOG