![Linux运维最佳实践](https://wfqqreader-1252317822.image.myqcloud.com/cover/919/838919/b_838919.jpg)
最佳实践16:7层负载均衡
7层负载均衡,又称为“内容交换”,是指负载均衡器通过分析应用层请求的数据特征,进行负载均衡调度。
7层负载均衡的数据格式
以“最佳实践15:4层负载均衡”中的HTTP请求为例,进一步分析网络数据(文件:Layer4_Load_Balancing_Example.pcap,Frame 9),如图3-4所示。
![](https://epubservercos.yuewen.com/96262C/5252649103902301/epubprivate/OEBPS/Images/3a4-i.jpg?sign=1739568626-ekfcH1W3MuFAvURRwUXKEmxuJkNClKBT-0-830f6f2048764012714fd113f024bff1)
图3-4 HTTP请求的TCP数据内容
TCP建立以后,客户端开始发送TCP数据(Payload),通过Wireshark的解析,可以看到HTTP请求的一些特征字段,是请求的方法,
是请求的uri,
是请求的Host信息。在7层负载均衡器实现中,它通过分析例如
、
、
等的信息作为调度的依据,结合后端服务器压力等,进行请求转发。
7层负载均衡的时序图
7层负载均衡的一般网络时序图如图3-5所示。
通过和图3-3对比可以知道,7层负载均衡器在收到TCP数据(Payload)后才可以进行调度选择后端服务器,即图3-5所示时序图里面的4.1调用,向后端服务器发送SYN包,要求建立TCP连接。
由此,可以总结出7层负载均衡有如下特点。
·模型复杂度高。负载均衡器需要关心业务逻辑并正确解析TCP数据,根据请求数据的特征,如HTTP请求里面的主机头信息,作为调度的依据。
![](https://epubservercos.yuewen.com/96262C/5252649103902301/epubprivate/OEBPS/Images/3a5-i.jpg?sign=1739568626-lujE1si3AQDI9BNNYz10JZ8TU1aEXiij-0-891575421651cb1154d84ec0649aaf0b)
图3-5 7层负载均衡的一般网络时序图
·吞吐量小。依据上条分析,CPU处理复杂,相对于4层的负载均衡,提供的吞吐量较小。
·对后端选择的精细化控制。因为负载均衡器能够解析到应用层特征,所以能够对客户端的请求更加合理地选择,提高后端的执行效率。比如针对域名、目录结构等。
7层负载均衡的使用场景,可以总结为以下2种。
·后端服务器应用的通信协议比较开放、业务逻辑比较容易实现,有成熟的开源或者商业方案。
·需要提高后端服务器的计算效率。如果后端服务器是缓存服务器,如内存缓存Memcached、HTTP缓存Squid Web Cache等,基于请求的key、URL等进行调度,可以提高后端服务器的执行效率,增加命中率。