728x90
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 update
sudo apt-get install -y rsync lsyncd
- CentOS / RHEL
sudo yum install epel-release
sudo yum install -y rsync lsyncd
2. SSH 키 생성 및 배포
A 서버(192.168.20.212와 B 서버 간에 비밀번호 없이 SSH 통신을 위해 SSH 키를 생성하고 배포합니다. 이미 SSH 키가 있는 경우 이 단계를 건너뛸 수 있습니다.
useradd -m -c "file sync" -d /home/filesync -s /bin/bash -u 1901 filesync
echo "filesync:filesyncpw1!" | chpasswd
echo "filesync ALL=(ALL) NOPASSWD:ALL" >> /etc/sudoers
su - filesync
- A 서버에서 SSH 키 생성
ssh-keygen -t rsa
ssh-copy-id filesync@node2
- A 서버의 공개 키를 B 서버로 복사
ssh-copy-id user@B_server_IP
ssh-copy-id filesync@node3
scp ~/.ssh/id_rsa filesync@node3:~/.ssh/id_rsa
scp ~/.ssh/id_rsa.pub filesync@node3:~/.ssh/id_rsa.pub
3. lsyncd 설정 파일 생성
sudo mkdir -p /app/filesync
sudo chown -R filesync.filesync /app/filesync
A 서버와 B 서버 간의 양방향 동기화를 설정하기 위해 lsyncd 설정 파일을 생성합니다.
- A 서버에서 lsyncd.conf.lua 파일을 생성합니다.
sudo mkdir -p /etc/lsyncd
sudo 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 서버의 동기화 대상 폴더 경로를 지정합니다.
728x90
- B 서버에서 아래와 같이 설정 파일을 작성합니다.
vim /etc/lsyncd/lsyncd.conf.lua
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.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 lsyncd
sudo systemctl status lsyncd
sudo systemctl stop lsyncd
이제 A 서버의 변경 사항이 B 서버로 실시간으로 동기화되고, B 서버의 변경 사항도 A 서버로 실시간으로 동기화될 것입니다.
- A 서버에서 node2-AServer.txt 파일 생성
cd /app/filesync
root@node2:filesync$ touch node2-AServer.txt
root@node2:filesync$ ls -l
total 0
-rw-r--r-- 1 root root 0 Jul 24 21:18 node2-AServer.txt
root@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.txt
root@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.txt
root@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
'리눅스' 카테고리의 다른 글
[draft] MySQL 클라이언트를 설치하는 방법 (0) | 2023.07.26 |
---|---|
CentOS 7에서 OpenSSL을 최신 버전으로 업그레이드하는 방법 (0) | 2023.07.26 |
리눅스 터미널 세션을 확인하고 끊는 방법 (0) | 2023.07.24 |
우분투에서 MHA(Master High Availability)를 컴파일하고 설치하는 방법 (0) | 2023.07.23 |
리눅스에 콘솔 접근 또는 원격 접근 시 경고 메시지를 설정하는 방법 (0) | 2023.07.20 |