我目前正在尝试为基于Drupal的Web应用程序devise一个可水平扩展的集群,它看起来像下面的彩色图表:
负载平衡器实现粘性会话,所以一旦用户被分配了服务器,用户就可以保持状态。
每个应用服务器都有以下几点
这两个mysql数据库服务器在一个共享的IP上,它们在一个DRBD的HA集群中,并且听起来很不错,所以丢失的不会造成整个平台的崩溃。

有几件事我不确定,我会感激你的意见:
我正在考虑使用NFS在每个应用程序服务器上安装一个共享文件目录,因此一次上传的文件在所有这些文件上都可用。 我正在考虑NFS,因为它已经存在很久了,而且我没有使用MogileFS或GlusterFS的经验,这是我们之前使用过的,所以我们对它更加熟悉。
有没有任何的指导方针来解决多less个服务器是明智的共享一个通过NFS这样的目录?
这里的一个问题是NFS服务器是单点故障。
我们已经在Mysql服务器上使用了Heartbeat和DRBD,而且我希望尽可能降低堆栈中涉及的技术数量 – 如果我要对文件使用相同的HA策略,那么会出现什么问题服务器呢?
这是一个面向内部的网站,有限的用户偶尔会在短时间内使用网站,而内部的计划正在进行。 所以这不需要像一些启动一样无限地扩展。
鉴于
我也在考虑让这两个Web服务器更加强大,以便它们能够处理它们之间的高峰负载,并在cron作业上设置两者之间的一致或rsync,以便:
这听起来像是一个可能的方式来解决任何可能的NFS / DRBD HA复杂性头痛?
谢谢,
C
NFS服务器将至less具有与MySQL服务器相同的configuration,因为它们具有基本相同的function和限制(两者都是写入数据的地方)。 我不喜欢多个作者使用NFS的想法,这使得pipe理文件locking变得非常复杂,而且我的经验在这一点上并不是很好。
我的build议是集中所有的写入应用程序服务器(也许有一个应用程序服务器专门写在NFS服务器上)和多个读取器应用程序服务器挂载它只读(我知道,Drupal有一些dynamic缩略图,需要写出来,但是你可以把它保留在RO fs上)。 您至less需要第二台NFS服务器(如果没有像SAN这样的共享存储,则使用DRBD是最佳select)来确保HA。
最后,看看Gluster和其他分布式系统。
你可以试试mogileFS。 我曾经使用过我们的一个项目。 它易于使用和configuration,可以扩展,没有单点故障。
最好的方法是find一个好的存储解决scheme。 根据应用的规模和types,你可以使用一个优秀的NAS,支持NFS和至less两个千兆端口和电源(查看一些企业解决scheme)。
如果您真的对应用程序非常认真,最好的select是检查一些SAN解决scheme,但这可能会非常昂贵,因为它需要特殊的硬件(可以使用现成的硬件,但可能太慢)。