负载平衡的 Drupal 服务器:在服务器之间共享数据的好方法?

负载平衡的 Drupal 服务器:在服务器之间共享数据的好方法?

我正在尝试了解如何创建负载平衡的 Web 服务器设置。设置实际的负载平衡器并添加两个或更多 Web 服务器似乎足够了。但是,我无法决定文件的最佳设置是什么。

Web 服务器将运行 CMS 系统(在本例中为 Drupal)。用户可能会上传与内容相关的文件,并且所有 Web 服务器都应该可以访问这些文件。现在,我考虑简单地指定一个文件服务器,并在每个 Web 服务器上安装一个文件目录,以便各个 Web 服务器可以访问这些“共享”文件。

但是,如果我们谈论 4-5 台服务器,这个解决方案会成为瓶颈吗?我认为安装可以通过 SSH 完成。

非常感谢所有的帮助!

更新(2013 年 1 月 15 日)

我决定使用 Csync2 和 Lsyncd 的组合。然后我设置了两个充当镜像的服务器。Lsyncd 监听某些目录(及其子目录)中的更改并调用 Csync2,后者负责将文件同步到另一台服务器。如果您有兴趣了解更多信息,请查看本教程

答案1

在迁移到 CDN 之前,我有一个由大约 20 台服务器组成的网络农场。我一开始使用 NFS,直到大约 3 年前,我遇到了 Linux 内核的一个错误,导致无法安装卷,并且无法正确进行故障转移。

然后我创建了一个 rsync 脚本,每 5 分钟将目录同步到每个图像服务器。这不是理想的选择,但它确实有效,而且我没有遇到任何问题。

下一步我切换到 lsyncd,它使用 inotify 来监控目录,当文件发生更改时,它会生成一个进程来同步该文件。默认情况下是 rsync。这个解决方案很可靠,如果不是因为 CDN 的经济性,我会继续使用它。

同步:http://code.google.com/p/lsyncd/

希望有所帮助。

答案2

约翰和凯琳五步Drupal 扩展教程对你来说会非常有帮助。

前两个步骤如下:

步骤1:将您的网络服务器与数据库服务器分开。

第2步:设置冗余的Web服务器和负载平衡。

底线:如果没有先进行垂直扩展(将当前驻留在同一服务器上的功能分成不同的层),您将不会想要水平扩展(添加具有相同功能的多个服务器)。

答案3

我曾使用过 glusterfs (http://www.gluster.org/) 在负载平衡的 Web 服务器之间共享文件。我还尝试使用 glusterfs 在服务器之间共享 MySQL 数据库文件,但没有成功 - 我建议按照第一位发帖人的建议将 Web 与数据库服务器分开。

在服务器之间共享文件的其他解决方案是 lustre (http://wiki.lustre.org/index.php/Main_Page),并且根据负载均衡器设置,您还可以使用 lsyncd (http://code.google.com/p/lsyncd/) 在服务器之间同步文件。

答案4

您可以设置高可用性 NFS 共享并将其安装到每个 http 服务器上以提供您的文件。

请查看高可用性 MySQL 集群的教程:http://www.howtoforge.com/loadbalanced_mysql_cluster_debian

相关内容