相关名词

  • VIP
  • RS:真实服务器,即真正提供服务的机器
  • 硬件负载均衡产品:F5等,这个是比较贵的,听说农行用了F5
  • 软件负载均衡:LVS、DPVS(基于LVS)、Haproxy、Nginx,通常都使用软件负载均衡方案

OSI网络层负载均衡

202208131605543

二层(mac)

虚拟mac地址,对外使用虚拟mac地址,接收后再分配给后端实际的mac地址

三层(ip)

虚拟ip

四层(tcp)

在三层负载均衡基础上,使用IP+port方式做虚拟映射,对流量做NAT处理,转发到后台服务器,并记录流量是由哪台服务器处理的,后续这个连接的所有流量会被转发到同一台服务器

注意,Nginx和Haproxy也可以实现四层的负载均衡,后面详细介绍

五元组

通过五元组来决定流量的转发目的地

  • 来源IP、端口
  • 目标IP、端口
  • 协议

VIP的实现

  • 通过keepalive实现
image-20230526190614854
  • 通过BGP协议实现,这种方式可以让流量轮询实现均分

七层(http)

虚拟url或者ip,在四层负载均衡基础上,根据应用层的特征来转发流量,比如URL、浏览器类别、语言等。

以TCP为例,负载均衡设备要根据应用层的内容来进行转发,那么势必需要对客户请求的内容进行解析,所以客户端是先和负载均衡器建立连接,负载均衡器再根据客户报文内容进行流量转发(和RS建立连接),而四层的负载均衡只需要解析段内容,不会和客户端建立连接,所以四层的负载均衡效率会高于七层负载均衡

四层与七层的区别

区别这事儿众说纷纭,这里只是个人是一些理解

综合来说四层负载均衡类似于路由器,规则比较简单,所以效率较高;而七层的负载均衡是一个代理服务器,因为和客户端创建了连接,所以能拿到更多是信息,对应的实现更复杂的功能,同样的性能相对低一些

技术选型肯定都是结合业务场景去选择最合适的架构,没有银弹