最佳实践16:7层负载均衡

7层负载均衡,又称为“内容交换”,是指负载均衡器通过分析应用层请求的数据特征,进行负载均衡调度。

7层负载均衡的数据格式

以“最佳实践15:4层负载均衡”中的HTTP请求为例,进一步分析网络数据(文件:Layer4_Load_Balancing_Example.pcap,Frame 9),如图3-4所示。

图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请求里面的主机头信息,作为调度的依据。

图3-5 7层负载均衡的一般网络时序图

·吞吐量小。依据上条分析,CPU处理复杂,相对于4层的负载均衡,提供的吞吐量较小。

·对后端选择的精细化控制。因为负载均衡器能够解析到应用层特征,所以能够对客户端的请求更加合理地选择,提高后端的执行效率。比如针对域名、目录结构等。

7层负载均衡的使用场景,可以总结为以下2种。

·后端服务器应用的通信协议比较开放、业务逻辑比较容易实现,有成熟的开源或者商业方案。

·需要提高后端服务器的计算效率。如果后端服务器是缓存服务器,如内存缓存Memcached、HTTP缓存Squid Web Cache等,基于请求的key、URL等进行调度,可以提高后端服务器的执行效率,增加命中率。