负载均衡

什么是负载均衡?

  负载均衡就是一种计算机网络技术,用来在多个计算机(计算机集群)、网络连接、CPU、磁碟驱动器或其他资源中分配负载,以达到最佳化资源使用、最大化吞吐率、最小化响应时间、同时避免过载的目的。一个典型的互联网应用的拓扑结构如下图所示:
      负载均衡
   

负载均衡分类

二层负载均衡(基于MAC地址)

  二层负载均衡会通过一个虚拟MAC地址接收请求,然后通过改写报文的目标MAC地址的方式将请求转发到目标机器实现负载均衡。

三层负载均衡(基于IP)

  三层负载均衡会通过一个虚拟IP地址接收请求,但是集群中不同的机器采用不同的IP地址。当负载均衡服务器接受到请求之后,根据不同的负载均衡算法,改写报文中的目标IP地址,然后转发给后端服务器。

四层负载均衡(基于IP+端口)

  四层负载均衡服务器在接受到客户端请求后,通过修改数据包的地址信息(IP+端口号)将流量转发到应用服务器。
  注意:TCP的连接建立是客户端和后端服务器直接建立的,负载均衡设备只是起到一个类似路由器的转发动作,如下图所示:
        负载均衡

七层负载均衡(基于应用层内容)

  七层负载均衡服务器在接受到客户端请求后,主要通过报文中的真正有意义的应用层内容,再加上负载均衡设备设置的服务器选择方式,决定最终选择的内部服务器。
  注意:如果负载均衡设备要根据真正的应用层内容再选择服务器,只能先代理最终的服务器与客户端建立连接,然后再根据该报文中的特定字段,再加上负载均衡设备设置的服务器选择方式,决定最终选择的内部服务器。七层负载均衡设备在这种情况下,更类似于一个代理服务器。负载均衡和前端的客户端以及后端的服务器会分别建立TCP连接,如下图所示。所以从这个技术原理上来看,七层负载均衡明显的对负载均衡设备的要求更高,处理七层的能力也必然会低于四层模式的部署方式。
        负载均衡

常见软负载均衡器

  • Nginx(七层负载均衡);
  • LVS(四层负载均衡);