![高负载网站。如何实现负载平衡?](https://linux22.com/image/645811/%E9%AB%98%E8%B4%9F%E8%BD%BD%E7%BD%91%E7%AB%99%E3%80%82%E5%A6%82%E4%BD%95%E5%AE%9E%E7%8E%B0%E8%B4%9F%E8%BD%BD%E5%B9%B3%E8%A1%A1%EF%BC%9F.png)
我有以下问题:我有两台服务器(英特尔至强 3,4 GHZ,配备 32GB RAM 和 RAID 10(4x1TB 企业硬盘)。
所有服务器都安装有vmware esxi 5.5(免费)。webserver、dbserver都是虚拟机。
第一个是使用最新 debian x64 和 apache 2 的 Web 服务器。负载:50% 第二个服务器是使用最新 debian x64 的 mysql 数据库服务器。负载:95%
所以现在我已经订购了两台新服务器(我想我会在星期五收到服务器)。
所有四台服务器均通过 1 GB 局域网进行内部连接。
当前网站是: - 一个带有 drupal 和一个 ioncube 应用程序的普通网站 - 带有一个 mysql 数据库
所以我必须设置一个负载平衡集群,对吗?
所以专家:您是否有一些关于如何正确设置集群的信息或教程?
该项目于 2013 年启动,但现在网站流量非常大,...
非常感谢!
很多问候 mk
答案1
这里发生了很多事情。在性能调优的一般类别中,该过程有多个级别/步骤。您似乎先跳到了最后一步。通常,我在工作中采用以下方法:
- 用户体验与硬件统计数据。
第一条规则:如果网站对最终用户来说运行良好,后端统计信息就无关紧要。它们对于容量规划很有用,但如果服务器的 CPU 占用率为 100%,而网站运行良好,那么从技术上讲,您没有性能问题。您有“没有多余的容量,如果出现问题,您就会有麻烦”之类的问题,但目前不是问题。
相反,如果服务器基本上处于空闲状态,但网站速度很慢,那么服务器空闲的事实就无关紧要了——仍然存在一些非最优的情况。
- 应用程序堆栈中的不同层。
这里似乎有两层:Web 服务器层和数据库服务器层。例如,如果您的数据库服务器存在性能问题,则负载平衡 Web 服务器将无济于事。
- 优化各个层。
您需要确保每个层都配置得当,以满足需要。在这种情况下,第一个发帖人对磁盘性能的评论可能是正确的。磁盘空间不足以选择存储配置,通常 IOPS 或吞吐量是最重要的部分。此外,在 SATA 与 SAS 的情况下,您需要使用 SAS 磁盘,因为存储接口支持更多同时连接。
对于 Drupal 这样的 CMS,您几乎肯定会使用数据库来处理所有事情,在这种情况下,您可能需要更多的物理磁盘才能获得所需的速度。不幸的是,具体情况取决于许多变量,包括您的网站主要是读取、主要是写入还是两者兼而有之,以及请求中传输了多少数据(如果每个人都获得相同的首页,那就是一次传输,内容可能会被缓存;如果每个人都登录并获取单独的内容,数据访问将无处不在)。您应该从尽可能优化数据库服务器开始,这将需要查看特定于数据库软件和硬件的文档。
在某些情况下,优化 Web 服务器层可能会有所帮助。根据我在这里看到的情况,这可能不是您的问题。(从技术上讲,即使调整“Web 服务器”层也有多个地方需要优化 - 例如,您是否在它前面放置了代理、分离了静态内容,诸如此类。但我认为您现在还不需要担心这一点。)
- 优化整体环境。
调整完每个元素后,就可以考虑负载平衡之类的问题了。在拥有数十台服务器的情况下,使用负载平衡来更好地共享资源是一种可行的方法。在服务器数量较少的情况下(这里似乎是这种情况),最好将负载平衡视为一种严格的故障转移/可用性措施,而不是用来弥补性能问题的方法。
因此,基本上,您需要从数据开始调整堆栈。您从该过程中获得的信息可能会指导您确定如何或是否实施特定的负载平衡解决方案。