简单,分散,自动同步,用于Linux服务器的本地caching文件共享

我不知道是否有人可以推荐我一些解决scheme来共享less量的Linux VPS(虚拟专用服务器)之间的文件。

基本上我有一堆Linux VPS来pipe理,我想在他们之间共享文件。 典型的用例是共享数据文件,预编译库或二进制文件等,因此写入频率很低,其中大部分是添加新文件而不是修改已有文件。 通常我使用自己的台式机生成数据并构build二进制文件,并发布到机器上。

要求是:

  1. 简单。 它不一定是为大型集群devise的复杂技术。 我只有less量的机器,比如10-20。
  2. 数据被复制并存储在所有机器上。 VPS彼此不靠近,所以networking连接速度慢,因此所有的数据应该被复制并本地存储在所有的机器上。
  3. 分散。 由于忘记及时付款,机器随时都可能宕机或取下。 所以机器不需要保持与中央服务器的连接,而是彼此交谈。 首先,当一台机器第一次安装时,它知道机器列表,但之后他们应该互相交谈并维护一个可用主机的列表。 我的桌面没有固定的外部IP,因此桌面只能用于推出数据,而不能被这些VPS服务器获取。
  4. 当我从我的桌面发布新的数据时,应该只发送大约一个数据副本,之后应该从对方获取数据。
  5. (可选function,但强烈首选)数据目录显示为一个VFS和安装到某些目录。 这使它更容易使用。

我考虑的一件事是一些由git支持的基于熔丝的文件系统。 在github或code.google.com上有一堆git-fs,但没有一个看起来成熟和可靠。 而且,在每台机器上,仍然需要维护一个可用的机器列表来交谈,这不是自动的,因此是痛苦的。

另一件事是使用某种types的P2P文件共享软件,但有什么使文件组织? 例如,当我发布文件时,我也应该能够指定文件应放置在哪个目录。 这应该是自动完成的,而不是我login到每台机器,并在P2P下载文件后手动移动它们。

对于大多数分布式文件系统,它们是为机器相互靠近的群集而devise的。 对于HDFS,它需要集中的名称节点,所以我不能使用它。

有什么想法吗? 谢谢。

BitTorrent同步听起来像它会做你想做的。

你基本上给它一个文件夹进行同步,无论你放在那个文件夹 – 结构和全部 – 与你使用密钥configuration的任何机器同步。

你甚至可以指定一个只读密钥,所以其他机器不可能影响你的“主”。

机器可以离线很长时间,当他们上线时,他们将连接到其他同伴并拉出差异。

当然,这是免费的。

我只是从DNS名称使用git克隆,例如git clone ssh://mastergit.example.com/vmshared.git ,然后git pull周期性地与cron git pull 。 此DNS名称将是其中一个虚拟机的别名(CNAME)。 当主服务器更改时,只需将此别名更改为另一台计算机。

使用与每个虚拟机相同的SSH密钥进行身份validation,您将拥有:

  • encryption的数据传输作为git通过SSH工作,

  • 轻松切换到不同的主服务器,

  • 从本地副本轻松推送更改(只需按住git push ),

  • 版本控制和容易回滚,如果有什么刹车。