강좌

HOME > 강좌 >
강좌| 리눅스 및 오픈소스에 관련된 강좌를 보실 수 있습니다.
 
lsync 실시간 동기화
조회 : 22,020  


lsync 실시간 동기화


0. lsync 소개

lsync는 time synchronization progrem for Linux 의 약자이다.
lsync를 이용하면 실시간 동기화가 가능 하다.
하지만 네트웍 속도가 그만큼 높은 속도가 안정적으로 나오는 네트웍 환경에서만 안정적으로 운영이 가능하다.


1. 동작 원리

1) 커널의 inotify에서 파일시스템의 변경 이벤트를 체크한다 .
2) 이벤트 발생시 rsync를 호출하여 변경 이벤트가 발생한 파일을 배포한다.

동작원리는 위의 두가지단계로 매우 단순하다.

원본 서버에는 kernel 2.6.13이상 버전이 필요하다 이는 이이상버전에서 inotify를 지원한다.
슬레이브 서버에는 rsync 데몬이 설정되어 있어야 한다.


2. 요구사항
kernel 2.6.13 이상 버전
rsync package
libxml2 package
libxml2-devel package


3. 동기화 방법

lsync 사용법

lsyncd [OPTION]... [SOURCE] [TARGET 1] [TARGET 2] ...
[SOURCE] => 동기화시 원본이 존제하는 위치 /home/test/
[TARGET X] => 동기화가 필요한 서버 192.168.0.3::HOME/test
[OPTION]
--binary FILE rsync 실행 파일 위치
--conf FILE 실행시 로드할 설정 파일명 (DEFAULT: /etc/lsyncd.conf.xml)
--debug 디버그를 위한 로그
--exclude-from FILE 동기화시 제외시킬 패턴의 옵섭
--logfile FILE 로그 파일위치
--no-daemon 포그라운드로 실행 시킴
--pidfile FILE pid 파일 생성위치


설정방법

슬레이브 서버

rsyncd를 서비스에 추가시켜 rsync접속이 가능하도록 한다

/etc/rsyncd.conf -->

[HOME]
path = /home/test
uid = root
gid = root
use chroot = yes
read only = no                      # 마스터에서 배포시 쓰기가 가능해야 한다
max connections = 4
hosts allow = 192.168.0.1         # 마스터 서버에서만 접속이 가능하도록 설정


위와 같이 마스터서버에서만 rsync 데몬만 이용할수있도록 하며 마스터에서 파일을 슬레이브로 쓰는 형태이므로 쓰기원한을 주어야한다

세팅후 rsync 데몬을 시작한다 .


마스터 서버

데몬 직접 띄우기
# lsyncd /home/test/ 192.168.0.3::HOME/test

설정파일을 이용하여 실행시키기
/etc/lsyncd.conf.xml 파일을 생성하여

<lsyncd version="1">
  <settings>
    <logfile      filename="/var/log/lsyncd"/>
    <binary       filename="/usr/bin/rsync"/>
    <callopts>
      <option text="-az%r"/>
      <option text="--delete"/>
    </callopts>
  </settings>
  <directory>
    <source path="/home/test/"/>
    <target path="192.168.0.2::HOME/"/>
  </directory>
</lsyncd>

설정 파일을 작성하고

/etc/rc.d/init.d/lsyncd 파일을 생성하여

#!/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/bin/lsyncd
  fi
}


stop() {
  echo "Stopping lsyncd..."
  echo " "

   /bin/kill -9 `/sbin/pidof lsyncd`
   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 $?

위와 같이 작성후 실행이 가능한 권한으로 변경한다

/etc/rc.d/init.d/lsyncd start를 하게 되면 실행된다

실행후
Fri Jul 2 21:35:14 2010: event CLOSE_WRITE:1 triggered.
Fri Jul 2 21:35:14 2010: rsyncing /home/test/ --> 192.168.0.3::HOME/test/
Fri Jul 2 21:35:23 2010: event DELETE:1 triggered.
Fri Jul 2 21:35:23 2010: rsyncing /home/test/ --> 192.168.0.3::HOME/test/

위의 로그에서 보는것과 같이 파일시스템의 이벤트에 의해 동기화가 이루어진다 .

[원글링크] : https://www.linux.co.kr/home2/board/subbs/board.php?bo_table=lecture&wr_id=1754


이 글을 트위터로 보내기 이 글을 페이스북으로 보내기 이 글을 미투데이로 보내기

 
이재석
본명 : 이재석
e-mail : locli앳superuser.co.kr
소속 : (주)수퍼유저코리아