我需要使用 Drupal 内置的多站点功能来整合一个 Drupal 实例,这样我就可以使用一个代码库来管理所有站点,从而节省大量时间并避免麻烦。不过,我们将通过这个单一安装来运行几十个站点,因此我们需要一种高性能的方式来透明地在这些服务器之间共享文件(包括用户上传等)。这是否意味着我们需要一个 SAN 和一堆本地从属数据库?还是我根本不知道我在说什么?
答案1
我对 drupal 不是很了解,但在解决这个问题时,通常可以将事情分为三个数据存储类别。
1.) 数据库 - 这个比较“简单”,因为 mysql 复制是一种成熟的、有据可查的解决方案。复制或 DRBD 可以提供 HA,但要同时利用多台服务器来扩展性能,您的应用程序需要内置功能来在主服务器和从服务器之间拆分读取(选择)和写入(插入/更新/删除)查询。
2.) 文件系统 - 这个比较棘手。“普通”文件系统 (ext3/ntfs) 不是为多主机扩展而设计的,而那些 (gfs/ocfs) 几乎总是比它们的价值更复杂(特别是如果你必须在这里问的话)。最常见的解决方案是基于 NAS 的方法(unix 上的 nfs,windows 上的 cifs),但这会引入单点故障,因此它不是一个可用性解决方案。它通常甚至不是一个性能解决方案,因为您依赖于一个文件服务器的性能。它的主要价值在于提供来自多个主机的一致读写访问。如果您的应用程序存在 CPU 瓶颈,那么 NAS 将帮助您扩展,因为您的服务器将花时间等待 CPU 完成,而不是等待文件加载。
3.) 代码和配置 - 通常在文件系统、数据库或两者中完成。我在这里将其分开,因为与 #1 和 #2 中更面向内容的数据存储相比,它的范围通常要小得多,而且更多的是系统管理员的问题。通常,您只需手动(或脚本化)复制文件即可。
因此,考虑到所有这些,您需要评估 drupal 如何处理这三个类别,以及如何复制它们。您很可能只从 NAS 和负载均衡器开始。您不太可能需要 SAN。
答案2
由于您说它是“单一安装”,所以我不确定 SAN 和从属服务器(最初)进入其中的位置。
您要指定的参数是“文件系统路径”。因此,如果您要在所有站点之间共享该目录,则可能需要创建/指定一个值“sites/all/files”(即每个 Drupal 站点的数据库都将存储此值)。
如果/当您遇到扩展问题并且需要将站点/全部/文件同时共享到每个 Web 节点时,您可以使用(iSCSI)SAN 存储和 OCFS2 等集群文件系统。(即文件成为 OCFS2 文件系统的 SAN 存储的挂载)。
从服务器也一样。用于可伸缩性(从从服务器读取)和/或高可用性(将从服务器提升为主服务器)或从从服务器进行备份,但它实际上并不影响您关于透明共享文件的初始规范。
希望这可以帮助。
干杯