Mik*_*ike 4 cloud cluster filesystems glusterfs
寻找一些意见,如果有人用他们有信心的解决方案克服了这个问题。
希望建立一个容错的网络环境。所以设置是负载均衡器后面的几个节点。现在 Web 开发人员可以通过 ssh 连接到 1 个服务器来编辑代码等。
我正在考虑 glusterfs,但将 glusterfs 文件系统作为文档根目录会导致网络服务器可以提供的页面减少约 20-30%。我期待这一点,因为我只通过以太网而不是 infiband 之类的。
所以我在考虑使用 glusterfs+inotify。所以我有一个 inotify 脚本正在运行,它监视 docroot 和 gluster 挂载的变化,并在被更改的文件/目录上执行 rsync。这种方式 apache 可以从本地磁盘而不是 gluster 提供服务,但它提供了通过集群文件系统提供服务的效果。
我唯一的问题是我需要运行 2 个 inotify 脚本,并且对于我们正在运行的文件计数,以添加我将使用大约 700 兆内存的所有 inotify 观察程序。
所以有人有任何建议或指示吗?
谢谢!
编辑
把它想象成一个虚拟主机。客户端通过 ssh 连接到 1 个服务器,但他们创建/编辑/删除的文件在所有其他节点上
反之亦然。如果网络服务器创建文件,它们也需要在所有节点上。
所以这会抛出一个直接的 rsync,因为它太慢了。
阅读@Zypher 的评论。一遍又一遍地阅读,直到您理解这些话的智慧,看到光明,并将您的开发人员赶出您的生产服务器并进入适当的沙箱。
你可以借用我的尖棒。:-)
从这个角度重新定义你的问题,“我如何保持我的网络服务器上的代码一致?”。
答案:puppet(或Chef)、radmind或许多出色的配置/部署系统中的任何一个。
这些工具为您提供了一种更简单的方法来实现您的目标,占用更少的 RAM/CPU,并且可以进行设置以保证所有节点之间的一致性。
根据对原始问题的编辑撤回了这部分答案
我能想到的只有一种解决方案,那就是 SAN(或通过 NFS 提供文件的 NAS 设备)。
我建议这条路线的原因是您需要让每个服务器创建的文件可供所有其他服务器使用。进行大规模的 N 路同步将变得笨拙和缓慢。集中到 SAN 将提供更好的性能、良好的冗余(如果您不便宜的话,SAN 是非常可靠的),以及随着您的需求增加而轻松扩展的能力。
它并非没有缺点:除非您使用冗余结构建立一对镜像的冗余 SAN,否则您将引入单点故障。SAN 也不便宜,冗余只会增加更多费用。
请注意,这些都不能排除让开发人员远离生产盒的需要,除非您保证他们在破坏某些东西时永远不会打电话给您。至少你应该强烈建议他们从你那里租一个开发环境(显然是合理的利润 - 有助于支付 SAN 的成本......)