반응형
    
    
    
  lsyncd를 사용하여 A 서버와 B 서버 간 양방향 동기화를 설정하는 방법
lsyncd는 파일 동기화를 감시하고 변경이 발생할 때 실시간으로 동기화하는 도구입니다.
테스트 환경
| 구분 | 호스트 이름 | 아이피 | 비고 | 
| A 서버 | node2 | 192.168.20.212 | |
| B 서버 | node3 | 192.168.20.213 | 
1. 설치
먼저, A 서버와 B 서버에 lsyncd를 설치합니다. 각 서버의 패키지 관리자를 사용하여 설치할 수 있습니다.
- Ubuntu / Debian
sudo apt-get updatesudo apt-get install -y rsync lsyncd- CentOS / RHEL
sudo yum install epel-releasesudo yum install -y rsync lsyncd2. SSH 키 생성 및 배포
A 서버(192.168.20.212와 B 서버 간에 비밀번호 없이 SSH 통신을 위해 SSH 키를 생성하고 배포합니다. 이미 SSH 키가 있는 경우 이 단계를 건너뛸 수 있습니다.
useradd -m -c "file sync" -d /home/filesync -s /bin/bash -u 1901 filesyncecho "filesync:filesyncpw1!" | chpasswdecho "filesync ALL=(ALL) NOPASSWD:ALL" >> /etc/sudoerssu - filesync- A 서버에서 SSH 키 생성
ssh-keygen -t rsassh-copy-id filesync@node2- A 서버의 공개 키를 B 서버로 복사
ssh-copy-id user@B_server_IPssh-copy-id filesync@node3scp ~/.ssh/id_rsa filesync@node3:~/.ssh/id_rsascp ~/.ssh/id_rsa.pub filesync@node3:~/.ssh/id_rsa.pub3. lsyncd 설정 파일 생성
sudo mkdir -p /app/filesyncsudo chown -R filesync.filesync /app/filesyncA 서버와 B 서버 간의 양방향 동기화를 설정하기 위해 lsyncd 설정 파일을 생성합니다.
- A 서버에서 lsyncd.conf.lua 파일을 생성합니다.
sudo mkdir -p /etc/lsyncdsudo vim /etc/lsyncd/lsyncd.conf.lua- A 서버에서 아래와 같이 설정 파일을 작성합니다.
settings {
  logfile = "/var/log/lsyncd.log",
  statusFile = "/var/log/lsyncd-status.log",
  statusInterval = 3,
  insist = true
}
sync {
  default.rsyncssh,
  source        = "/app/filesync",
  host          = "filesync@192.168.20.213",
  targetdir     = "/app/filesync",
  --delete      = true,
  delay         = 1,
  rsync = {
    archive = true,
    compress = true,
    verbose = true,
    owner = true,
    group = true,
    perms = true,
    rsh="ssh -i /home/filesync/.ssh/id_rsa -o StrictHostKeyChecking=no"
  }
}- logfile: lsyncd의 로그 파일 경로를 지정합니다.
- statusFile: 상태 정보를 기록하는 파일 경로를 지정합니다.
- statusInterval: 상태 파일 업데이트 간격(초)을 지정합니다.
- source: 동기화를 수행할 A 서버의 소스 폴더 경로를 지정합니다.
- target: B 서버의 동기화 대상 폴더 경로를 지정합니다.
- B 서버에서 아래와 같이 설정 파일을 작성합니다.
vim /etc/lsyncd/lsyncd.conf.luasettings {
  logfile = "/var/log/lsyncd.log",
  statusFile = "/var/log/lsyncd-status.log",
  statusInterval = 3,
  insist = true
}
sync {
  default.rsyncssh,
  source        = "/app/filesync",
  host          = "filesync@192.168.20.212",
  targetdir     = "/app/filesync",
  --delete      = true,
  delay         = 1,
  rsync = {
    archive = true,
    compress = true,
    verbose = true,
    owner = true,
    group = true,
    perms = true,
    rsh="ssh -i /home/filesync/.ssh/id_rsa -o StrictHostKeyChecking=no"
  }
}4. lsyncd 실행
이제 설정 파일을 저장한 후 lsyncd를 실행합니다.
sudo systemctl start lsyncdsudo systemctl status lsyncdsudo systemctl stop lsyncd이제 A 서버의 변경 사항이 B 서버로 실시간으로 동기화되고, B 서버의 변경 사항도 A 서버로 실시간으로 동기화될 것입니다.
- A 서버에서 node2-AServer.txt 파일 생성
cd /app/filesyncroot@node2:filesync$ touch node2-AServer.txtroot@node2:filesync$ ls -l
total 0
-rw-r--r-- 1 root root 0 Jul 24 21:18 node2-AServer.txtroot@node3:filesync$ ls -l
total 0
-rw-r--r-- 1 filesync filesync 0 Jul 24 21:18 node2-AServer.txt- B 서버에서 node2-BServer.txt 파일 생성
root@node3:filesync$ touch node3-BServer.txtroot@node3:filesync$ ls -l
total 0
-rw-r--r-- 1 filesync filesync 0 Jul 24 21:18 node2-AServer.txt
-rw-r--r-- 1 root     root     0 Jul 24 21:19 node3-BServer.txtroot@node2:filesync$ ls -l
total 0
-rw-r--r-- 1 root     root     0 Jul 24 21:18 node2-AServer.txt
-rw-r--r-- 1 filesync filesync 0 Jul 24 21:19 node3-BServer.txt
참고: 양방향 동기화를 구성할 때 주의할 점은 무한 루프를 피하는 것입니다. 두 서버 간의 동기화가 서로 영향을 미치지 않도록 설정 파일을 조심스럽게 구성해야 합니다.
728x90
    
    
  반응형
    
    
    
  '리눅스' 카테고리의 다른 글
| vim 편집기(editor)의 설정과 사용법 (0) | 2023.07.29 | 
|---|---|
| nc 명령어 (0) | 2023.07.28 | 
| 리눅스 터미널 세션을 확인하고 끊는 방법 (0) | 2023.07.24 | 
| 우분투에서 MHA(Master High Availability)를 컴파일하고 설치하는 방법 (0) | 2023.07.23 | 
| 리눅스에 콘솔 접근 또는 원격 접근 시 경고 메시지를 설정하는 방법 (0) | 2023.07.20 | 
 
                  
                 
                  
                 
                  
                