高可用与负载均衡(3)之七层负载均衡的概念
preface
在蓝厂上班不但接触LVS四层均衡负载,也天天捣鼓haproxy对七层负载。七层负载均衡其实也称为内容交换,指LB分析应用层的请求数据特征,匹配相关规则后,运算某个算法后再进行调度。
七层负载均衡时序图
在七层负载均衡中,调度器或者调度软件通过请求方法,请求的uri,请求的Host等作为调度的依据,结合后端服务器的压力,进行转发。
时序图如图所示:
通过上图可得出七层负载的特点是:
- 模型复杂
负载均衡器需要关心业务逻辑并且正确解析TCP数据,根据请求数据的特征,如果HTTP的主机头或者URI等信息,作为调度依据。 - 吞吐量小
因为模型复杂,所以CPU处理复杂,相对于4层负载均衡来说,提供的吞吐量较小。 - 对后端服务器精细控制
因为LB能够解析到应用层的特征,所以能够对客户端的请求更加合理的控制,提高后端的执行效率。比如针对域名,目录结构等。
七层负载应用场景概括起来就以下2种:
- 后端服务器应用的通信协议比较开放,业务逻辑比较容易实现,有成熟的开源或者商业方案。
- 需要提供后端服务器的计算效率。如果后端是缓存服务器,如内容缓存Memcache,http缓存squid等,基于请求的key,url等进行调度。可以提高后端服务器的执行效率,增加命中率。