다중 마스터 모드에서 여러 서버 간의 실시간 파일 동기화

다중 마스터 모드에서 여러 서버 간의 실시간 파일 동기화

두 개 이상의 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_keysserver2의 공개 키를 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

이 문제를 해결하려면 클러스터형 파일 시스템 유형 솔루션을 사용해야 합니다. 두 시스템 간의 간단한 동기화로는 실시간 응답을 제공하지 않습니다.

관련 정보