需要有关运行 Apache+PHP 的网络服务器集群的 R/W 分布式文件系统的建议

Pie*_*rre 6 cluster nfs web-server glusterfs apache-2.2

在过去的几个月里,我一直在努力寻找在多个运行 Apache+PHP 的 Web 服务器(12+)之间共享多个网站内容的最佳方式。我面临的最大挑战之一是,我们需要能够随时读取写入文件系统,无论是好是坏的原因(即应用程序不在我们的控制范围内,通过 Web 界面管理的 wordpress 站点等……)。

以下是我尝试过的一些事情,结果证明:

  • Rsync/duplicity/csync2:每分钟只运行一次,这意味着某些更改不会在集群中以足够快的速度共享以防止出现大问题。
  • inotify/incron:考虑到要监控的大量文件和目录,太复杂了。此外,它在处理新文件时效果不佳。
  • GlusterFS:我们有一个 4 台服务器的 gluster 后端,性能虽然很慢,但还可以接受。不幸的是,在每个 Web 服务器上运行的 gluster 客户端不断崩溃,然后将 4 个文件服务器中的一个冻结了 2 到 15 分钟。我们联系了 Gluster Inc.,让他们的一些工程师帮助我们,但他们无法找出问题所在。我们不得不在使用 3 个月后放弃。

有关我们设置的一般信息:

  • 托管在 Amazon EC2 上
  • 运行 Ubuntu Maverick
  • 运行 Nginx (2) -> Varnish (2) -> Apache (12+)
  • .htaccess 被禁用以获得最佳性能。我们将指令直接添加到站点配置文件中
  • 我们运行的大多数网站/应用程序都不是我们的,不幸的是,只读环境是不可能的
  • 考虑到这些 Web 服务器正在处理的任务,具有自动故障转移的高可用性对我们来说非常重要

所以我认为这涵盖了一切:)。提前感谢您的时间和回复。

cag*_*nut 4

这里的“最差”(TM) 选项是 NFS。我知道这很难下咽。我尝试用 rsync 避免它,我尝试用 GFS 避免它,我尝试用 incron/inotify 避免它。我试图通过敦促开发人员停止使用文件系统作为数据存储来避免这种情况。最终我们确实没有比 NFS 更好的选择了。并不是因为 NFS 很好,正如您所说的 HA 部分很粗糙,而是因为确实没有更好的选择。