负载均衡(load balancing)介绍

此文章主要分析以下内容 负载均衡(load balancing):

  • 负载均衡用处
  • 如何负载均衡
  • 有哪些负载均衡的项目

1. 负载均衡用处

解决资源中的负载分配,以打到资源利用率最大. 这些资源包括计算机,网络链接,CPU,磁盘驱动器. 主要用于解决高并发高可用.

2. 如何负载均衡

负载均衡有硬件软件两种实现方式,

2.1 负载均衡框架

对于互联网服务,负载平衡器通常是一个软件程序,这个程序侦听一个外部端口,互联网用户可以通过这个端口来访问服务,而作为负载平衡器的软件会将用户的请求转发给后台内网服务器,内网服务器将请求的响应返回给负载平衡器,负载平衡器再将响应发送到用户,这样就向互联网用户隐藏了内网结构,阻止了用户直接访问后台(内网)服务器,使得服务器更加安全,可以阻止对核心网络栈和运行在其它端口服务的攻击
负载均衡(load balancing)介绍_第1张图片
多层架构体系,负载均衡器或者网络分发器后面有两种设计:

  • Bowties (领结)
    如果使用Bowties设计,在每一层中事务处理有多条路径可供选择
  • Stovepipe (烟囱)
    事务是从顶部分发的,然后从一个固定通道通过一系列硬件和软件设备,到达最终目的地

在事务处理的网络结构中可能会是Stovepipes,也可以是Bowties,或者根据每一层的实际需求采用杂货构架。

这两种设计的比喻还比较形象

  • 相比而言烟囱固定好通路应该在性能上更快一些,领结更灵活可以选择通路更加灵活一些.
  • [待确认]烟囱既然固定好通路,意味着需要在事件加载前就规划好路线.而领节是可以在事件运行过程中在动态规划.

2.2 负载均衡工作调度算法

基础的调度算法: 轮询,随机,哈希,权重
高级的调度算法,会考虑更多其他的因素,如服务器的负载,相应时间,运行状态,活动连接数目,地理位置,处理能力.

2.3 负载均衡服务器的会话保持

如何保存用户会话:

  1. 使用IP映射, 通过IP指定发送到对应的服务器上即可,总要的设置超时时间
Nginx会话保持 IP_hash 每个请求访问IP的hash结果分配,访问固定的后端服务器,以解决session问题
upstream backend {
ip_hash;
server 192.168.0.14:88;
server 192.168.0.15:88;
}
  1. 会话保存在后台服务器,用户后续请求对接.
  2. 会话缓存在负载均衡服务器.
    可以通过文件或者数据库来保存
  3. 基于cookie的会话保持.
    在基于 cookie 模式下负载均衡器负责插入 cookie,后端服务器无需作出任何修改。当客户端进行第一次请求时,客户端的 HTTP request(不带 cookie)进入负载均衡器, CLB 根据负载平衡算法策略选择后端一台服务器,并将请求发送至该服务器;后端服务器的 HTTP response(不带 cookie)被发回给负载均衡器。接下来负载均衡器将向该后端服务器插入 cookie 并将 HTTP response 返回到客户端。
    当客户请求再次发生时,客户 HTTP request(带有上次负载均衡器插入的 cookie)进入 CLB,然后 CLB 读出 cookie 里的会话保持数值,将 HTTP request(带有与上面同样的 cookie)发到指定的服务器,然后后端服务器进行请求回复;由于服务器并不写入cookie,HTTP response 将不带 cookie,该 HTTP response 再次经过进入 CLB 时,CLB 将写入更新后的会话保持 cookie。
    腾讯云 CLB 的七层会话保持能力,就是基于这样的 cookie 插入的方式实现的。

负载均衡(load balancing)介绍_第2张图片

2.4 负载均衡器的特性:

不论是硬件还是软件均衡器都有一些列特性:

  • 不对称负载调节。可以对后台服务器设置权重因子,权重因子用于控制服务器的请求处理量,进而控制服务器的负载。当后台服务器的处理能力不是等同的时候,这是一种控制服务器负载的简单方法。
  • 优先引导。当出现故障的服务器达到某个阈值,或者服务器负载过高时,备用服务器必需可以及时上线提供服务。
  • SSL截断和加速。依赖服务器负载,处理加密数据或者通过SSL进行的授权请求会消耗Web服务器的大量CPU,随着需求增加用户会明显感觉到响应时间变长。为了消除Web服务器上这部分(处理加密)负载,负载均衡器可能会将SSL通讯截断在负载均衡器上。有些硬件负载均衡器上包含有专门用于处理SSL的硬件。当负载均衡器截断SSL连接请求,再将用户请求转发给后台前将HTTPS变为HTTP。只要负载均衡器不超载,这个特性不会影响用户体验。这种方法的负面效应是,由于所有SSL都由负载均衡器一台设备来处理,它会导致负载均衡器成为负载均衡体系的一个瓶颈。如果不使用这个特性,SSL请求将会分发给各个Web服务器处理。是否采用这一特性,需要分析比较两者的资金投入情况,含有处理SSL特殊硬件的负载均衡器通常价格高昂,而Web服务器一般比较廉价。增加少量的Web服务器的花费可能明显比升级负载均衡器要少。另外,一些服务器厂商如Oracle/Sun也开始在它们的CPU中加入加密加速模块,例如T2000。在负载均衡器上截断SSL的另一个优点是允许负载均衡器可以对基于HTTPS请求数据进行负载均衡或内容交换。
  • DDOS攻击防护。负载均衡器可以提供例如SYN cookies特性和延时绑定(在TCP握手完成之前,后台服务器不会与用户通讯)来减缓SYN flood攻击,并且通常将工作从服务器分载到更有效的平台。
  • HTTP压缩。使用gzip压缩HTTP数据,以减少网络上的数据传输量。对于响应时间较长,传输距离较远的用户,这一特性对于缩短响应时间效果明显。这个特性会要求更多一些的负载均衡器CPU,这一功能也可以由Web服务器来完成。
  • TCP offload。不同的厂商叫法可能不一样。其主要思想是一样的,通常每个用户的每个请求都会使用一个不同的TCP连接,这个特性利用HTTP/1.1将来自多个用户的多个请求合并为单个TCP socket再转发给后台服务器。
  • TCP缓冲。负载均衡器可以暂存后台服务器对客户的响应数据,再将它们转发给那些响应时间较长网速较慢的客户,如此后台Web服务器就可以释放相应的线程去处理其它任务如直接整个响应数据直接发送给网速较快的用户。
    后台服务器直接响应用户(Direct Server Return)。这是不对称负载分布的一项功能,在不对称负载分布中请求和回应通过不同的网络路径。
    (服务器)健康检查。负载均衡器可以检查后台服务器应用层的健康状况并从服务器池中移除那些出现故障的服务器。
  • HTTP缓存。负载均衡器可以存储静态内容,当用户请求它们时可以直接响应用户而不必再向后台服务器请求。
    内容过滤。有些负载均衡器可以按要求修改通过它的数据。
  • HTTP安全。有些负载均衡器可以隐藏HTTP出错页面,删除HTTP响应头中的服务器标示信息,加密cookies以防止用户修改。
  • 优先队列。也可称之为流量控制。它可以对不同的内容设定不同的优先级。
  • 内容感知开关(Content-aware switching)。大多数负载均衡器可以基于用户请求的URL发送请求到不同的后台服务器,无论内容是加密(HTTPS)还是没有加密(HTTP)。
  • 用户授权。对来自不同身份验证源的用户进行验证,然后再允许他们访问一个网站。
  • 可编程的流量控制。不只一种负载均衡器允许使用脚本编程来定制负载均衡方法、任意的流量控制以及其它功能。
  • 防火墙功能。由于安全的原因,不允许用户直接访问后台服务器。防火墙是由一系列规则构成,它们决定着哪些请求可以通过一个接口而哪些不被允许。
  • 入侵阻止功能。在防火墙保障网络层/传输层安全的基础上,提供应用层安全防范。

3.有哪些负载均衡的项目

负载均衡最重要的应用是利用多台服务器提供单一服务.这种方案有时也被称为服务器农场。

3.1 提供的服务:

  • Web网站.
  • 大型的Internet Relay Chat网络
  • 高流浪的文件下载网站
  • NNTP(NetworkNews Transer Protocol)服务
  • DNS服务
  • 数据库服务,数据库负载平衡器

3.2 开源的项目

  • Gearman – 将合适的计算任务发给多台计算机
  • Apache Web服务器的mod proxy balancer扩展.
  • nginx
  • varnish 和 Pound反向代理和负载均衡器

3.3 提供负载均衡的硬件


信息来源:

  1. 负载均衡wiki
  2. 腾迅云,会话保持

你可能感兴趣的:(计算机知识)