리눅스 서버를 두대 세대 운영하다 보면 특정 폴더를 실시간 동기화 해야 할때가 있다.
보통 예전엔 rsync를 사용해서 했지만 centos5 버전 이후에는 커널급에서 지원하는 lsyncd 를 사용하나 보다.
설정은 쉽다.
#yum install epel-release –y
#yum install lsyncd lua rsync
# vi /etc/lsyncd.conf
settings {
logfile = "/var/log/lsyncd/lsyncd.log",
statusFile = "/var/log/lsyncd/lsyncd-status.log",
statusInterval = 20
}
sync {
default.rsync,
source="/data",
target="192.168.0.5:/data",
delay = 1,
rsync = {
compress = true,
acls = true,
verbose = true,
rsh = "/usr/bin/ssh -p 22 -o StrictHostKeyChecking=no" }
}
위와 같이 패키지 설치하고 설정화일을 자신의 환경에 맞춰서 설정후
#systemctl start lsyncd
#systemctl enable lsyncd
하면 끝이다.
1번서버의 특정 폴더에서 변한것이 있으면 곧바로 2번(위에 설정에서는 192.168.0.5:/data 폴더로)서버로 동기화 된다.
물론 2번 서버에서 1번 서버로 동기화가 필요하면 2번 서버에도 동일하게 설정해주면 된다.
추가)20201015
혹시 동기화 중에 비정상적이면
1. systemctl status lsyncd 메세지 확인
2. echo 65536 > /proc/sys/fs/inotify/max_user_watches 또는
sysctl fs.inotify.max_user_watches=65536 명령어로 커널값 조절.
3. 부팅후에도 적용되도록
vi /etc/sysctl.conf
fs.inotify.max_user_watches=65536
입력후 저장.
4. 그리고 systemctl restart lsyncd