简单、分散、自动同步、本地缓存的 Linux 服务器文件共享

简单、分散、自动同步、本地缓存的 Linux 服务器文件共享

我想知道是否有人可以推荐一些在少量 Linux VPS(虚拟专用服务器)之间共享文件的解决方案。

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

要求如下:

  1. 简单。它不需要是为大型集群设计的复杂技术。我只有少量机器,比如 10-20 台。
  2. 数据被复制并存储在所有机器上。VPS 彼此距离不近,网络连接较慢,因此所有数据应被复制并本地存储在所有机器上。
  3. 去中心化。由于我忘记及时付款,机器随时可能停机或被移除。因此,机器不需要与集中式服务器保持连接,而是相互通信。当然,当机器首次设置时,它会知道机器列表,但此后它们应该只是相互通信并维护可用主机列表。我的桌面没有固定的外部 IP,因此桌面应该只用于推送数据,而不是由那些 VPS 服务器获取。
  4. 当我从我的桌面发布新数据时,它应该只发送大约一份数据副本,然后机器应该相互获取。
  5. (可选功能,但强烈建议拥有)数据目录显示为 vfs 并挂载到某个目录。这使得它使用起来更加容易。

我考虑过的一个东西是一些由 git 支持的基于 fuse 的文件系统。github 或 code.google.com 上有很多 git-fs,但它们看起来都不成熟、不可靠。此外,在每台机器上,它仍然需要维护一个可与之通信的机器列表,这不是自动的,因此很麻烦。

另一种方法是使用某种 P2P 文件共享软件,但有没有可以让文件井然有序的软件?例如,当我发布文件时,我还应该能够指定文件应放在哪些目录中。这应该自动完成,而不是我在 P2P 下载文件后登录到每台机器并手动移动它们。

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

有什么想法吗?谢谢。

答案1

BitTorrent Sync 听起来好像能满足您的要求。

您基本上给它一个文件夹进行同步,并且您放入该文件夹中的任何内容(结构和所有内容)都会与您使用密钥配置的任何机器同步。

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

机器可以离线任意长时间,当它们上线时,它们将连接到其他对等体并提取任何差异。

当然,它是免费的。

答案2

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

对每个虚拟机使用相同的 SSH 密钥进行身份验证,您将获得:

  • 加密数据传输,因为 git 通过 SSH 工作,

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

  • 轻松从本地副本推送更改(简单git push),

  • 如果出现问题,版本控制和轻松回滚。

相关内容