负载均衡 load balancing是一种计算机网络技术,用在多个计算机、网络连接、CPU、磁盘驱动器或其他资源中分配负载,以达到优化资源使用、最大吞吐率、最小响应时间、同时避免过载。
使用带有负载均衡的多个服务组件,取代单一的组件,可以通过冗余来提高可靠性。 负载均衡服务通常是由专用软件和硬件来完成。
负载均衡最重要的一个应用是利用多台服务器提供单一服务,。负载均衡服务主要应用于web站点,高流量下载网站服务和dns服务区。现在负载均衡器也开始支持数据库服务
对于互联网,负载均衡器通常是一个软件程序,这个程序侦听一个外部端口,互联网用户通过这个端口来访问服务,而作为负载均衡器的软件会将用户的请求装发给后台内网服务器,内网服务器将请求的响应传给负载均衡器。负载均衡器再将响应转发给用户。这样就对用户隐藏了内网结构,组织用户直接访问内网服务器,是服务器更加安全。可以阻止对核心网络栈和其他端口服务的攻击。
当所有后台服务器出现故障时,负载均衡器可以提供特殊的服务,例如将互联网用户的请求转发给一台备用负载均衡器。显示一条关于服务终端的信息。负载均衡可以调高IT团队的容错能力。
负载均衡的具体实现方案,DNS轮询
Scheduling算法--当前负载均衡器使用的scheduling算法有各种各样,最简单的事随机选择和轮询,更为高级的负载均衡器会考虑其他更多的因素。如:后台服务器的负载,响应时间,运行状态,活动连接数,地理位置,处理能力,或最近分配的流量。
高性能系统通常选择多层负载均衡,对于一个多层次架构体系,在负载均衡器或网络分发器后面有两种设计,术语称之为 Bowties和Stovepipes。Stovepipe设计中,事务是从顶部分发的,然后从一个固定通道 通过一系列硬件和软件设备,到达最终目的地。如果使用Bowties设计,在每一层中事 务处理有多条路径可供选择。在事务处理的网络结构中可能会是Stovepipes,也可以是 Bowties,或者根据每一层的实际需求采用杂货构架。
负载均衡的持续性问题:
负载均衡器需要处理的一个重要问题是:如何保存用户会话?如果会话信息保存在后台 服务器,用户接下来的请求可能会被分配到不同的后台服务器,此时用户会话就无法继 续。负载均衡器可以缓存用户会话,然后将用户请求分发到不同的后台服务 器。但是 这将带来一个负载均衡器的负载问题。
几种持续性的解决方案和他们的缺点:1.让一个用户会话的所有请求都发送到一个后台服务器。缺点是不能进行failover。2.依据用户名或客户端IP来分配服务器,用户可能是通过DHCP/NAT//WEB代理来连接internet的,所以IP地址可能是经常变化的,所以服务就得不到保障3.随机分配,会话信息有负载均衡器保存,缺点:负载均衡器如果出现故障或者被替换也会导致信息丢失,另外负载均衡器负载较高的时候,为了保证分配表空间不会被耗尽,会将超时的回话信息删除,随机方法要求用户保持会话信息。如果用户禁用cookie,就会引起问题。。通常优秀的负载均衡器会同时使用几种会话保持技术。
另一个方法是讲回话信息保存到一个数据库中,称为状态服务器。集群中所有的服务器将会话信息保存到状态服务器中,同时它们向状态服务器查询会话信息
还有一种更有效的方法就是将回话信息保存在客户端,一般客户端的浏览器都有保存会话信息的功能
负载均衡器的特性:1.不对称负载调节,通过设置权重因子2.优先激活3.SSl截断和加速4.DDOS攻击防护5.http压缩6.TCP offload7.TCP缓冲8后台服务器直接响应用户9.服务器健康检查10.http缓存11.内容过滤12.http安全13.优先队列14.Content-aware switching15.用户授权16.可编程的流量控制17.防火墙功能18.入侵阻止功能
本文整理自维基百科:http://zh.wikipedia.org/wiki/%E8%B4%9F%E8%BD%BD%E5%9D%87%E8%A1%A1_(%E8%AE%A1%E7%AE%97%E6%9C%BA)