블로그 이미지
redkite

카테고리

분류 전체보기 (291)
00.SI프로젝트 산출물 (0)
00.센터 운영 문서 (0)
01.DBMS ============.. (0)
01.오라클 (117)
01.MS-SQL (15)
01.MySQL (30)
01.PostgreSql (0)
01.DB튜닝 (28)
====================.. (0)
02.SERVER ==========.. (0)
02.서버-공통 (11)
02.서버-Linux (58)
02.서버-Unix (12)
02.서버-Windows (2)
====================.. (0)
03.APPLICATION =====.. (11)
====================.. (0)
04.ETC =============.. (0)
04.보안 (5)
====================.. (0)
05.개인자료 (1)
06.캠핑관련 (0)
07.OA관련 (1)
Total
Today
Yesterday

달력

« » 2024.11
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 29 30

공지사항

최근에 올라온 글

0055. [리눅스] lsyncd -실시간 파일 동기화

예전에 HA관련에서 실시간 백업에 대해서 이야기를 논한적이 있습니다.

lsync에 대한것을 살짝 언급을 하였었고, 오늘 테스트를 해보았습니다.
문제가 있다면 disk I/O가 문제가 되어집니다.

최신 버전의 lsync구하는곳 (http://code.google.com/p/lsyncd/)
+ rsyncd도 최신 버전이여야 함. (CentOS 5.5에 default로 설치되어지는 rsync는 2.6 버전인것같습니다. 3버전으로 업글을 추천합니다...ㄷㄷ

1. 컴파일 (rsync http://samba.org/rsync)
일단 구하고 wget하고 tar도 해주고 ./configure ; make ; make install 합니다.

2. lsync 컴파일 (rpm이 없습니다. 위 알려드린 url에서 2.0.2를 다운 받습니다)
-> lua가 필요합니다. 설치 버전은 5.1.4 입니다.

2.1 LUA 5.1.4 컴파일 (http://www.lua.org/)
->wget 하고 tar zxvf 하고, make linux;make test;make install 합니다.

root@lb1:[Mon Oct 12 21:04:48]:[/opt/installs/lighttpd-1.5.0.cache]$ wget http://www.lua.org/ftp/lua-5.1.4.tar.gz
tar xvfz lua-5.1.4.tar.gz
cd lua-5.1.4
make linux
make install
cp etc/lua.pc /usr/lib/pkgconfig/ ## 파일 필요함
and you are ready to try again


2.2 그뎌 lsync 컴파일
-> 설치도중 에러가 납니다.
-> LUA 컴파일 dir로 이동하여 lua.pc 파일을 /usr/lib64/pkgconfig에 복사를 해줍니다. (linux가 64비트인지라)
-> make 도중 에러가 발생합니다....-_-;
(중도 포기를 예상하며 잠깐의 커피타임...)
->gcc -g -O2 -Wall -I/usr/local/include -o lsyncd lsyncd.o inotify.o -L/usr/local/lib -llua -lm
/usr/local/lib/liblua.a(loadlib.o): In function `ll_loadfunc':
loadlib.c:(.text+0x7d4): undefined reference to `dlsym'
loadlib.c:(.text+0x7e2): undefined reference to `dlerror'
loadlib.c:(.text+0x8ad): undefined reference to `dlopen'
loadlib.c:(.text+0x8c3): undefined reference to `dlerror'
/usr/local/lib/liblua.a(loadlib.o): In function `gctm':
loadlib.c:(.text+0xdbc): undefined reference to `dlclose'
collect2: ld returned 1 exit status
make[1]: *** [lsyncd] Error 1
make[1]: Leaving directory `/root/lsync/lsyncd-2.0.2'

이건 뭐다냥........................ vi config.status 파일을 수정합니다.

LIBLUA_LIBS = -L/usr/local/lib -llua -lm -ldl 혹은 LIBLUA_LIBS = -L/usr/local/lib -llua -lm

오오 그뎌 컴파일이 되어집니다..........헉헉 여기까지 오시느라 고생하셨습니다. ㅠ_ㅠ 잠깐 한숨 돌리시죠? (위에서 커피 마시고...-_-;)

rsync와 lsync가 컴파일이 모두 완료가 되어졌습니다.

여기서 잠깐...; lsync이 원리에 대해서 이야기를 잠깐 해보도록 하겠습니다.
lsync는 kernel에서 디스크 기록시에 event가 발생이 되어지는데 이 event를 감지하여 해당 file에 대한것을 rsync에게 넘기는 방식입니다.

그러다보니 이게 말로만 실시간이지 실시간이 안되어지는 부분도 존재합니다.
대표적인 예로는 db관련 부분입니다. 한번 thread들이 물면 놓지 않기 때문에 db서버가 내려가면서 file write event가 발생되어지지 않으면 sync가 되어지지 않습니다. 이것은 결국 로그도 동일한 현상이 발생이 되어지는 부분이 있으니 참고를 하세요

============제 멋대로 한 rsync conf=========
cat rsyncd.conf
[data]
path=/data/
comment=lsync_nosage
uid=nobody
gid=nobody
use chroot=yes
max connections=10
read only=yes

이것만 설정했습니다....테스트장비이니까요...(데헷....^_* << 아무래도 정신줄 놓은듯...)

그 다음 lsync를 올립니다.
처음에는 에러로그를 보기 위해서 nodaemon상태로 올립니다.

lsycn --nodaemon -rsync /data /lsync (/data는 소스 위치 /lsync는 타겟위치입니다 - 타겟 위치는 원격지 서버도 가능합니다.)

이 상태라면 lsync설치가 완료가 되어집니다.
고생하셨습니다.

'02.서버-Linux' 카테고리의 다른 글

[리눅스]DD 가상파일 생성  (0) 2012.12.19
[리눅스]메일 관리  (0) 2012.12.19
[리눅스]패스워드 만료일자 변경  (0) 2012.12.19
[리눅스]부트영역 복구하기  (0) 2012.12.19
[리눅스]명령어 로깅 설정  (0) 2012.12.19
Posted by redkite
, |

최근에 달린 댓글

최근에 받은 트랙백

글 보관함