负载均衡,一般是指将客户端流量分配到不同服务器上的一个服务。他的功能一般有三个:
- 将客户端请求分配到多个服务器
- 保证分配请求时本身高可用,且被分配的服务都是可用的
- 根据需求,弹性增加或者减小服务器的数量
根据负载均衡的特质,负载均衡被划分成了多种:l4、l7、DNS负载均衡、网络负载均衡等。
四层负载均衡,也被叫做l4(layer 4 load balance),四层指的是osi网络模型的第四层传输层(Transport Layer),主要工作是转发,他在接收到客户端的流量之后,通过修改数据包的地址信息将流量转发到应用服务器。
七层负载均衡,也被叫做l7(layer 7 load balance),七层指的是osi网络模型的第七层应用层(Application Layer),主要工作是代理,因为需要解析应用层流量,所以接受到客户端流量之后,还需要接受完整的TCP/ IP 协议栈。之后将与客户端建立一条完整的连接并将应用层的请求流量解析出来,再按照调度算法选择应用服务器,最后与应用服务器建立一条连接将请求发送过去。
四层负载均衡能够拿到的数据只有ip和端口,拿不到其他数据,所以在功能上无法对流量大小进行区分。也就是说 当 client A 和 server B、client C 和 server D 建立了链接之后,即使client A 1 RPS,client C 50 RPS,(RPS,Requests Per Second,和QPS一个意思) ,server B 和 server D 也不会接受另外一个client 的请求。
除此之外,四层负载均衡也无法做到 streaming 和 keep-alive的链接,tls termination。
参考文档:
What Is Load Balancing?
B站负载均衡出问题导致B站崩溃
MGW——美团点评高性能四层负载均衡
Nginx What Is Layer 7 Load Balancing?
L4 vs L7 Load Balancing
Load balancing strategies in Kubernetes: L4 round robin, L7 round robin, ring hash, and more
|