我的网站目前运行在专用网络服务器(使用 LiteSpeed)和专用 MySQL 数据库服务器上。这是一个基于下载的网站,拥有大量用户生成的内容,可以流式传输和下载,还有数千个缩略图和静态内容。
我处于网络服务器无法再处理大量流量的阶段,因此,考虑到大量可下载内容,我正在寻找如何最好地增加容量。
我的主机建议在第二个 Web 服务器上镜像所有内容,并使用 DNS Made Easy 在它们之间分配负载,或者在两个 Web 服务器前面安装我自己的负载平衡器(使用 ldirector)。
有人能建议上述方法是否是最佳选择吗?有人有使用 DNS Made Easy 和/或 ldirector 的经验吗?
我将非常感激您的帮助。
答案1
首先,您必须了解瓶颈在哪里,然后才能取得任何进展。
主机很快就会推荐新硬件,但在很多情况下,除非您明确存在硬件限制,否则新硬件可能不会带来显着的改进。
如果做得不够明智,添加硬件的回报就会减少。从一台服务器增加到两台服务器可能会使您的资源翻倍,但您需要从 2 台增加到 4 台,再从 4 台增加到 8 台才能获得同样的收益。
监控和测量
如果您没有监控系统指标、加载时间和其他数据,那么这是第一个开始的地方。Munin 和 systat 等免费工具非常适合服务器解决方案。http://Browsermob.com和http://webpagetest.org可以为您提供以用户为中心的指标。
路段交通
通常,将复杂的媒体网站直接移植到另一台服务器并不是很有效。通过分段流量,您往往可以获得更好的投资回报。
例如,我们有一个客户,他有一个非常繁忙的 Flash 游戏网站(每天有数百万次点击)。我们将 Flash 游戏卸载到运行 Nginx 的廉价服务器池中。这些系统每月产生 TB 的流量。这些都是入门级设备,它们提供的都是静态内容。
现在从成本方面来看,这两个入口箱加起来比主服务器便宜 20%。我们的容量提高了 4 倍多。如果我们只是克隆主服务器并进行负载平衡,我怀疑改进最多会是 1.5-1.8 倍。
简而言之,花些精力去了解性能问题的本质可以为你节省很多钱。
DNS 变得简单
这是一个 DNS 解决方案,并没有真正解决负载平衡问题。他们可能在谈论循环 DNS。不太确定为什么在这个阶段将其纳入考虑范围。
导演
这是用于管理 LVS 集群中节点的工具。再次不确定为什么会建议使用这个特定项目。通常我们只使用负载平衡器(硬件或类似 Nginx/HA-Proxy 的东西)并将流量路由到适当的后端服务器。
答案2
基于 DNS 的负载平衡并不好,原因如下:
- 您可以控制服务器的访问方式,并且不能在两个服务器之间以不同的方式或均匀的方式分配流量。
- 更重要的是,这种负载平衡方式无法识别服务器故障。因此,如果其中一台服务器意外发生故障,您将丢失部分流量。
- DNS 缓存使情况变得更加糟糕。
我更喜欢使用更智能的负载平衡技术,例如ldirector
或haproxy
。这种类型的负载平衡使您能够根据服务器规格并使用多种因素(负载、连接数等)分配流量。
还有一件重要的事情需要注意。您说服务器上有一个 mysql DB 和用户内容。如果您要在两台服务器之间分配流量,则需要在两台服务器之间建立同步机制。否则,用户每次访问不同的服务器时都不会看到相同的数据。