공유 원격 리소스에 대한 액세스 동기화

공유 원격 리소스에 대한 액세스 동기화

여러 클라이언트가 읽고 쓰는 원격 서버에 공유 캐시가 있으므로 이 캐시에 대한 액세스를 동기화해야 합니다. 내 생각에 난 할 수있어:

  1. 원격으로 SSH를 통해 서버에 클러스터를 가져옵니다.
  2. 서버에 업데이트 푸시(rsync)
  3. 무리를 풀어주다

Flock 자체는 작동하지만 모든 것이 작동하려면 클라이언트에서 캐시를 업데이트하는 동안 잠금을 획득하고 보유할 수 있는 프로세스를 원격으로 시작하는 방법이 필요합니다. 그런 다음 클라이언트와의 연결이 끊어지면 3에서 클라이언트에서 클러스터를 해제해야 합니다. 이를 달성하는 방법에 대한 아이디어가 있습니까?

참고: 현재 설정에서는 서버가 클라이언트에 연결하고 SSH를 통해 업데이트를 "가져오는" 것이 불가능하므로 원격으로 실행되는 단일 스크립트에서 모든 것을 처리할 수 있습니다.

답변1

내 솔루션을 공유하겠습니다.

rsync -r --rsync-path="flock $dst/lockfile rsync" $src/ $server:$dst

따라서 rsync 서버를 시작하기 전에 --rsync-path를 사용하여 원격 잠금을 얻습니다. 여러 클라이언트가 이 작업을 동시에 수행하는 경우 rsync를 수행하기 전에 파일 잠금을 사용할 수 있을 때까지 기다려야 합니다.

관련 정보