9

我的公司目前在 VPS 服务器上运行一个基于 LAMP 的网站,因此 DB 和 Web 服务器实际上在同一个盒子上。

我们正在开发一个新站点,我们计划将其托管在同一台服务器上(即,我们将在服务器 A 上拥有 foo.com 和 bar.com 的所有内容)。

但是,我们预计流量会增加,并热衷于提高弹性和可扩展性。我建议了一个带有单独数据库服务器的负载平衡架构,即:

                                Internet
                                   ¦
                              Load Balancer
                               /        \
                       ¦ Server A ¦   ¦ Server B ¦
                               \        /
                              ¦ MySQL DB ¦

这是一个明智的做法吗?还是过度设计?将所有内容保存在单个服务器上对我来说是有风险的。虽然在这个阶段我们可能不需要负载平衡,但将数据库与 Web 服务器分离仍然是明智的吗?

我见过几个与此类似的问题,但我不确定它们是否适用于 Apache/MySQL 上下文。当我在 Windows 服务器环境中工作时,他们总是有单独的数据库服务器。

4

2 回答 2

8

是的,拆分数据库和 Web 服务器是个好主意。确实。

主要原因之一是每种技术(Web 服务器、数据库)都会争夺物理资源。例如,假设您还将缓存放在单个服务器上。现在你有一个 Web 服务器、缓存和一个数据库,它们都在争夺 RAM。只能绕道而行。

此外,不同的技术将以不同的速度扩展。一个集群中可能只需要 2-3 台数据库机器和 10 台 Web 服务器。他们有不同的需求,也会有不同的成长。现在咬紧牙关着眼于增长并不是一个坏主意。

至于对单个 MySQL 服务器感到紧张……我认为必须设置一项工作以每晚备份整个数据库。

我还看到生产机器将数据复制到另一个充当热备份的 MySQL 机器。设置起来并不难,但确实需要另一台机器。

于 2013-08-01T16:26:32.510 回答
5

我不同意 ryan1234。

DBMS 和 Web 服务器之间的资源使用模式应该完全不同。

此外,如果您计划增加机器的数量,那么不抓住机会使站点对中断更具弹性是相当愚蠢的。

如果是我,我很可能会使用 2 台机器,它们都运行 web 服务器,都运行 mysql,都提供相同的虚拟主机和数据库上的主-主异步复制(具有将流量引导到数据库的单个节点/单个网络服务器的节点。

是的,如果您需要添加比这更多的硬件来管理容量,那么将 DBMS 分成一个单独的层是一个好主意。但你似乎离那还有很长的路要走。

于 2013-08-01T16:33:56.973 回答