大型 Drupal 站点的服务器场设置

cee*_*yoz 6 drupal web-farm

我正在建立一个大型 Drupal (Pressflow) 站点,这是我目前的计划。我有没有做过什么明显愚蠢的事情?有没有人有过像这样托管大型多服务器 Drupal 安装的经验?

基础设施

Tom*_*nor 6

我很想在 HAProxy 后面有一对 varnish 节点来提供 HA Varnish 集群。

您可以轻松地单独拥有 2 个以上的 varnish 节点,而无需 HAProxy,但是您只能对 HTTP 流量进行负载平衡。至少对于 HAProxy,您也有一个 TCP 负载平衡器。

您建议您的网络边缘是什么样的?您是否计划拥有一对 HA 硬件防火墙?您是否需要边缘路由、BGP 和多个传输?

另一件要考虑的事情是文件服务器的工作方式。您可能会受益于拥有一对文件服务器,使用 GlusterFS 或 MogileFS 之类的存储服务器。这样您就可以确保整个基础架构的冗余。

添加多个 Memcached 节点也很简单,可为您提供更多冗余和弹性,以应对流量高峰和硬件故障。

确保您采取措施优化您的前端内容交付,尤其是在您预计会有高流量的情况下。将所有媒体保存在媒体域中,最好是无 cookie 的,例如http://blog.stackoverflow.com/2009/08/a-few-speed-improvements/使用 sstatic.net

您可能还想考虑使用 CDN 来缓存静态内容,例如 CSS 和不变的 JS。这种多级缓存基础设施将消除斜线效应,并为您提供更大的故障恢复能力。这是因为如此大比例的浏览器请求是针对静态内容的,可以从离请求者最近的 CDN 的 PoP 有效地提供这些内容。在多个层(浏览器、CDN、Varnish、Memcache)上缓存的另一个优点是一段时间后,所有内容都会在多个地方多次缓存。这使您能够抵御失败。

大型 Drupal 站点与大型任何站点实际上没有什么不同。只需确保您在网络的每一层上都有多个级别的冗余。

至于实际服务器的规格,您可能需要在 varnish 节点上拥有 >8G 的内存。

我建议在负载平衡器盒上使用 Intel 服务器 NIC,并为您的网络核心推荐 Cisco 或 HP Procurve 交换机。

您的数据库节点应该是具有 15k SAS 磁盘的快速多处理器服务器以提高速度。为了冗余,将 4 个以上的磁盘放在 RAID10 阵列中。

我不建议在共享托管环境中执行此操作。专用服务器可能没问题,但请注意,我会在运营商中立数据中心指定一个 1/4 机架。这样,您就可以在服务器的实际配置和管理方面获得最大的自由。

添加:

你绝对需要运行apache吗?

对于在 cookieless 域上托管媒体文件的服务器,您最好从重量较轻的 HTTP 服务器托管这些文件,Nginx 是一个很好的解决方案。Apache 可能更适合托管 Drupal 本身,但没有真正的理由不能使用例如 Nginx 和 FastCGI。