Linux 主机之间共享文件系统?

Linux 主机之间共享文件系统?

我正在运行一个大量使用用户上传文件的网站。这些文件只有在 Django 应用程序进行权限检查后才会提供给用户。

现在我需要水平扩展并启动另一个 Web 服务器实例。它需要能够访问包含上传文件的相同目录结构。我可能需要的是一些分布式文件系统。

我一直在思考:

  1. NFS— 15 年前我就这么做了,但即便如此,我也觉得这个标准已经过时了。虽然它很强大且易于设置,但缺乏传输加密以及需要在服务器之间同步 UID/GID 带来的问题比它解决的问题还多。
  2. 定期同步— 听起来像是一种肮脏的黑客行为,可能会导致不同步问题。并且占用 N 台服务器的 N 倍存储大小。
  3. SSHFS— 好吧,如果它具有与 scp 相同的性能,我实际上不想听到它。
  4. LustreFS格鲁斯特或其他 DFS — 从未使用过这些,也不知道哪个适合我的需求。冗余并不重要(我们经常备份),但我希望服务器之间的流量加密。

你会推荐什么?

答案1

这实际上取决于您想要扩展的程度、您寻求的解决方案的复杂程度以及您的服务器之间的距离(ping 方面)。

NFS 可能是完成这项工作的最佳工具 - 您可以将其与 puppet/chef/cfengine 等结合使用,以确保目录同步。您可以使用 OpenVPN 或同等工具来传输动态数据。大多数 NAS 系统都会这样做 - 如果建立在具有适当 NICS 的 RAID 之上,这是一个相对简单、强大且易于理解的模型。

其他考虑因素 -

Gluster 可能是一个不错的解决方案,但测试不够充分。我尝试过它,但一直不太舒服。

如果您只需要在直接连接的网络上使用 2 个(或 3 个)节点,请查看 DRBD(一种模式)。如果距离较长且有主/后备节点,则可以使用 MARS(有点像 drbd-proxy)

您可能还想检查并确保 ZFS 不是适合您的工具(例如使用 ZFS+复制)——我怀疑这不会提供双重写入,而且我从来没有太多运气。

根据您的特定用例,如果您在 VM 级别运行,您可以查看 iSCSI,但可能不是您想要的。

根据内容,可能可以将所有内容放入数据库中并使用数据库复制。您可能能够修改软件或使用 FUSE 挂载的数据库文件系统。

相关内容