1

1

我们目前有一台 Web 服务器和一台 DB 服务器来为我们的网站提供服务。一切正常,但随着网站在 Web 服务器上消耗越来越多的 CPU,情况逐渐恶化。我们已经到了需要升级 Web 服务器或将其置于负载平衡器之后的地步。

我打电话给我们的供应商,他们只有一个比我们现有的更强大的 CPU,而且微薄的性能提升无法证明成本的合理性。所以看起来我们需要使用负载平衡器。

我的问题是...我们该如何设置,以及我们需要什么样的硬件才能达到平均 150Mbps、峰值 300Mbps?

我们目前有一台 Web 服务器和一台 DB 服务器。我猜我们需要添加另一台 Web 服务器和一台负载平衡服务器,这样我们的机器总数就达到 4 台了。

LB1-->Web1 | Web2-->DB1

对于相对简单的基础设施来说,这是正确的设置吗?我们是不是最好将 HAProxy 放在 Web1 上,将 HAProxy 放在 Web2 上,然后使用每个 Web 服务器来相互平衡负载,从而省去一台机器?

最后,我们如何在 Web 服务器之间共享 Web 根目录?在共享 NFS 服务器上安装 NFS 是否足够,还是我们需要在机器之间进行某种自动同步?

总结一下:

  1. 假设恒定负载为 150Mbps,峰值为 300Mbps,我们应该为负载均衡器寻找哪种类型的硬件?假设 HAProxy

  2. 机器应该如何组织?我们是否需要专用的机器来进行负载平衡,还是应该在每个 Web 服务器上设置 HAProxy,然后设置指向两个 HAProxy 服务器的 DNS 记录?

  3. NFS 共享是否足以设置文档根目录,或者我们是否需要通过 rsync 或其他方法在节点之间复制数据?

答案1


1

在网络负载方面,显然您需要确保网卡、防火墙、交换机和/或硬件负载平衡器都能够达到 300Mbps 的冗余速度。

除了网络流量之外,您还需要确保您的处理器能够处理传入的会话数量。

如果你已经知道你将有 150-300Mbps 的流量,那么从会话角度看,这如何等同?一个会话需要多少时间才能计算出来?

估计您将拥有的会话数量以及您预期的增长,然后根据这些计算选择处理器。


2

所有选项都有效,只是取决于哪种方式适合您。
您可能不需要专用的负载均衡器,但如果您进行测试并且结果表明并非如此,那么您应该考虑获取物理负载均衡器。

DNS 循环没有什么问题,但我只会在简单配置中使用这种技术,这种配置中不需要在两个服务器之间保留会话,等等。


3

再次强调,两种选择都是有效的。

在服务器之间同步数据将引入对快速可靠复制的依赖,在某些情况下这可能会或可能不会可用。

如果一台服务器同步而另一台服务器不同步,会发生什么情况?网站可能仍能正常工作,但它们的数据会有所不同。您将如何检查这一点?

如果您设置了 NFS,而 NFS 出现故障,服务器将如何处理?本地缓存副本?同样,如果本地缓存副本过期了怎么办?您可以考虑使用集群 NFS 来增加冗余。这完全取决于您的服务有多重要。


最后要说的是,很多时候增加冗余只会让事情变得更加复杂,并且会产生更多的故障点比它所带走的要多。

我希望这有帮助。

相关内容