두 개 이상의 Linux 서버 간에 파일이 디스크에 기록되는 즉시 동기화할 수 있는 도구가 있습니까? 이 명령은 cron에서 설정하면 설정할 수 있는 최소 시간이 1분이지만 실시간이어야 하기 rsync
때문에 작동하지 않습니다 .rsync
답변1
나는 그것을 직접 사용하지 않았지만 최근에 그것에 대해 읽었습니다. 내 생각에 당신이 필요로 하는 일을 정확하게 수행하는 데몬이 있습니다 lsyncd
.
이에 대해 자세히 알아보기여기
답변2
다중 마스터 모드에서 여러 서버 간의 실시간 파일 동기화
lsyncd
실시간으로 여러 서버 간에 파일을 동기화할 수 있는 훌륭한 도구가 있습니다 . 여기서는 두 개의 서버를 사용해 보았습니다.
호스트: Server1 및 Server2
사용된 운영체제: CentOS 7
두 서버 모두에 다음 패키지를 설치합니다.
# yum install -y epel-release
# yum -y install lua lua-devel pkgconfig gcc asciidoc lsyncd
두 서버 모두에서 SSH 키를 생성하고 authorized_keys
파일에 추가합니다.[server1의 공개 키를 server2의 파일에 추가하고, authorized_keys
server2의 공개 키를 server1의 authorized_keys
파일에 추가]
서버 1 구성
줄 시작 부분의 기본 구성을 열고 /etc/lsyncd.conf
주석 처리 한 후 다음 구성을 파일에 추가합니다.--
settings {
logfile = "/var/log/lsyncd/lsyncd.log",
delay = 1
}
sync {
default.rsync,
source="/home/test/public_html/",
target="server2:/home/test/public_html/",
rsync = {
compress = true,
acls = true,
verbose = true,
owner = true,
group = true,
perms = true,
rsh = "/usr/bin/ssh -p 22 -o StrictHostKeyChecking=no"
}
}
target
매개변수에서 대상 IP를 변경하세요.
delay
요구사항에 따라 매개변수를 변경할 수 있습니다 . 1초로 설정되어 있습니다.
이제 로그 디렉터리를 만듭니다.
# mkdir -p /var/log/lsyncd
lsyncd
서비스가 자동으로 시작되도록 합니다 .
# systemctl enable lsyncd.service
서비스를 시작합니다.
# systemctl start lsyncd.service
서버 2 구성
Server1과 동일한 구성을 따르고 IP를 변경하십시오 target
.
이제 동기화가 설정되었습니다.
활동내역을 확인하실 수 있습니다tailf /var/log/lsyncd/lsyncd.log
제안해 주신 Mel Bursland에게 감사드립니다.
답변3
사물을 동기화옵션일 수도 있습니다. 매우 빠르고 전송이 암호화되며 여러 플랫폼에 대한 클라이언트가 있습니다. 변경된 파일을 즉시 동기화하기 위해 "inotify"를 사용합니다.
답변4
이 문제를 해결하려면 클러스터형 파일 시스템 유형 솔루션을 사용해야 합니다. 두 시스템 간의 간단한 동기화로는 실시간 응답을 제공하지 않습니다.