我需要为 Linux 环境中集群中的多个应用服务器节点提供共享存储。换句话说,集群中的每个节点都需要能够将文件读取/写入同一网络段中的单个集中位置(NAS 设备)。请注意,文件是二进制文件,不需要版本控制(cvs 会有点过头),并且不打算存储在数据库中 - 只存储在文件系统中。
我已将选择范围缩小至以下几点:
- 使用 ftp/ftps/ftpfs 将文件传输到 NAS 或从 NAS 传输文件。每个节点都可以访问 ftp 客户端,并且必须设置 ftp 服务器
- 在 NAS 中共享一个目录,在每个节点中挂载对该目录的引用,并使用 NFS/SMB 等协议执行实际的文件传输
对于这种情况,最佳做法是什么?最快的选择是什么?您能想到任何注意事项或问题(关于可用性、并发性、安全性、性能、所需配置等)吗?如果您能提供任何建议,我们将不胜感激。
答案1
您需要一个中心位置来保存文件,以便多个工作站可以使用该系统中的文件。
您需要设置一个服务器来保存文件,然后将其共享。
如果您在文件服务器上使用 Linux,则可以使用 NFS,或者可以设置 SAMBA,然后从中创建和挂载文件共享。
或者您可以设置 sshfs 并使用 FUSE 来挂载远程目录。
除了选择适合您环境的存储连接选项之外,没有最佳做法;如果全部都是 Linux,那么 NFS 就可以正常工作。或者运行 NFS 和 SAMBA。没有人说你不能同时运行两者。而且你必须考虑如何进行身份验证以及文件需要什么样的安全性。
并发问题?那么,您如何使用这些文件?该应用程序是否会与另一台服务器的应用程序同时尝试读取和写入?这不是文件共享协议的问题,而是软件架构的问题。
安全性?您需要什么样的安全性?NTFS 的细粒度 ACL?端到端网络加密?标准 POSIX?您没有说您需要什么。
性能?它们都应该足够好用……好吧,你不说。你需要什么样的性能?你将运行什么样的磁盘子系统?千兆以太网?带有大缓存的专用 RAID 控制器?你要组合 NIC 吗?什么样的 NIC?即使一个糟糕的磁盘子系统在你不强迫它的情况下也能工作,而一个快速的磁盘子系统在同时向全速运行的 25 台服务器提供数据时可能会阻塞。
你所说的可用性是什么意思?这又是一个架构问题,取决于你的应用程序。如果你可以集群存储,那么可用性就会更高。如果你只是考虑 RAID,那么在电源坏掉之前,一切都很好。除非你有双电源。然后它会坏掉,因为你把它们放在同一个 UPS 上。或者主板出现故障。或者你的一个 RAID 控制器坏了。你有多少冗余需要? 预算是多少?
要回答给出的问题,请设置 SAMBA 和 NFS,然后查看哪一个可以最轻松地安装到您的工作站并使用它。
答案2
我认为最常见的做法是设置一个简单的文件共享。Windows 2003 和 2008 在小型企业中非常常见。如果您熟悉 Linux,您可以尝试使用 Zentyal 或 Clearos 等带有 GUI 界面的软件通过 SMB/NFS 进行共享。您也可以安装任何 Linux 发行版并按照发行版的文档设置各种受支持的文件共享方法。
答案3
我会用openssh 服务器和SSHFS。您可以在所有服务器上使用单个命令进行设置,自动挂载它,并使用密钥进行身份验证。但是,如果人们编辑相同的文件,您将遇到版本问题。