我目前有 2 台 Debian 服务器(4 GB 内存的 VPS),托管着各种重要性不同的网站:一些是生产网站,而另一些是演示/暂存/测试网站。大约有 15-20 个网站,其中一个网站很快就会有相当多的流量。
目前,我将生产站点部署在一台服务器上,将演示/暂存/测试站点部署在另一台服务器上。两台服务器都运行 Apache 和 MySQL。
我已经阅读并了解了将数据库 (MySQL) 与 Web 服务器 (Apache,但可能会切换到 nginx) 分离的大部分好处。我目前没有性能问题,但需要将内容从一台服务器移动到另一台服务器,并且想知道现在是否是重新组织两台服务器上数据的好时机。目前我没有足够的钱来添加额外的服务器。
我的问题是:考虑到生产和演示/登台/测试应用程序之间的分配,是否最好将我的所有网站放在两台服务器中的一台上,而将其相应的数据库放在另一台上,或者我是否最好将生产和非生产应用程序分开(考虑安全/性能因素)?
理想情况下,我会将所有非生产应用程序移至第三台服务器,但目前还不行。
答案1
就我个人而言,我倾向于保持安装原样。(1 个生产服务器和 1 个测试/演示/登台服务器)。我看不出改变它有什么好处。而且我看不出保持原样有什么坏处。您计划使用第三台服务器,这将迫使您更改安装。如果担心数据库性能,请考虑在两台服务器上集群 MySQL。简单的主/从设置工作即可解决问题。这样,您可以将一个或两个节点用于所有选择查询,将另一个节点用于所有编辑(插入、更新等)查询。这样可以分担负载。
答案2
尽管这里已经接受了答案,但我强烈否认这是正确的做法。
除非你有复杂的部署和/或容量测试要求,否则你为什么要花钱购买服务器来托管你的非生产内容?你所需要的只是一个本地虚拟机(在代理上实现带宽、延迟和数据包丢失很简单)。
即使 VP 也会出现故障。如果您想要高可用性,那么两个系统都应该是对称的。假设节点发生故障的概率为 0.01%。那么丢失现有服务的概率为 0.01%。垂直拆分服务(http 和 mysql),则完全丢失服务的概率为 0.01+0.01% - 是原来的两倍。另一方面,使用对称配置,完全丢失服务的概率为 0.01%*0.01% = 0.0000001%,并且您可以获得更高的性能和更大的容量,以及一种轻松实施 A/B 测试的方法。
如何实现 mysql 集群和流量平衡是一个更复杂的问题 - 但无需添加额外的软件/硬件就可以完成。