lsyncd 설정
서버 파일의 실시간 동기화에 사용되는 lsyncd를 이용해 파일 동기화 설정을 했다. lsyncd는 rsync를 이용해 파일이 추가되면 거의 실시간으로 백업 서버에 파일이 백업된다. lsyncd는 리눅스 커널의 inotify로 파일시스템의 변경사항을 체크하여 변경사항이 생기면 rsync를 호출하여 백업 서버로 동기화 하는 데몬이다.
1. lua 설치
# yum install lua
lsyncd는 설정 파일에 lua 언어의 문법을 사용한다. 따라서 lua 패키지를 설치한다.
2. lsyncd 설치
# yum install lsyncd
만약 yum repo 리스트에 epel 리스트가 없으면 설치가 되지 않는다. 아래와 같이 epel repo를 설치한다.
# rpm -ivh http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm
위는 centos6 64비트 epel repo를 설치한 것이다. 버전이 다르다면 그 버전에 맞게 설치를 해줘야 한다.
3. rsync 설정은 백업 서버에서 해준다. 설정법은 이전 포스트 https://chicpro.dev/10831 를 참고하면 된다. 다만 rsync.conf 파일 설정에서 마스터 서버에서 백업서버로 파일을 동기화하는 것이므로 쓰기 권한이 있어야 한다. 아래와 같이 read only 설정을 no 로 변경한다.
[www1-data]
comment = www1 data backup
path = /home/www/data
uid = nobody
gid = nobody
use chroot = yes
read only = no
host allow = 192.168.1.126
max connections = 5
timeout = 60
4. lsyncd 설정
# vi /etc/lsyncd.conf
settings {
logfile = "/var/log/lsyncd/lsyncd.log",
statusFile = "/var/log/lsyncd/lsyncd-status.log"
}
sync {
default.rsync,
source="/home/sir/data/",
target="192.168.0.3::www1-data",
delete="false",
exclude={ "session" },
rsync = {
binary = "/usr/bin/rsync",
compress = false,
archive = true,
verbose = true
}
}
서버 환경에 맞게 적절히 설정은 수정한다. 설정 항목 중 192.168.0.3::www1-data 는 백업 서버의 ip와 rsync.conf 에서 설정한 서비스 이름이다.
5. lsyncd 시작
# service lsyncd start
더미 파일을 생성하여 동기화 테스트를 해본다. 만약 정상적으로 동기화가 되지 않는다면 /var/log/lsyncd/lsyncd.log 파일에서 로그를 확인하여 수정해야 한다. 실제로 테스트를 해보니 실시간으로 동기화가 되지는 않는 것 같다. 추가적인 설정이 있는 것인지 모르겠으나 보통 10 ~ 20초 정도의 딜레이가 있는 듯 하다. 테스트한 서버의 문제일 수 있다. 추가적으로 lsyncd 설정에서 동일 서버에서 백업을 실행한다면 아래와 같이 lsyncd.conf 파일을 설정하면 된다.
settings {
logfile = "/var/log/lsyncd/lsyncd.log",
statusFile = "/var/log/lsyncd/lsyncd-status.log"
}
sync {
default.direct,
source="/home/www/data/",
target="/backup/www/data/",
delete="false",
exclude={ "session" }
}
데이터 백업때문에 정말 많은 자료를 찾아보는 것 같다. 아직도 갈 길이 너무도 먼 서버관리.. 흐~
lsyncd 문서 : https://github.com/axkibe/lsyncd/wiki/Manual-to-Lsyncd-2.1.x