你知道大型网站是如何做负载均衡的吗:大型网站负载均衡解决方法

发表于:2014-06-26来源:未知作者:未知点击数: 标签:负载均衡
负载均衡是一个大型网站发展必须解决的问题,目前公司的网站就面临这样的问题。在国内,已经有 新浪博客、新浪播客、网易新闻、六间房、56.com、Discuz!、水木社区、豆瓣、YUPOO、海

负载均衡是一个大型网站发展必须解决的问题,目前公司的网站就面临这样的问题。在国内,已经有 新浪博客、新浪播客、网易新闻、六间房、56.com、Discuz!、水木社区、豆瓣、YUPOO、海内、迅雷在线 等多家网站使用 Nginx 作为Web服务器或反向代理服务器。下面两张图介绍了实现的大概思路,分为硬实现和软实现。

方法一、NetScaler负载均衡交换机动静分离系统架构图(硬实现)

方法二、Nginx反向代理负载均衡器动静分离系统架构图(软实现)

背景

假设您已经决定在设计或修改基础结构层时使用群集,以便在能够适应不断变化的要求的同时保持良好的性能

问题

在保持可接受的性能级别的同时,如何设计一个可适应负载变化的、可伸缩的基础结构层?

影响因素

在设计可伸缩的基础结构层时,请考虑下列影响因素:

•对于任何指定的应用程序来说,单独的服务器会受到最大负载容量的限制。例如,如果单台服务器将 Web 页作为基于 Web 的应用程序的一部分提供给用户,而且用户或事务负载增加并超过了服务器的限制,则应用程序性能将降至预期值以下,在最坏的情况下还会变得不可用。

•单独的服务器具有最大物理性能限制,包括总线速度、内存量、处理器数和任一服务器可以使用的外围设备数等限制。例如,如果服务器只能容纳四个处理器,则不能为了提高性能而添加第五个处理器。

•某些应用程序对于可以使用的 CPU 数有限制。

•服务器作为单独的实体,在解决方案中是故障单点。如果只有一台服务器负责在应用程序内传递组件的功能,则它的故障会导致应用程序运行失败。

•添加服务器会增加管理和监视服务器硬件及其关联软件的复杂性。

解决方案

将服务或应用程序 安装到多台服务器上,并将这些服务器配置为共享工作负荷。这种类型的配置就是 Load-Balanced Cluster。负载平衡通过将客户端请求分散在多台服务器上,从而提高了基于服务器的程序(如 Web 服务器)的性能。负载平衡技术(通常称为"负载平衡器")可以接收传入请求,并根据需要将它们重定向到特定主机。有负载平衡功能的主机能够同时响应不同客 户端请求,甚至是来自同一客户端的多个请求。例如,Web 浏览器有可能从群集中的不同主机获得单个 Web 页所包含的多个图像。这就分散了负载,加快了处理速度,并缩短了对客户端的响应时间。

负载平衡器使用不同的算法控制通信流量。这些算法用于以智能方式分散负载,并/或最大限度地利用群集内的所有服务器。这些算法中的一部分示例包括:

•循环法。循环算法将负载均衡地分配给每台服务器,而不考虑当前的连接数或响应时间。循环法适合于群集中的服务器具有相同处理能力的情况;否则,一些服务器收到的请求可能会超过它们的处理能力,而其他服务器的处理能力则有富余。

•加权循环法。加权循环算法适合于每台服务器具有不同处理能力的情况。管理员将性能权值手动分配给每台服务器,而且按照服务器权值自动生成调度序列。然后,系统按照循环调度序列将请求定向到不同的服务器。

•最少连接。最少连接算法根据群集中哪台服务器当前正在处理的连接数最少,从而将请求发送给该服务器。

•基于负载。基于负载算法先判断群集中哪台服务器当前的负载最低,然后将请求发送给该服务器。

此外,一些负载平衡器还具有故障检测功能。平衡器可以跟踪服务器或在服务器上运行的应用程序,并在出现服务器故障后停止向该服务器发送请求。图 1 显示负载平衡的基本组件。

图 1:负载平衡组件

当负载平衡器收到来自客户端的请求时,群集组中的一台服务器将处理该请求。每台服务器都能够独立地处理请求。如果任 何服务器因出现错误或正在维护而不可用,其他服务器仍然可以为请求提供服务而不会受到影响。因此,服务的总体可用性比由单台服务器处理所有请求的方案要高 得多。但是,如果在一组软件负载平衡服务器前面使用单个物理负载平衡器或单个网络交换机,将会引入另一个故障单点。可以使用冗余负载平衡设备和/或交换机 来减少这类风险。

原文转自:http://blog.sina.com.cn/s/blog_c34954a30101tkhl.html