我有一个应用程序需要水平扩展以覆盖Web和服务节点(目前它们都在一个),但与同一组数据库和源文件(应用程序代码和自定义资产)交互。 数据库没有问题,它已经在MongoDB中进行复制处理了。
此外,服务器的configuration是相同的(100%的Linux)。 这个问题实际上是关于在机器之间共享一个文件系统,以使其内容总是正确的,而不pipe节点是否访问它。
到目前为止,我的两个想法是NFS和SAN – SAN成本非常昂贵,NFS在第二个节点上看到了有关PHP中的glob()的一些性能问题。
有没有人有build议的策略或其他技术不涉及跨节点分割数据或任何可能导致磁盘寻道时间缓慢的NFS陷阱?
为了给你一个规模的概念,主节点在〜0.01秒内初始化它的应用程序模块。 中学花费了大约2.2秒。 他们是虚拟机在ESXi中的本地虚拟networking中,它们之间的ping时间为〜0.3ms
听起来你正在做一些病态的NFS错误 – 比如把数以万计的文件放在一个目录中或其他东西上。 即使在大型(TB +)数据集上,NFS也可以正常运行,因此可以完成。
但是,你需要一个文件系统吗? 我通常会发现,通过将更多有限的原语展示给您的数据存储,并使用这些原语进行操作,您可以获得更好的性能和封装。 而不是再次完成整个事情,我只是指出你以前的答案,我已经写了所有的细节。
SVN / git签出到单个节点。 Rsync跨节点。 所有节点安装的Samba服务器。 基本上,除了NFS之外,