需要针对运行 Apache+PHP 的 Web 服务器集群的 R/W 分布式文件系统提出建议

需要针对运行 Apache+PHP 的 Web 服务器集群的 R/W 分布式文件系统提出建议

在过去的几个月里,我一直在尝试寻找在多个运行 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 服务器正在处理的任务,具有自动故障转移功能的高可用性对我们来说非常重要

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

答案1

这里的“最不坏”(TM) 选项是 NFS。我知道这很难接受。我尝试使用 rsync 来避免它,我尝试使用 GFS 来避免它,我尝试使用 incron/inotify 来避免它。我尝试通过推动开发人员停止使用文件系统作为数据存储来避免它。最终,我们真的没有比 NFS 更好的选择。不是因为 NFS 很好,正如你所说,它的 HA 部分很粗糙,而是因为真的没有更好的选择。

答案2

从技术上讲,它仍处于“测试阶段”,但我认为 Bittorrent Sync 非常适合您。我没有这样的环境(多个 Web 服务器),所以自己没有尝试过,但听说其他人也这样做,并且非常高兴。我确实将它用于分布式服务器备份,从技术角度来看,这是一种类似的用途:http://wandin.net/dotclear/index.php?post/2013/07/17/Distributed-server-backups-with-btsync

http://labs.bittorrent.com/experiments/sync.html

答案3

旧的 NFS+DRBD 有什么问题(假设是在 Linux 上)?

相关内容