본문 바로가기

System engineer

CentOS7_Lsync를 이용한 양방향 데이터 동기화

 

Lsyncd 양방향 동기화

 

NFS 서버를 이용하지 않고, Lsync를 이용하여 각자의 서버에 data를 저장하고 동기화 할 수 있습니다.

각각의 서버가 로컬에 있는 데이터를 바라보기 때문에, 어떤 면에서는 조금 더 안전할 수도 있겠네요

NFS 서버가 죽어버리면 모든 client 서버들이 바라보는 공유 디렉토리가 umount 되게 되니까요.


 그렇다고 lsync가 모든 면에서 더 좋은 것은 아닙니다.

두 개의 차이를 확인하시고 맞는 방법으로 운영 하시면 됩니다.

 


서버1 (IP : 000.000.000.000 )

서버2 (IP : 111.111.111.111 )


1.     설치


서버1, 서버2

#yum install epel-release –y

#yum install lsyncd lua rsync

 

동기화 할 양 서버 간 ssh 접속이 패스워드 없이 가능해야 하기 때문에 아래 작업을 진행합니다.


서버1

#ssh-keygen

모두 enter

#ssh-copy-id –p 22 root@111.111.111.111

#ssh root@111.111.111.111 ( ssh 접속 확인 )

 

서버2

#ssh-keygen

모두 enter

#cat ./.ssh/id_rsa.pub | ssh –p 22 root@000.000.000.000 “mkdir –p ~/.ssh && cat >> ~/.ssh/authorized_keys”

#ssh root@000.000.000.000. ( ssh 접속 확인 )

 

서버1

#vi /etc/lsyncd.conf

( default로 들어가 있는 설정은 삭제 )

settings {

           logfile=”/var/log/lsyncd.log”,

           statusFile=”/var/log/lsyncd-status.log”

}

 

sync {

           default.rsyncssh,

           source=”/data”,

           host=”서버2 IP”,

           targetdir=”/data”,

  delay=1,

  delete=true

}


:wq


source : 서버1의 공유 할 디렉토리

targetdir : 서버2의 공유 할 디렉토리

deley : 동기화 딜레이 시간

delete : 삭제 공유

 

서버2

#vi /etc/lsyncd.conf

( default로 들어가 있는 설정은 삭제 )

settings {

           logfile=”/var/log/lsyncd.log”,

           statusFile=”/var/log/lsyncd-status.log”

}

 

sync {

           default.rsyncssh,

           source=”/data”,

           host=”서버1 IP”,

           targetdir=”/data”,

delay=1,

delete=true

}


:wq 


서버1, 서버2

#systemctl start lsyncd

#systemctl enable lsyncd

 

각각의 서버의 /data 에 파일 생성 및 삭제해보면서 동기화가 정상적으로 이루어지는지 테스트해봅니다.

  

 

그 외에 여러 가지 옵션들이 있는데, 옵션은 상황에 맞게 설정 하시면 됩니다.

exclude , ssh, rsync(archive, compress, verbose) ..

sync {  } 안쪽에 작성해주시면 됩니다.


옵션 예제  


exclude = {

           ‘/디렉토리’,

           ‘/디렉토리1’

},

제외 할 디렉토리를 넣는 설정입니다.


ssh = {

           port = xxxx

},

포트를 변경 할 때 사용합니다.

 

rsync = {

           archive= true,

           compress= false,

           verbose= false

}

archive 는 소유권까지 동일하게 동기화 되는 것이고, compress는 압축 실행 여부, verbose는 로그를 상세히 기록하는 옵션입니다.