웹사이트 검색

Rsync를 사용하여 두 개의 Apache 웹 서버/웹 사이트를 동기화하는 방법


웹에는 다양한 방법으로 웹 파일을 미러링하거나 백업할 수 있는 튜토리얼이 너무 많습니다. 여기에서는 나중에 참고할 수 있도록 이 기사를 작성하고 여기서는 Linux의 매우 간단하고 다재다능한 명령을 사용하겠습니다. 웹사이트의 백업을 생성합니다. 이 튜토리얼은 "Rsync"를 사용하여 두 웹 서버 간의 데이터를 동기화하는 데 도움이 됩니다.

Rsync를 사용하여 웹 서버의 미러를 생성하는 목적은 기본 웹 서버에 오류가 발생하는 경우 백업 서버가 이를 대신하여 웹사이트의 다운타임을 줄일 수 있다는 것입니다. 웹 서버 백업을 생성하는 이러한 방법은 중소 규모 웹 비즈니스에 매우 유용하고 효과적입니다.

웹 서버 동기화의 장점

rsync를 사용하여 웹 서버 백업을 생성할 때의 주요 이점은 다음과 같습니다.

  1. Rsync는 변경된 데이터 바이트와 블록만 동기화합니다.
  2. Rsync에는 기본 웹 서버에서 삭제된 파일 및 디렉터리를 백업 서버에서 확인하고 삭제하는 기능이 있습니다.
  3. 데이터를 원격으로 복사하는 동안 권한, 소유권 및 특수 속성을 관리합니다.
  4. 또한 암호화된 방식으로 데이터를 전송하는 SSH 프로토콜을 지원하므로 모든 데이터가 안전하다는 것을 확신할 수 있습니다.
  5. Rsync는 더 적은 대역폭을 소비하는 데이터를 전송하는 동안 압축 및 압축 해제 방법을 사용합니다.

두 개의 Apache 웹 서버를 동기화하는 방법

웹 서버의 미러를 생성하기 위해 rsync 설정을 진행해 보겠습니다. 여기서는 두 대의 서버를 사용하겠습니다.

메인 서버
  1. IP 주소: 192.168.0.100
  2. 호스트 이름: webserver.example.com
백업 서버
  1. IP 주소: 192.168.0.101
  2. 호스트 이름: backup.example.com

1단계: Rsync 도구 설치

이 경우 webserver.example.com의 웹 서버 데이터는 backup.example.com에 미러링됩니다. 먼저 다음 명령을 사용하여 두 서버 모두에 Rsync를 설치해야 합니다.

[root@tecmint]# yum install rsync        [On Red Hat based systems]
[root@tecmint]# apt-get install rsync    [On Debian based systems]

2단계: Rsync를 실행할 사용자 생성

루트 사용자로 rsync를 설정할 수 있지만 보안상의 이유로 기본 웹 서버(예: webserver.example.com)에 권한 없는 사용자를 생성하여 rsync를 실행할 수 있습니다.

[root@tecmint]# useradd tecmint
[root@tecmint]# passwd tecmint

여기서는 “tecmint” 사용자를 생성하고 사용자에게 비밀번호를 할당했습니다.

3단계: Rsync 설정 테스트

이제 백업 서버(예: backup.example.com)에서 rsync 설정을 테스트할 시간입니다. 테스트하려면 다음 명령을 입력하세요.

[root@backup www]# rsync -avzhe ssh [email :/var/www/ /var/www
샘플 출력
[email 's password:

receiving incremental file list
sent 128 bytes  received 32.67K bytes  5.96K bytes/sec
total size is 12.78M  speedup is 389.70

이제 rsync가 완벽하게 작동하고 데이터를 동기화하는 것을 볼 수 있습니다. 저는 "/var/www"를 사용하여 전송했습니다. 필요에 따라 폴더 위치를 변경할 수 있습니다.

4단계: SSH 비밀번호 없는 로그인으로 동기화 자동화

이제 rsync 설정이 완료되었으며 이제 rsync를 위한 cron을 설정할 차례입니다. SSH 프로토콜과 함께 rsync를 사용할 예정이므로 ssh는 인증을 요청하며 cron에 비밀번호를 제공하지 않으면 작동하지 않습니다. cron을 원활하게 작동하려면 rsync에 대해 비밀번호 없는 SSH 로그인을 설정해야 합니다.

이 예에서는 파일 소유권을 보존하기 위해 루트로 수행하고 있으며 대체 사용자에게도 수행할 수 있습니다.

먼저 백업 서버(예: backup.example.com)에서 다음 명령을 사용하여 공개 개인 키를 생성합니다.

[root@backup]# ssh-keygen -t rsa -b 2048

이 명령을 입력할 때 암호를 제공하지 말고 비어 있는 암호에 대해 Enter를 클릭하여 rsync cron이 데이터 동기화를 위해 암호가 필요하지 않도록 하세요.

샘플 출력
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
9a:33:a9:5d:f4:e1:41:26:57:d0:9a:68:5b:37:9c:23 [email 
The key's randomart image is:
+--[ RSA 2048]----+
|          .o.    |
|           ..    |
|        ..++ .   |
|        o=E *    |
|       .Sooo o   |
|       =.o o     |
|      * . o      |
|     o +         |
|    . .          |
+-----------------+

이제 공개개인 키가 생성되었으며 기본 웹 서버가 이 백업 시스템을 인식하고 로그인을 허용하도록 이를 기본 서버와 공유해야 합니다. 데이터를 동기화하는 동안 비밀번호를 묻지 않고.

[root@backup html]# ssh-copy-id -i /root/.ssh/id_rsa.pub [email 

이제 'ssh '[email ''를 사용하여 시스템에 로그인하고 .ssh/authorized_keys를 체크인해 보세요.

[root@backup html]# [email 

이제 키 공유가 완료되었습니다. SSH 비밀번호를 사용하지 않고 로그인에 대해 자세히 알아보려면 이에 대한 기사를 읽어보세요.

  1. 간단한 5단계로 SSH 비밀번호 없이 로그인

5단계: 동기화를 자동화하도록 Cron 예약

이를 위해 cron을 설정해 보겠습니다. cron을 설정하려면 다음 명령으로 crontab 파일을 엽니다.

[root@backup ~]# crontab –e

기본 편집기로 편집할 수 있도록 /etc/crontab 파일이 열립니다. 이 예에서는 데이터를 동기화하기 위해 5분마다 실행하는 cron을 작성하고 있습니다.

*/5        *        *        *        *   rsync -avzhe ssh [email :/var/www/ /var/www/

위의 cron 및 rsync 명령은 단순히 기본 웹 서버의 "/var/www/"를 모든 에서 백업 서버로 동기화합니다. 5분. 필요에 따라 시간 및 폴더 위치 구성을 변경할 수 있습니다. RsyncCron 명령을 사용하여 더욱 창의적으로 맞춤 설정하려면 다음에서 더 자세한 기사를 확인하세요.

  1. Linux에서 파일/폴더를 동기화하는 10가지 Rsync 명령
  2. 11 Linux의 크론 스케줄링 예