我在远程服务器上有一个共享缓存,多个客户端正在读取和写入该缓存,因此我需要同步对此缓存的访问。我想我可以:
- 通过 SSH 进入远程并获取服务器上的集群
- 将更新推送到服务器(rsync)
- 释放羊群
羊群本身正在工作,但为了使整个事情正常工作,我需要一种在远程启动进程的方法,该进程可以在我从客户端更新缓存时获取并保持锁定。然后,如果与客户端的连接丢失,则应在 3. 中从客户端释放该集群。关于如何实现这一目标有什么想法吗?
顺便说一句:在我当前的设置中,服务器不可能连接到客户端并通过 SSH“拉取”更新,从而允许在远程执行的单个脚本中处理所有内容。
答案1
我想我只想分享我的解决方案:
rsync -r --rsync-path="flock $dst/lockfile rsync" $src/ $server:$dst
因此,在启动 rsync 服务器之前,我使用 --rsync-path 获取远程锁。如果多个客户端同时执行此操作,则它们必须等待文件锁可用才能进行 rsync。