강좌
클라우드/리눅스에 관한 강좌입니다.
리눅스 분류

Sulinux17에서 lsync - 실시간 동기화 사용하기

작성자 정보

  • 웹관리자 작성
  • 작성일

컨텐츠 정보

본문



lsync - 실시간 동기화




Lsyncd는 “Live Syncing Daemon”의 약자로 master 서버에 파일 또는 디렉토리가 변경 사항이 있으면 inotify로 변경사항을 체크 하여 slave 서버로 파일 또는 디렉토리가 동기화 또는 복제가 되며, 이때 rsync 와 ssh를 사용하게 됩니다.

  • inotify는 리눅스 커널에 포함된 기능으로 파일시스템에 변경 사항이 발생될때 이벤트를 통보해 줍니다.



rsync는 Remote synchronization 의 약자로 local 과 remote 의 데이터 동기화를 위한 유틸리티 입니다. Linux System과 Unix System 에서 백업 용도로 가장 널리 사용하는 유틸입니다.

rsync 유틸의 장점으로 네트워크 대역폭을 최소화하는 델타 인코딩 알고리즘을 사용하여 변경이 일어난 부분만 전송하므로 빠르고, 효율적으로 데이터를 동기화 및 복제를 할 수 있습니다.


동기화의 방식은 이동 방법에 따라 크게 4가지 종류가 있습니다.

A 와 B 서버의 동기화를 한다고 가정 한다면, 아래와 같이 나눌 수 있습니다.


  • A → B :    A 서버에서 B 서버로 파일을 밀어 넣는 방법 (Upload)

  • A → B :    B 서버에서 A 서버에 있는 파일을 당겨 받는 방법 (Download)

  • B → A :    B 서버에서 A 서버로 파일을 밀어 넣는 방법 (Upload)

  • B → A :    A 서버에서 B 서버에 있는 파일을 당겨 받는 방법  (Download)


lsyncd 사용을 위해서 A 서버에서 B 서버로 파일을 밀어 넣는 방법인 첫번째 방식을 사용하여 테스트를 진행 하겠습니다.




0. 기타

  1. 테스트 환경
    (주)에스유소프트에서 제공 받아 sulinux 17 64bit를 사용하였으며, 테스트 및 작업 진행을 확인 하기 위하여 서버 3대를 동일한 버전으로 설치하였습니다.
    - Kernel : 3.10.0-514.el7.x86_64
    - OS : sulinux-release-17-3.1703.el7.sulinux.x86_6
    - Master A 의 IP :    192.168.0.106
    - Slave B 의 IP :    192.168.0.128
    - Slave C 의 IP :    192.168.0.133


  1. 요구 사항 (설치 및 동작 조건)
    master A 서버에 rsync 와 종속 패키지들이 필요하며, yum 으로 설치 진행하였습니다.
    - kernel 2.6.13 이상
    - rsync libxml2 libxml2-devel
    - lsync lua lua-devel pkgconfig gcc asciidoc

  2. 글 내용과 실제 쉘상에 사용할 수 있는 명령어의 차이점을 두기 위하여 리눅스 쉘 상에서 사용하는 명령은 $ 기호를 앞에 두어 표시 하였습니다.

  3. 명령어를 그대로 복사하여 사용하면 기호  ' " ' ` 등 적용이 되지 않는 부분이 있을 수 있으며, 명령어 복사 후에 기호를 수정 하시고 사용하면 됩니다.




1. 커널 버전 확인


커널은 3.10.0으로 2.6.13 버전의 상위 버전으로 확인 되었으므로, 필요 패키지들을 설치 합니다. inotify 설정 또한 확인을 합니다. uname -r 은 서버의 kernel 을 확인하는 명령어 이며, inotify 설정 확인시 [ 따옴표 Apostrophe(') ]가 아닌 [ 물결표시 아래 따옴표 Grave (`) ] 입니다.


$ uname -r

3.10.0-514.el7.x86_64


$ cat /boot/config-`uname -r` | grep -i inotify

CONFIG_INOTIFY_USER=y




2. 설치 과정

@ 설치

rsync 와 libxml2 는 기본적으로 설치가 되어 있으며, 두 패키지의 설치 진행을 하면 업데이트 혹은 latest version(최신 버전)이라는 해당 메시지를 볼 수 있습니다.
libxml2-devel 패키지는 설치가 안되어 있으므로 설치 진행을 합니다.

동기화 파일이나 디렉토리가 있는 master A 서버, Slave B C 에 설치를 진행 하면 됩니다.


$ yum install libxml2 libxml2-devel rsync


..

..

Package libxml2-2.9.1-6.el7_2.3.x86_64 already installed and latest version

..

..

..


Dependencies Resolved


================================================================== Package        Arch        Version        Repository        Size

==================================================================

Installing:

libxml2-devel        x86_64    2.9.1-6.el7_2.3    base        1.0 M

Installing for dependencies:

xz-devel        x86_64    5.2.2-1.el7        base        45 k

zlib-devel        x86_64    1.2.7-17.el7        base        49 k


Transaction Summary

==================================================================

Install  1 Package (+2 Dependent packages)


Total download size: 1.1 M

Installed size: 9.1 M

Is this ok [y/d/N]: y


..

...

Installed:

 libxml2-devel.x86_64 0:2.9.1-6.el7_2.3                                                                                                                                                                      


Complete!


@ 설치_2

기본 저장소에서는 lsyncd 패키지를 사용 할 수 없으므로, epel repo를 추가 하여 활성화 하도록 합니다. 글쓴이는 dl.fedoraproject.org 의 URL에서 최신 repo를 추가 하였습니다.

추가가 완료 되면 yum 을 이용하여 종속 패키지와 lsyncd 패키지를 설치 합니다.

Complete! 메시지가 마지막에 출력이 되면 정상적으로 설치가 된 것 입니다.

master A 서버에 설치를 하며, 설정 또한 master A 서버에서 진행을 합니다.


rpm의 URL 경로는 바뀔 수 있으며, 웹브라우저에 수동으로 URL 주소를 입력하여 경로를 확인하도록 합니다.


$ rpm -ivh http://dl.fedoraproject.org/pub/epel/7/x86_64/Packages/e/epel-release-7-11.noarch.rpm



# 종속 패키지

$ yum install lua lua-devel pkgconfig gcc asciidoc

.. ...

.. ...


Installed:

 asciidoc.noarch 0:8.6.8-5.el7                                                                         lua-devel.x86_64 0:5.1.4-15.el7                                                                      


Dependency Installed:

 boost-regex.x86_64 0:1.53.0-27.el7    docbook-dtds.noarch 0:1.0-60.el7 docbook-style-xsl.noarch 0:1.78.1-3.el7 graphviz.x86_64 0:2.30.1-19.el7 libXaw.x86_64 0:1.0.13-4.el7 sgml-common.noarch 0:0.6.3-39.el7

 source-highlight.x86_64 0:3.1.6-6.el7


Updated:

 gcc.x86_64 0:4.8.5-16.el7_4.1                                                                                                                                                                               


Dependency Updated:

 cpp.x86_64 0:4.8.5-16.el7_4.1       gcc-c++.x86_64 0:4.8.5-16.el7_4.1       gcc-gfortran.x86_64 0:4.8.5-16.el7_4.1        libgcc.x86_64 0:4.8.5-16.el7_4.1      libgfortran.x86_64 0:4.8.5-16.el7_4.1    

 libgomp.x86_64 0:4.8.5-16.el7_4.1   libquadmath.x86_64 0:4.8.5-16.el7_4.1   libquadmath-devel.x86_64 0:4.8.5-16.el7_4.1   libstdc++.x86_64 0:4.8.5-16.el7_4.1 libstdc++-devel.x86_64 0:4.8.5-16.el7_4.1  


Complete!


$ yum install lsyncd

.. ...

.. ...


관련자료

댓글 0
등록된 댓글이 없습니다.

공지사항


뉴스광장


  • 현재 회원수 :  60,037 명
  • 현재 강좌수 :  35,806 개
  • 현재 접속자 :  163 명