티스토리 뷰

lsyncd (실시간 동기화)



예전에 rsync 와 연동하여 몇번 사용했던건데 잘 사용하면 꽤 유용할듯 하다.



rsyncd 단점

실시간 동기화의 어려움
시스템 퍼포먼스 분산의 어려움
차등 동기화 방식으로 서버 댓수에 따라 동기화 시간이 걸린다




Inotify 파일 시스템을 감지하는 커널모듈

[root@localhost ~]# grep -i inotify /boot/config-`uname -r`
CONFIG_INOTIFY=y
CONFIG_INOTIFY_USER=y


설치

wget http://lsyncd.googlecode.com/files/lsyncd-1.26.tar.gz

tar xvfz lsyncd-1.26.tar.gz

cd lsyncd-1.26
./configure

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 아래와 같이 작성해줬다.

[BACKUP]
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| 이런식으로 날려주자~

#!/bin/bash
# description: lsyncd auto start script
start() {
pid=`pidof lsyncd`
if [ $? -eq 0 ]; then
echo "lsyncd (pid $pid) is running..."
echo " "
else
echo "Starting lsyncd..."
echo " "
/usr/local/bin/lsyncd
fi
}
stop() {
echo "Stopping lsyncd..."
echo " "
/bin/kill -9 `/sbin/pidof rsync`
until [ -z $(/sbin/pidof lsyncd) ]; do :; done
}
case "$1" in
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
;;
*)
echo "Usage: lsyncd {start|stop|restart|status}"
exit 1
esac
exit $?




운영하다가 보면 디렉토리가 8천개 넘는경우 동기화가 정상적으로 작동 되지 않는다.

아이노티파이 기본적은 디렉토리는 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 적용한다.



특정디렉토리만 지울려고 할때

<settings>
<exclude-from filename="/etc/lsyncd_exclude.lst"/>
</settings>



/etc/lsyncd_exclude.lst
- 아래와 같이 제외 시킬 디렉토리 지정만 해주면 됨

lib/sms_old
lib/sms
lib/sms/LOCK
lib/sms/LOG


'Linux' 카테고리의 다른 글

vsftp 설치 / passive-Mode 및 방화벽 설정 (linux 리눅스)  (0) 2015.06.04
리눅스 vi 편집기 정리  (0) 2015.06.04
리눅스 alias 개념  (0) 2015.06.04
mon.cf 예제들...  (0) 2015.06.04
cron (crontab)  (0) 2015.06.04
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/02   »
1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28
글 보관함