我们常常在安装网线或者组网时候,购买Hub(集线器),交换机,路由器等等设备,
以及购买云服务首先安装nginx做路由转发,或者在调研网络中间件时候常常看到:改网络中间件可以提供4层负载均衡以及7层负载均衡。 那么这个层到底是什么意思呢?本文就来总结一下。
首先回到我们在本科阶段的计算机网络的课堂上,一张“祖师爷”级别的模型图,OSI七层参考模型:

网卡->交换机-> 路由器


Please Do Not Tell Stupid People Anything| 单词 | 解释 |
|---|---|
| Please | P 物理层 Physical |
| Do | D 数据链路层 Data Link |
| Not | N 网络层 Network |
| Tell | T 传输层 Transport |
| Stupid | S 会话层 Session |
| People | P 表示层 Presentation |
| Anything | A 应用层 Application |
四层负载均衡
四层的负载均衡就是基于IP+端口的负载均衡:在三层负载均衡的基础上,通过发布三层的IP地址(VIP),然后加四层的端口号,来决定哪些流量需要做负载均衡,对需要处理的流量进行NAT处理,转发至后台服务器,并记录下这个TCP或者UDP的流量是由哪台服务器处理的,后续这个连接的所有流量都同样转发到同一台服务器处理。
对应的负载均衡器称为四层交换机(L4 switch),主要分析IP层及TCP/UDP层,实现四层负载均衡。此种负载均衡器不理解应用协议(如HTTP/FTP/MySQL等等),常见例子有:LVS,F5。
七层的负载均衡
七层的负载均衡就是基于虚拟的URL或主机IP的负载均衡:在四层负载均衡的基础上(没有四层是绝对不可能有七层的),再考虑应用层的特征,比如同一个Web服务器的负载均衡,除了根据VIP加80端口辨别是否需要处理的流量,还可根据七层的URL、浏览器类别、语言来决定是否要进行负载均衡。举个例子,如果你的Web服务器分成两组,一组是中文语言的,一组是英文语言的,那么七层负载均衡就可以当用户来访问你的域名时,自动辨别用户语言,然后选择对应的语言服务器组进行负载均衡处理。
[1] 参考资料