为LAMP应用程序设置负载平衡群集时应该知道些什么?

我应该说,“我如何build立一个负载均衡的Cluser”。 我不是一个系统pipe理员的任何价值.. apt-getted和百胜安装我的方式来云中的一些堆栈,但没有什么幻想。

现在我遇到了一个Drupal站点的问题,它已经超出了硬件的能力。 防火墙后面有两台服务器,在超高峰时间应用服务器达到90%以上,在同一时间,db / solr服务器很less超过10%(通常是3-4)。 这些是被pipe理的物理硬件。 DB非常重读。

从财务angular度来说,无论如何,即使没有configuration更改,也可以将其转移到云端。

所以我所想象的是负载平衡器运行mod_proxy之间的平衡请求2(我想有奇迹般地增长)的应用程序服务器与nfs同步与一个数据库服务器交谈。

目前应用服务器是DELL PowerEdge 2950 MKIII,内存为32GB,2.5ghz×4。Db与内存的一半相同。 两个都有15000 rpm的raid 1个设置。

所以真的,这似乎是可行的。 前期的负载平衡器似乎不需要任何东西,也许是1GB的图像?

如果用户在会话期间切换服务器,我发现某处可能存在cookie问题,有人可以对此进行说明吗?

任何一般的build议,学习更多的地方等等。记住,我真的只是想敲掉这个,而不是成为一个专家。

谢谢

听起来就像你需要添加另一个networking服务器混合。 你有很多的数据库开销,这是很好的。 这种事情是相当可行的。 你已经有了重点。

  • 多个Web服务器。
  • 数据通过NFS从某个NAS服务器,或最坏的一个Web服务器本身,并由所有的Web服务器装载。
  • 一个负载平衡器(mod_proxy是好的,但nginx可能会更好)被configuration为确保传入的会话是“粘”到一个特定的networking服务器。

获取会话故障转移超出了我的Drupal-ken,但它可能是可行的。 是的,如果您的某个Web服务器由于某种原因重新启动,那么这些用户将不得不重新build立。 对于类似于上面的应用程序,当我们需要做一个有计划的重新启动时,我们configuration我们的负载平衡器(一个硬件负载均衡器,一个F5 BigIP)不允许新的会话,直到所有现有的会话都重新启动networking服务器。

Afaik cookies默认存储在数据库中,所以它们在用户之间自动共享。 只要通过NFS共享你的webroot,几乎所有东西都可以正常工作(如果你在中途切换,一些上传模块可能会起作用)。

也许我错过了你的文章的重点,但是当你的Drupal服务器加载的方式比DB更多的时候,还有其他的错误。

  • 试试enabeling drupal的内置caching系统
  • 安装PHP操作码cacher(APC,eaccelerator,xcache)
  • 尝试使用众多caching模块之一,尽可能将整个页面推送到磁盘

我以这种事为生, 如果你不能解决问题,请告诉我。

最终,故障转移/负载平衡必须在客户端上执行 – 而在链路上进一步提供此function的一些好的理由(以及它在networking层面上隐含的)总是意味着循环的DNS。 当然,对于使用单独的负载平衡器的一些networking服务器来说是过度的。

我对Drupal并不太熟悉 – 但是如果内容全部存储在数据库中,那么您只需要在数据库框中设置一个networking服务器,并为该网站设置循环的DNSlogging,从而有利于Web服务器框。

快速查看Drupal安装说明没有提及可写目录,所以看起来我的假设是正确的。

除了将负载分散到容量可用的位置,您正在消除堆栈中的单点故障之一 – networking服务器 – OTOH添加负载平衡器意味着您正在为堆栈添加另一个 SPOF。