달력

42024  이전 다음

  • 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
1 장 : rsync의 소개와 설치

 
일반적으로 웹서비스를 시작하는 회사에서 사용자가 늘어감에 따라서 웹서버의 증설을 하는 경우 시스템 관리자가 첫번째로 맞닥뜨리는 문제중에 하나가, 각각의 웹서버에 있는 정보의 동기화입니다.

웹서버가 한대일경우는 이러한 문제로 고민할 필요가 없겠지만, 트래픽증가로 웹서버를 증설했을경우 각각의 웹서버로 매일 업데이트되는 정보를 일일이 올려준다면 정말 귀찮은 작업이 되겠죠?

그렇지만 걱정하지 마세요. 리눅스의 rsync가 이 문제를 간단하게 해결해 드릴테니까요.

눈치 빠른 분들은 rsync가 무엇인지 앞의 말들로 어느정도 이해 하셨으리라 봅니다. 간단하게 rsync는 여러대의 서버들이 동일한 정보를 가질수 있도록 해주는 서버동기화 프로그램이라고 할수있습니다.

NT를 접해보신 분들이라면 미러링(mirroring)에 대해서 아실겁니다. 로컬에서는 특정하드디스크나 파티션의 정보를 다른 하드디스크나 파티션으로 동일하게 복제해주는것이죠.

미러링의 개념은 NT에만 국한된것은 아닙니다. NT에서 자체제공하는 옵션으로 미러링을 제공하듯이 리눅스에서도 rsync나 기타 다른 프로그램으로 미러링을 지원하죠.

물론 rsync는 로컬에서 로컬로는 미러링을 할수없지만, 로컬과 원격지의 미러링을 지원합니다. 보통 anonymous ftp서버나 웹서버의 미러링에 많이 쓰이죠.

rsync의 개념이 대강 잡히시죠?

그럼 이제부터 rsync라는 녀석을 어떻게 설정해야할지, 또 어떻게 써야할지에 대하여 설명하겠습니다.

일반적으로 redhat배포판 6.2에는 rsync-2.4.1-2 버젼이, 또 7.1-kr에는 rsync-2.4.6-2버젼이 기본으로 깔려있습니다.

만약 없으시다면, http://rsync.samba.org/ftp/rsync/ 에서 최신판을 받아서 설치하세요.

우선 받으시면 컴파일을 하셔야겠죠?

 

 

# tar xvfz rsync-2.4.6.tar.gz

# ./configure

# make

# make install

 



위와같이 특정옵션 추가없이 간단하게 컴파일하셔도 됩니다. ( 물론 개인취향에 따라서 디렉토리위치같은 옵션을 정해주셔도되구요.)


rsync가 사용하는 프로토콜은 rsh나 ssh를 사용합니다.

또한 이것을 사용하길 원치 않는다면 873포트를 이용할수도 있죠.

rysnc가 rsh나ssh를 사용하느냐, 아니면 873포트를 사용하느냐를 결정하는것에 따라 설정내용이 약간 틀려집니다.



 

2 장 : rsync 설정과 사용 (873포트)

 
873포트를 사용한다면 /etc/inetd.conf(redhat7.0이전일경우)나 /etc/xinetd.d/rsync(redhat 7.0이후일경우)의 내용을 수정해주어야합니다.

또한 /etc/rsyncd.conf라는 파일을 만들어주어야하죠.

예) /etc/inetd.conf 수정내용 (redhat7.0이전일경우)

 

 

rsync stream tcp nowait root /usr/bin/rsync rsyncd --daemon

 



예) /etc/xinetd.d/rsync 수정내용 (redhat 7.0이후일경우)

 


 

service rsync
{
disable = no
socket_type = stream
wait = no
user = root
server = /usr/bin/rsync
server_args = --daemon
log_on_failure += USERID
}

 



보시다시피 실제적인 수정내용은 --daemon이죠.

rsync를 daemon모드로 작동시키겠다는 뜻입니다.

결국 rsync는 inetd나 xinetd에서 데몬모드로 작동하게 되죠. ( netstat -tap 해보시면 쉽게 확인하실수있습니다. ^^)

아! 그리고 파일수정후에는 /etc/rc.d/init.d/inetd or xinetd를 restart해주는거 잊지마시구요.

자 이제 /etc/rsyncd.conf파일을 만들어 주어야하겠죠?

예) /etc/rsyncd.conf

 


 

[www]
path = /home/www
comment = webserver1
uid = nobody
gid = nobody
use chroot = yes
read only = yes
hosts allow = 203.255.112.34
max connections = 3
timeout 600

 



생각보다 간단하죠?

그럼 위의 내용에대한 설명을 드리겠습니다.

 


 

[www] 서비스명

path 서비스할 디렉토리위치

comment 설명

uid 파일전송하는 사용자의 id. 기본값은 nobody

gid 파일전송하는 사용자의 그룹 id. 기본값은 nobody

use chroot 위의 path를 root 디렉토리로 사용. (보안상 필요합니다.)

read only 읽기전용 ( 클라이언트에서 서버로 올리는 경우에는 read only= no 로 설정을 해야됩니다. )

hosts allow 호스트별 접속허용. 기본값은 all host입니다. 접근을 허용할 호스트의 ip를 적어주시면됩니다.

max connections 동시접속자수.

timeout 클라이언트에서 접근시 타임아웃시간.
              anonymous 로 운영하는 경우 설정을 해야 클라이언트가 죽었을 때 서버에서 접속을 해체할 수 있습니다.

 



이렇게해서 873포트를 쓰는 rsync서버의 설정은 끝났습니다.

그럼 rsync클라이언트에서 자료를 가져오는 방법을 아셔야겠죠?

우선 위에 rsync서버설정이 된것을 webserver1(www1.yahoo.co.kr)이라고 하고, 그 서버로부터 정보를 가져와 동기화 시킬 서버를 webserver2(www2.yahoo.co.kr)라고 합시다.

webserver2의 /home/www로 webserver1의 /home/www내용을 가져오려구 한다면, 이렇게 하시면 됩니다.

예) webserver2에서

 


 

# rsync -avz www1.yahoo.co.kr::/home/www /home/www

 



간단하죠? -avz옵션은 아래와 같습니다.

 


 

-a는 archive mode (심볼릭 링크, 속성, 퍼미션, 소유권 등 보존).

-v verbose(상세하게 보여움).

-z compress(전송시 압축을 함).

 



휴~ 여기까지가 rsync서버가 873포트로 사용될경우 설정과 사용법입니다.
 



 

3 장 : rsync 설정과 사용 (rsh,ssh)

 
그럼 이제 두번째로 rsync서버가 rsh,ssh를 사용할 경우를 알아볼까요?

실제로 앞의 설정내용에서 크게 틀린점은 없습니다.

우선 inetd나 xinetd를 수정하지 않으셔도 되고, /etc/rsyncd.conf를 만들어 주지 않으셔도 되니까요.

결국 설명할 내용은 클라이언트에서의 사용법 밖에 없겠네요.

그럼 아까와 같이 rsync서버설정이 된것을 webserver1(www1.yahoo.co.kr)이라고 하고, 그 서버로부터 정보를 가져와 동기화 시킬 서버를 webserver2(www2.yahoo.co.kr)라고 합니다.

webserver2의 /home/www로 webserver1의 /home/www내용을 가져오려구 한다면, 이렇게 하시면 됩니다.

예) webserver2에서

 

 

# rsync -avz -e ssh www1.yahoo.co.kr:/home/www /home/www

 



-e 옵션은 rsh나 ssh를 사용할때 써주는 옵션입니다. ( rsh를 사용하실려면 -e rsh하시면 되겠죠.)

또 아까 위에서 873포트를 사용할때 :: 라고 했던거 기억하시죠?

rsh나 ssh를 사용할때는 : 한개만 써주시면됩니다.

ssh를 사용할경우 암호를 입력해야하는데, 이것은 암호파일을 따로 만들어서 암호를 직접입력하는 수고를 줄일수있습니다.

(--password-file 옵션을 사용하시면 암호파일의 위치를 지정해줄수있습니다.)

자 이렇게해서 rsync의 설정법과 사용법에 관한 애기가 끝났습니다.

실제로 웹서버간의 데이타동기화를 할경우는 아까 rsync클라이언트에서 썼던 명령을 cron으로 돌리셔야 합니다.

그래야 주기적으로 데이타동기화를 할수있겠죠.

cron에 대한 것은 테마리눅스에 강좌로 올라와 있으니 참고 바랍니다.(http://www.linux.co.kr/theme/index1.html?ca=200107)

Posted by tornado
|